【问题标题】:How to authorize webapi endpoint for 3rd party to use如何授权第 3 方使用 webapi 端点
【发布时间】:2018-07-24 23:47:38
【问题描述】:

我必须创建一个供第 3 方使用的端点。当人们登录我们的应用程序时,我们使用身份服务器。我需要做什么才能只允许访问此第 3 方来呼叫端点?我不希望任何人都能够调用端点。 例如,如果我给你我的端点 URL,而你使用邮递员发帖,我只会在你被授权的情况下允许你

【问题讨论】:

  • 您是否启用了 CORS?

标签: c# asp.net-web-api identityserver3


【解决方案1】:

有多种方法可以保护 ASP.NET Web 应用程序/api。

我通常使用 SQL 用户存储或活动目录并发布 JWT 令牌。可以在这里找到一个很好的指南。

https://jonhilton.net/2017/10/11/secure-your-asp.net-core-2.0-api-part-1---issuing-a-jwt/

这是身份服务器的文档——正如你提到的你想使用它——关于这个主题。

http://docs.identityserver.io/en/release/topics/apis.html

【讨论】:

    【解决方案2】:

    我认为您需要将 CORS(跨域请求)启用为 outlined by Microsoft here

    例如,你可以这样装饰你的控制器:

    using System.Net.Http;
    using System.Web.Http;
    using System.Web.Http.Cors;
    
    namespace WebService.Controllers
    {
        [EnableCors(origins: "http://mywebclient.azurewebsites.net", headers: "*", methods: "*")]
        public class TestController : ApiController
        {
            // Controller methods not shown...
        }
    }
    

    【讨论】:

    • 谢谢。我会看看那个。但是如果我给你我的 api enpoint 如果你没有被授权,我怎么能阻止你使用邮递员发送请求?我不认为 CORS 在这里会有所帮助
    • @user1024941 CORS 允许您指定哪些域可以调用您的 API。您并没有在您的问题中真正指定呼叫的来源。这允许明确控制对您允许的域的访问,即使在粒度级别也是如此。
    • @user1024941 我同意 JWT 令牌更适合用户级别的安全性。我的建议是在域级别实施安全性。对于我的困惑,我深表歉意。
    猜你喜欢
    • 2017-03-17
    • 2022-11-10
    • 1970-01-01
    • 2018-05-17
    • 1970-01-01
    • 2019-10-30
    • 2019-11-13
    • 2017-12-25
    • 2020-04-01
    相关资源
    最近更新 更多