我已成功使用Brock Allen的oidc-client-js库来验证我的SPA应用程序,Auth0充当我的身份提供商。但是,当我尝试使用该库向用户签出mgr.signoutRedirect({state: "my test"})
时,我收到错误:no end session endpoint
。
查看metadata endpoint表明存在撤销端点。
我已经像这样配置了oidc-client-js库:
var settings = {
authority: 'https://susqsofttest.auth0.com/.well-known/openid-configuration',
client_id: 'my client id',
redirect_uri: 'http://localhost:8080/signin-oidc',
post_logout_redirect_uri: 'http://localhost:8080/logout',
response_type: 'id_token token',
scope: 'openid profile email',
revokeAccessTokenOnSignout: true,
automaticSilentRenew: true,
filterProtocolClaims: true,
loadUserInfo: true
};
var mgr = new UserManager(settings);
我缺少什么想法?
答案 0 :(得分:5)
您可以通过向用户管理器设置添加元数据部分来为oidc客户端提供元数据。
var settings = {
authority: 'https://susqsofttest.auth0.com/.well-known/openid-configuration',
client_id: 'my client id',
redirect_uri: 'http://localhost:8080/signin-oidc',
post_logout_redirect_uri: 'http://localhost:8080/logout',
response_type: 'id_token token',
scope: 'openid profile email',
revokeAccessTokenOnSignout: true,
automaticSilentRenew: true,
filterProtocolClaims: true,
loadUserInfo: true,
metadata: {
issuer: `https://sts.windows.net/${tenant}/`,
authorization_endpoint: `https://login.microsoftonline.com/${tenant}/oauth2/authorize`,
token_endpoint: `https://login.microsoftonline.com/${tenant}/oauth2/token`,
jwks_uri: 'https://login.microsoftonline.com/common/discovery/keys',
end_session_endpoint: `https://login.microsoftonline.com/${tenant}/oauth2/logout`
}
};
此示例是使用AzureAD时的示例。 end_session_endpoint也可以是您的SPA路线地址,例如${window.location.origin}/logout
,但随后广告会话也不会结束。
您还可以设置metadataUrl而不是元数据。 ' https://login.microsoftonline.com/YOUR_TENANT_NAME.onmicrosoft.com/.well-known/openid-configuration',
答案 1 :(得分:2)
注销重定向显式查看idp configuration中的Json属性“end_session_endpoint”,我没有在你的idp配置中看到那个端点,我猜,这不是你可以用oidc-client覆盖的东西.js包。
检查它们如何从元数据中检索端点URL。 https://github.com/IdentityModel/oidc-client-js/blob/dev/src/OidcClient.js#L124