#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
.