signoutRedirect oidc-client-js против Auth0 не возвращает конечную точку конечного сеанса

Я успешно использовал библиотеку oidc-client-js Брока Аллена для аутентификации моего SPA-приложения с Auth0, действующим в качестве моего Identity Provider. Тем не менее, когда я пытаюсь использовать библиотеку для выхода пользователя mgr.signoutRedirect({state: "my test"})Я получаю сообщение об ошибке: no end session 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);

Есть идеи о том, что мне не хватает?

2 ответа

Решение

Перенаправление выхода, явно просматривая свойство Json "end_session_endpoint" в вашей конфигурации idp, я не вижу этой конечной точки в вашей конфигурации 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 но тогда лазурная рекламная сессия не закончится.

Вы также можете установить metadataUrl вместо метаданных. https://login.microsoftonline.com/YOUR_TENANT_NAME.onmicrosoft.com/.well-known/openid-configuration',

Другие вопросы по тегам