我尝试使用OIDC提供程序(IdentityServer4)实现aurelia身份验证,并且似乎遇到了将用户注销的问题。
缺点是我无法使用OIDC配置部分(https://aurelia-authentication.spoonx.org/oidc.html)中提到的authService.logout
功能成功注销用户。
在进一步研究中,我已经在注销功能中将其跟踪到承诺拒绝,该功能提供了以下消息:" OAuth2响应状态值不同"
if (logoutResponse.state !== stateValue) {
return Promise.reject('OAuth2 response state value differs');
}
logoutReponse似乎是罪魁祸首,因为它作为一个名为{/login?state: "qAIxYwKqLHYJtyar2PfdvaROWT1O56P7"}
的状态属性的对象而来。
我实际上可以将if语句更改为:
if (logoutResponse['/login?state'] !== stateValue) {
return Promise.reject('OAuth2 response state value differs');
}
似乎工作正常,但要求我们直接修改aurelia-authentication源。
任何人都会想到为什么"陈述"财产是作为一种相对路径而不仅仅是#34;州"?
答案 0 :(得分:1)
因此,在花了更多时间之后,我能够追踪问题并找到解决方案。
解决方案是将aurelia-authentication authConfig postLogoutRedirectUri
值更改为仅根页面(http://localhost:8080)。另外,我需要在IdentityServer4客户端定义中的PostLogoutRedirectUris
下定义该URI。
logoutResponse正确地通过名为state
的属性来保存正确的值并允许成功重定向。