【问题标题】:How does API protected resource validate access token on Identity Server 4?API 保护资源如何验证 Identity Server 4 上的访问令牌?
【发布时间】:2020-02-06 08:09:59
【问题描述】:
我使用 IdentityServer3.AccessTokenValidation 中间件来验证我的 API 的访问令牌,因为它是基于 ASP.NET 框架的。它有效,但我确实有问题和疑虑。首先,API 是否向 Identity Server 发送请求以验证每个请求的访问令牌?这会对 API 和身份服务器的性能产生重大影响吗?这是最佳做法吗?是否有任何缓存策略可用于减少访问令牌验证的往返流量?
我只是无法想象对于每个 api 请求,它都必须向身份服务器发送请求,然后身份服务器需要向其数据库发送请求以验证令牌。
【问题讨论】:
标签:
asp.net-core-webapi
identityserver4
【解决方案1】:
验证访问令牌时,专门用于验证签名。 API/资源服务器将下拉(并可能缓存)位于https://baseaddress/.well-known/openid-configuration 的身份提供者发现文档。本文档包含允许资源服务器验证令牌、从jwks_uri 读取可用密钥的材料。
JwtBearerAuthentication 中间件或 IdentityServer.AccessTokenValidation 中间件将帮助完成该过程。在 IdentityServer4.AccessTokenValidation 中,它有一个名为 DiscoveryDocumentRefreshInterval 的选项指定应该多久刷新一次发现文档的缓存副本。如果未设置,则默认值来自微软的底层配置管理器(现在是 24 小时)。