.Net Core WebApi OAuth2授予类型



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

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

最初我想到使用Client_Credentials。这里的问题是,它适用于与我的API集成用于迁移目的的应用程序,但当希望提供细粒度的角色/权限级别访问时,它不具有用户身份。

然后我想到了使用授权码,从用户的角度来看,这将是一个很好的选择,并启用单次登录,但会扼杀集成,因为它们无法处理身份验证重定向(应用程序可能是在服务器上运行的服务(。

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

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

如果这个优秀的社区能提供任何帮助或建议,我们将不胜感激。谢谢

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

系统登录时将使用client_credentials

Authorization Code (with PKCE)

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

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


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

正如Auth0所说:

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

相关内容

最新更新