aurelia-authentication OAuth2响应状态值不同

时间:2017-10-23 21:49:37

标签: authentication oauth-2.0 aurelia identityserver4 oidc

我尝试使用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;州"?

1 个答案:

答案 0 :(得分:1)

因此,在花了更多时间之后,我能够追踪问题并找到解决方案。

解决方案是将aurelia-authentication authConfig postLogoutRedirectUri值更改为仅根页面(http://localhost:8080)。另外,我需要在IdentityServer4客户端定义中的PostLogoutRedirectUris下定义该URI。

然后

logoutResponse正确地通过名为state的属性来保存正确的值并允许成功重定向。