.Net Core WebApi OAuth2 授权类型

.Net Core WebApi OAuth2 Grant Types

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

本来想用Client_Credentials。这里的问题是它适用于为迁移目的与我的 API 集成的应用程序,但在想要提供细粒度 role/permission 级别访问时不保留用户的身份。

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

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

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

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

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

client_credentials系统登录时使用

Authorization Code (with PKCE) 用户。

您可以向令牌添加 scopes/claims/groups 或其他属性以授予对资源的访问权限。

如果设置正确,这两种机制将发挥相同的作用。


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

正如Auth0所说:

Though we do not recommend it, highly-trusted applications can use the Resource Owner Password Flow, which requests that users provide credentials (username and password), typically using an interactive form.