繁体   English   中英

在注销时不会删除IdentityServer3令牌

[英]IdentityServer3 Token Not Getting Deleted on Logout

我正在使用IdentityServer3,并实现了自定义授予流,以与现有SSO实现向后兼容。 我正在使用参考令牌进行API身份验证。 我已经实现了ITokenHandleStore和IUserService。

我能够成功登录并访问我的应用程序。 问题是我注销后,参考令牌仍然有效。

注销后,我调用HttpContext.Current.GetOwinContext()。Authentication.SignOut();。 我还调用/ connect / endsession?id_token_hint = mYrEfErEnCeToKeN,并在查询字符串参数上传递用户的参考令牌。

但是,都不会调用IUserService中的SignOutAsync方法或ITokenHandleStore中的RemoveAsync方法。 因此,令牌保留在我的令牌数据库表中,即使在用户注销后,也将在后续请求中将其视为有效令牌。

执行“自定义授予”流程时注销用户的正确方法是什么? 如何将记录从数据库令牌存储中删除?

当我调用endsession端点时,从IdentityServer进行的日志记录显示如下:

Sam.Web.MicroServices.IdentityService.vshost.exe信息:0:20​​16-07-13 04:07:14.835 -04:00 [信息]结束访问令牌验证请求Sam.Web.MicroServices.IdentityService.vshost.exe信息: 0:2016-07-13 04:09:22.289 -04:00 [Information]开始结束会话请求Sam.Web.MicroServices.IdentityService.vshost.exe信息:0:20​​16-07-13 04:09:22.349 -04 :00 [信息]开始结束会话请求验证Sam.Web.MicroServices.IdentityService.vshost.exe信息:0:20​​16-07-13 04:09:22.412 -04:00 [信息]开始身份令牌验证Sam.Web。 MicroServices.IdentityService.vshost.exe错误:0:20​​16-07-13 04:09:22.581 -04:00 [错误]格式错误的JWT令牌System.ArgumentException:IDX10709:'jwtEncodedString'格式不正确:'7dc2417fb752d096af2870c46ca8a181'。 该字符串必须采用紧凑的JSON格式,其格式为:“ ..”。 在System.IdentityModel.Tokens.JwtSecurityToken..ctor(String jwtEncodedString)中位于c:\\ workspace \\ WilsonForDotNet45Release \\ src \\ System.IdentityModel.To kens.Jwt \\ JwtSecurityToken.cs:IdentityServer3.Core.Validation.TokenValidator.GetClientIdFromJwt的第68行(字符串令牌)在c:\\ local \\ identity \\ server3 \\ Core \\ source \\ Core \\ Validation \\ TokenVa lidator.cs:line 347 Sam.Web.MicroServices.IdentityService.vshost.exe错误:0:20​​16-07-13 04 :09:22.648 -04:00 [错误]没有提供clientId,无法在标识中找到ID。 Sam.Web.MicroServices.IdentityService.vshost.exe错误:0:20​​16-07-13 04:09:22.701 -04:00 [错误]“验证ID令牌提示时出错。” “ {
\\“ SubjectId \\”:\\“未知\\”,\\“ Raw \\”:{\\“ id_token_hint \\”:\\“ 7dc2417fb752d096af2870c46ca8a181 \\”}}“ Sam.Web.MicroServices.IdentityService.vshost.exe信息:0:20​​16- 07-13 04:09:22.753 -04:00 [Information]重定向到注销页面Sam.Web.MicroServices.IdentityService.vshost.exe信息:0:20​​16-07-13 04:09:22.872 -04:00 [Information ]注销端点已提交Sam.Web.MicroServices.IdentityService.vshost.exe信息:0:20​​16-07-13 04:09:22.944 -04:00 [信息]清除cookie Sam.Web.MicroServices.IdentityService.vshost.exe信息:0:20​​16-07-13 04:09:23.013 -04:00 [信息]呈现注销页面

当我调用/ revocation端点时,IdentityServer日志显示以下内容:

Sam.Web.MicroServices.IdentityService.vshost.exe信息:0:20​​16-07-13 04:11:14.822 -04:00 [信息]提出了针对来源:“ chrome”的路径“ // connect / r evocation”的CORS请求-extension:// fhbjgbiflinjbdggehcddcbcdddomop“ Sam.Web.MicroServices.IdentityService.vshost.exe信息:0:20​​16-07-13 04:11:14.864 -04:00 [信息]已配置AllowedOrigins,其来源为“ c hrome-extension:/ / fhbjgbiflinjbdggehcddcbncdddomop“不允许Sam.Web.MicroServices.IdentityService.vshost.exe信息:0:20​​16-07-13 04:11:14.906 -04:00 [信息]正在退出; 不允许原始来源“ chrome-extension:// fhb jgbiflinjbdggehcddcbncdddomop” Sam.Web.MicroServices.IdentityService.vshost.exe信息:0:20​​16-07-13 04:11:14.941 -04:00 [Information] CorsPolicyService不允许来源Sam.Web.MicroServices.IdentityService.vshost.exe信息:0:20​​16-07-13 04:11:15.005 -04:00 [信息]启动令牌吊销请求2016-07-13 04:11:15.063 -04: 00 [调试]开始客户端验证2016-07-13 04:11:15.064 -04:00 [调试]开始解析X.509证书2016-07-13 04:11:15.065 -04:00 [调试] client_id为在帖子正文中找不到2016-07-13 04:11:15.066 -04:00 [Debug]在帖子正文中开始对秘密进行解析2016-07-13 04:11:15.067 -04:00 [Debug]在帖子中没有秘密正文发现2016-07-13 04:11:15.068 -04:00 [调试]开始解析基本身份验证机密Sam.Web.MicroServices.IdentityService.vshost.exe信息:0:20​​16-07-13 04:11:15.069- 04:00 [信息]解析器没有发现秘密的Sam.Web.MicroServices.IdentityService.vshost.exe信息 on:0:20​​16-07-13 04:11:15.124 -04:00 [Information]找不到客户端秘密Sam.Web.MicroServices.IdentityService.vshost.exe信息:0:20​​16-07-13 04:11:15.175 -04:00 [信息]返回错误:invalid_client

您在注销时收到错误的原因是,您正在传递id_token_hint参数中的访问令牌。 此参数需要登录时已颁发给您的身份令牌(假设您使用的是OpenID Connect)。

如果仅使用OAuth,则endsession端点不适合您。 而是要撤消访问令牌,需要使用撤消端点 然后,这将从您的数据库中删除令牌。

您从吊销终结点收到的错误似乎与另一个问题有关(看起来您没有提供客户端ID和密码)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM