【问题标题】:.Net Core WebApi OAuth2 Grant Types.Net Core WebApi OAuth2 授权类型
【发布时间】:2020-10-06 08:44:05
【问题描述】:

我一直在尝试阅读 OAUTH2,因为我已经开发了一个我希望保护的 API。 我已经尝试使用JWT 令牌,但想对 OAuth2 实现进行原型设计。我遇到的问题(除了身份验证与授权)是grant_types。 我的 API 将以多种不同的方式使用

  • 内部应用程序(用于集成的控制台应用程序和基于 Web/桌面的应用程序,具体取决于用例)。
  • 外部应用程序(Web 和桌面/本机应用程序)。

最初我想使用 Client_Credentials。这里的问题是它适用于与我的 API 集成以进行迁移的应用程序,但在想要提供细粒度的角色/权限级别访问时不保存用户的身份。

然后我考虑使用授权代码,这从用户的角度来看会很棒 - 并启用单点登录 - 但会因为无法处理身份验证重定向而终止集成(应用程序可能是在服务器上运行的服务)。

我的最后一个选项似乎是资源所有者密码凭据,它在这两种情况下都可以很好地工作,但在我读过的许多帖子中似乎不受欢迎,并且被认为是一个严重的安全漏洞。

我考虑过拆分 api,但我更喜欢单个网关。 另一个考虑因素可能是更改每个客户端的授权类型,以便对集成和用户进行不同的处理,但我不确定。

我们将不胜感激这个美妙的社区可以提供的任何帮助或建议。谢谢。

【问题讨论】:

    标签: c# .net-core oauth-2.0 webapi


    【解决方案1】:

    最好将您的系统设置为同时接受client_credentialAuthorization Code (with PKCE) 流。

    client_credentials会在系统登录时使用。

    Authorization Code (with PKCE) 供用户使用。

    您可以向令牌添加范围/声明/组或其他属性以授予对资源的访问权限。

    如果您正确设置,这两种机制的工作方式相同。


    Resource Owner Password Credentials 是一个过时的流程,建议不要使用。

    正如Auth0 所说:

    虽然我们不建议这样做,但高度信任的应用程序可以使用资源所有者密码流程,该流程要求用户提供凭据(用户名和密码),通常使用交互式表单。

    【讨论】:

    • 感谢 Stefan - 很有意义。
    猜你喜欢
    • 2021-04-24
    • 1970-01-01
    • 2021-09-28
    • 2018-11-04
    • 2018-05-26
    • 1970-01-01
    • 2019-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多