如何在我的 WebAPI 中使用 OAuth 2 访问令牌?

问题描述 投票:0回答:1

我正在使用 OIDC 实施 OAuth 2。

这个答案对于 OIDC JWT 有帮助 OpenID Connect JWT 令牌验证和后端 api 的使用策略 - jwks 还是 session?

流程完成后,如何将 OAuth 2 访问令牌与我的 WebAPI 结合使用?我不明白需要在 WebAPI 控制器中添加什么才能使用访问令牌授予或拒绝访问权限。

如果我已经使用角色进行授权,我是否应该使用访问令牌?

谢谢您的帮助。

oauth-2.0 access-token
1个回答
0
投票

OAuth 2.0 的目的是允许客户端在资源所有者允许的情况下访问受保护的资源。

换句话说,或者在最常见的情况下,用户来到您的应用程序并希望查看一些私人信息或执行一些敏感操作。因此,您希望您的应用程序能够确保该用户确实有权访问查看或执行这些操作。 OAuth 对此有所帮助。

您的应用程序在 OAuth 流程中从授权服务器获取的访问令牌证明资源所有者(即真实用户)已授权客户端访问,即真实用户已同意允许您的应用程序访问信息或操作。然后,用户可以查看他们的敏感信息或执行这些敏感操作。

但是,该信息或要执行的操作可能来自或发生在其他地方,即通过 API 访问的地方。因此,您发出 API 请求来获取该信息或执行某些操作并include 访问令牌。然后,接收请求的服务器可以检查该访问令牌,以确保请求者实际上已获得授权。

进行该检查将取决于访问令牌的类型,但通常是 JWT。在这种情况下,应验证签名、检查过期情况并遵守范围。

签名用于验证,以确保 JWT 或令牌中的声明未被篡改。一旦经过验证,您就知道过期时间和范围实际上是从 Authz 服务器发送的值。通常,签名是使用 HS256 或 RS256 计算的。下面的链接介绍了验证步骤。

或者,希望,因为这一切都非常复杂、困难,而且很容易在某个地方犯小错误,并有危及安全的风险,所以授权服务器有一个内省端点。您的资源服务器(无论接收这些 API 请求的是什么)都会将访问令牌发送到 Authz 服务器的内省端点来为您进行验证,并且您应该得到一个响应,以确定访问令牌是否有效。如果您不需要使用访问令牌中的任何内容,那么您可以将访问令牌发送到任何需要该令牌放弃信息或让您执行某些操作的服务器。

OAuth 2.0 访问受保护资源: https://www.rfc-editor.org/rfc/rfc6749#section-7

验证 JWT: https://datatracker.ietf.org/doc/html/rfc7519#section-7.2

验证使用 HS256 签名的 JWT (JWS): https://www.rfc-editor.org/rfc/rfc7515.html#appendix-A.1.2

验证使用 RS256 签名的 JWT (JWS): https://www.rfc-editor.org/rfc/rfc7515.html#appendix-A.2.2

© www.soinside.com 2019 - 2024. All rights reserved.