身份服务器如何在 API 或我们使用 Authorize 属性时验证令牌?
How do identity server validate the token at API or when we use Authorize attribute?
我正在使用身份服务器 4 作为身份提供者。
获取到登录成功的token后,我们将这个token传给资源服务器。
我的问题是资源服务器端的身份服务器提供者如何验证提交的令牌?
当我使用 fiddler 观察流量时,我没有看到任何将令牌提交给提供商进行检查的请求。
这意味着资源服务器端的 Identity Server 提供程序本身正在验证令牌?
那为什么我们需要在不检查权限的情况下提供权限?
资源端的身份服务器提供者如何确保它是由有效的令牌提供者颁发的?
资源服务器不会通过网络将令牌发送给身份提供者以验证令牌。这会给您的资源服务器带来相当大的开销。
相反,资源服务器会下载(并可能缓存)您位于 {identityserverUrl}./well-known/openid-configuration
的身份提供者发现文档。本文档包含允许资源服务器在其自己的上下文中验证令牌的材料。这当然是假设令牌是 access_token (issuer
,jwks_uri
)
如果您的资源服务器正在使用 JwtBearerAuthentication 中间件或 IdentityServer4.AccessTokenValidation 中间件,这些东西会为您完成。
JWT tokens
是独立的,不需要往返验证它们在每次使用时仍然有效......只要它们没有过期,它们就有效,前提是它们没有被篡改,这只涉及签名检查。
您可以将您的客户端设置为请求 reference tokens
(并设置您的 API 以接受它们),并且这些令牌 将 涉及每次使用时往返。然后您可以撤销令牌,这是 JWT 无法做到的。
我正在使用身份服务器 4 作为身份提供者。
获取到登录成功的token后,我们将这个token传给资源服务器。
我的问题是资源服务器端的身份服务器提供者如何验证提交的令牌?
当我使用 fiddler 观察流量时,我没有看到任何将令牌提交给提供商进行检查的请求。
这意味着资源服务器端的 Identity Server 提供程序本身正在验证令牌?
那为什么我们需要在不检查权限的情况下提供权限?
资源端的身份服务器提供者如何确保它是由有效的令牌提供者颁发的?
资源服务器不会通过网络将令牌发送给身份提供者以验证令牌。这会给您的资源服务器带来相当大的开销。
相反,资源服务器会下载(并可能缓存)您位于 {identityserverUrl}./well-known/openid-configuration
的身份提供者发现文档。本文档包含允许资源服务器在其自己的上下文中验证令牌的材料。这当然是假设令牌是 access_token (issuer
,jwks_uri
)
如果您的资源服务器正在使用 JwtBearerAuthentication 中间件或 IdentityServer4.AccessTokenValidation 中间件,这些东西会为您完成。
JWT tokens
是独立的,不需要往返验证它们在每次使用时仍然有效......只要它们没有过期,它们就有效,前提是它们没有被篡改,这只涉及签名检查。
您可以将您的客户端设置为请求 reference tokens
(并设置您的 API 以接受它们),并且这些令牌 将 涉及每次使用时往返。然后您可以撤销令牌,这是 JWT 无法做到的。