【问题标题】:What sort of grant type I should use for my ASP.NET Core app?我应该为我的 ASP.NET Core 应用程序使用哪种类型的授权?
【发布时间】:2021-03-17 19:26:37
【问题描述】:

我有一个 ASP.NET Core 应用程序和一个 REST API 作为我想要保护的资源。

我使用 IdentityServer4 获取访问令牌并将该令牌用于来自 API 的请求。

但是我的问题是,我应该使用哪种类型的 grant types 场景?

  1. 客户端凭据?机器对机器?
  2. 密码授予?

我是这个话题的新手,我很困惑:(

【问题讨论】:

    标签: asp.net oauth-2.0 oauth identityserver4 rest


    【解决方案1】:

    Client Credentials

    客户端使用Client Credentials 授权类型来获取用户上下文之外的访问令牌。

    客户端最常使用它来访问不被视为私人用户数据的内部数据。

    Password grant

    Password grant 是一种传统的授权类型,它是一种将用户凭据交换为访问令牌的方式。由于客户端应用程序必须收集用户的密码并将其发送到授权服务器,因此不建议再使用此授权。

    此流程没有为多因素身份验证或委托帐户等机制提供任何机制,因此在实践中受到很大限制。

    最新的 OAuth 2.0 Security Best Current Practice 完全不允许密码授予。

    Authorization Code

    假设你访问用户数据的数据你应该考虑使用授权码。

    Authorization Code 授权类型由机密和公共客户端用于交换访问令牌的授权代码。

    用户通过重定向URL返回客户端后,应用程序会从该URL获取授权码,并用它来请求访问令牌。

    建议所有客户端也将 PKCE 扩展与此流程一起使用,以提供更好的安全性。

    规格

    我建议查看Grant types 以上大部分信息直接来自SPECS。

    【讨论】:

      【解决方案2】:

      今天您应该考虑的只有两个流程,授权代码流程和客户端凭据流程。

      如果涉及到用户(有浏览器的用户),那么你应该使用授权码流。

      如果是机器对机器的通信(不涉及用户),那么您应该使用客户端凭据流。

      所有其他流程均已弃用且不推荐使用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-07-22
        • 1970-01-01
        • 2019-04-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-21
        相关资源
        最近更新 更多