我正在使用IdentityServer4和自定义用户存储(基于SQL Server数据库)。 我想知道如何存储访问令牌以检查每个请求是否具有正确的访问令牌。
我尝试使用默认的操作商店,但它只保存了刷新令牌和授权码。
提前致谢。
答案 0 :(得分:2)
如果我理解正确,您希望在服务器端保存访问令牌,以便您可以验证用户请求。您执行 NOT 需要在服务器端存储访问令牌,因为IdentityServer已为您完成此操作。如果您使用身份服务器正确设置了api(资源服务器),那么您只需在api控制器上添加[Authorize]
(看起来就像是在使用.net core web api)。您可以在Github上的IdentityServer文档和示例项目中找到许多示例。
与此同时,您可能需要在客户端存储访问令牌,因为在令牌过期之前无需再次验证用户;这取决于您使用的授权类型。使用ResourceOwnerPassword
授权时尤其如此;如果您的客户端是SPA(例如Angular),则通常访问令牌存储在浏览器的本地存储中;对于每个客户端请求,您检查是否已有令牌,如果是,也检查它是否已过期。
并且可以支持不同授权的刷新令牌,以便在其访问令牌到期时自动重新验证用户。