.Net Core WebApi OAuth2 授权类型
.Net Core WebApi OAuth2 Grant Types
我一直在尝试阅读 OAUTH2,因为我已经开发了一个 API 我希望得到保护。
我已经尝试使用 JWT
令牌,但想制作 OAuth2 实现的原型。我遇到的问题(除了身份验证与授权)是 grant_types。
我的 API 将以多种不同的方式使用
- 内部应用程序(用于集成的控制台应用程序和 Web/Desktop 基于应用程序,具体取决于用例)。
- 外部应用程序(Web 和 Desktop/Native 应用程序)。
本来想用Client_Credentials。这里的问题是它适用于为迁移目的与我的 API 集成的应用程序,但在想要提供细粒度 role/permission 级别访问时不保留用户的身份。
然后我想到使用授权码,从用户的角度来看这会很棒 - 并启用单点登录 - 但会终止集成,因为它们无法处理身份验证重定向(应用程序可能是服务 运行 在服务器上)。
我的最后一个选择似乎是资源所有者密码凭据,它在两种情况下都能很好地工作,但在我读过的许多帖子中似乎不受欢迎,被认为是一个严重的安全漏洞。
我考虑过将 api 分开,但我更喜欢一个网关。
另一个考虑可能是更改每个客户端的授权类型,以便对集成和用户进行不同的处理,但我不确定。
我们将不胜感激这个美妙的社区可以提供的任何帮助或建议。谢谢
最好将您的系统设置为同时接受 client_credential
和 Authorization 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.
我一直在尝试阅读 OAUTH2,因为我已经开发了一个 API 我希望得到保护。
我已经尝试使用 JWT
令牌,但想制作 OAuth2 实现的原型。我遇到的问题(除了身份验证与授权)是 grant_types。
我的 API 将以多种不同的方式使用
- 内部应用程序(用于集成的控制台应用程序和 Web/Desktop 基于应用程序,具体取决于用例)。
- 外部应用程序(Web 和 Desktop/Native 应用程序)。
本来想用Client_Credentials。这里的问题是它适用于为迁移目的与我的 API 集成的应用程序,但在想要提供细粒度 role/permission 级别访问时不保留用户的身份。
然后我想到使用授权码,从用户的角度来看这会很棒 - 并启用单点登录 - 但会终止集成,因为它们无法处理身份验证重定向(应用程序可能是服务 运行 在服务器上)。
我的最后一个选择似乎是资源所有者密码凭据,它在两种情况下都能很好地工作,但在我读过的许多帖子中似乎不受欢迎,被认为是一个严重的安全漏洞。
我考虑过将 api 分开,但我更喜欢一个网关。 另一个考虑可能是更改每个客户端的授权类型,以便对集成和用户进行不同的处理,但我不确定。
我们将不胜感激这个美妙的社区可以提供的任何帮助或建议。谢谢
最好将您的系统设置为同时接受 client_credential
和 Authorization 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.