Как перенаправить браузер на пользовательскую страницу «Пользователь не в роли», когда MSAL не удается получить токен в Angular 6

#azure #angular6 #msal

#azure #angular6 #msal

Вопрос:

Я пытаюсь реализовать неявный поток, используя Angular 6 / MSAL. Клиент пытается получить токен ID из Azure AD. Наш клиент AD настроен на предоставление токенов только для определенных пользователей и групп. Итак, когда неавторизованный пользователь (все еще пользователь внутри организации) пытается войти в систему, Azure Ad напрямую перенаправляет их на страницу входа, что не очень интуитивно. Я хотел бы перенаправить их на пользовательскую страницу, указав, что пользователь не входит ни в одну из ролей, требуемых приложением.

Но у MSAL нет опции для чего-то вроде «failedRedirectUri». Может кто-нибудь, пожалуйста, скажите мне, возможно ли это вообще с MSAL, если да, то как мне его настроить?

Я попытался установить «redirectUri» из localStorage и попытаться изменить его до того, как произойдет перенаправление. но это не помогает.

 MsalModule.forRoot({
      clientID: '*****-************************',
      authority: "https://login.microsoftonline.com/*************************/",
      validateAuthority: true,
      redirectUri: window.location.origin,
      cacheLocation: 'localStorage',
      postLogoutRedirectUri: window.location.origin   "/loggedout",
      navigateToLoginRequestUrl: false,
      popUp: false,
      unprotectedResources: ["https://www.microsoft.com/en-us/"],
      protectedResourceMap: protectedResourceMap,
      logger: loggerCallback,
      correlationId: "1000",
      level: LogLevel.Info,
      piiLoggingEnabled: true
  })
  

При сбое входа в систему для неявного потока пользователь не должен перенаправляться на страницу «redirectUrl». Вместо этого пользователь должен перейти на страницу ошибки, где отображается описание ошибки.

Комментарии:

1. Пожалуйста, взгляните на комментарий Zamzowd здесь: github.com/AzureAD/microsoft-authentication-library-for-js /… . Одна из стратегий заключается в создании отдельного redirecturi.html страница. У него просто есть библиотека msal и базовая логика, которые перенаправляют обратно на страницу вашего приложения. Этот подход сработал для меня. Вы можете проверить params.error и перенаправить обратно на соответствующую страницу в вашем приложении. Не уверен, поможет ли msal:notAuthorized или msal:errorResponse или msal:loginFailure .