oidc-client-js 的 signoutRedirect 针对 Auth0 returns 没有结束会话端点
signoutRedirect of oidc-client-js against Auth0 returns no end session endpoint
我已经成功地使用了 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);
关于我遗漏的任何想法?
注销重定向明确查看您的 idp configuration 中的 Json 属性 "end_session_endpoint",我在您的 idp 配置中没有看到该端点,我猜,这不是你可以用 oidc-client.js 包覆盖的东西。
检查一下他们如何从元数据中检索端点 url。
https://github.com/IdentityModel/oidc-client-js/blob/dev/src/OidcClient.js#L124
您可以通过将元数据部分添加到用户管理器设置来为 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
但 azure 广告会话不会结束。
您也可以设置 metadataUrl 而不是元数据。 'https://login.microsoftonline.com/YOUR_TENANT_NAME.onmicrosoft.com/.well-known/openid-configuration',
我已经成功地使用了 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);
关于我遗漏的任何想法?
注销重定向明确查看您的 idp configuration 中的 Json 属性 "end_session_endpoint",我在您的 idp 配置中没有看到该端点,我猜,这不是你可以用 oidc-client.js 包覆盖的东西。
检查一下他们如何从元数据中检索端点 url。 https://github.com/IdentityModel/oidc-client-js/blob/dev/src/OidcClient.js#L124
您可以通过将元数据部分添加到用户管理器设置来为 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
但 azure 广告会话不会结束。
您也可以设置 metadataUrl 而不是元数据。 'https://login.microsoftonline.com/YOUR_TENANT_NAME.onmicrosoft.com/.well-known/openid-configuration',