Фон:
У меня угловое 7 приложение.Приложение аутентифицируется с помощью Azure Active Directory B2C и Msal для угловых
https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-angular
Я создал 2 потока пользователя в AAD B2C:
- Поток входа V2
- Поток регистрации V2
у обоих настроен пользовательский интерфейс,
оба содержат кнопку перенаправления на другой поток AAD B2C.
(из реестра -> войти в систему | из входа в систему -> зарегистрироваться)
У меня настроен модуль MSAL в угловом режиме с разрешением входа в систему по умолчанию, например
MsalModule.forRoot({
...,
authority: <"https://mytenant.b2clogin.com/tfp/mytenant.onmicrosoft.com/B2C_1_Signin">,
...
})
(уведомление B2C_1_Signin имя потока)
Это работает хорошо, пользователь может войти в систему и зарегистрироваться (перемещаться между потоками из потока и аутентифицироваться).
Проблема:
Проблема начинается, когда я пытаюсь вручную изменить полномочия модуля MSAL (который был определен в инициализации MSAL как поток B2C_1_Signin при запуске приложения).
Пример: пользователь попадает на страницу приветствия и может нажать Вход/ Регистр.Если пользователь нажимает кнопку входа в систему, все в порядке, потому что ссылка доступа была определена при запуске как поток входа в систему ( B2C_1_Signin ).
Если пользователь хочет зарегистрироваться, мне нужно изменить полномочияссылка на выбранный поток AAD ( B2C_1_Signup ), а затем я вызываю MSAL loginRedirect (), пользователь перенаправляет на правильный поток AAD, вводит свои данные и перенаправляет обратно в приложение.Затем приложение запустит новый поток входа в систему и перенаправит в поток входа в систему , как будто пользователь не аутентифицирован .
Это происходит только тогда, когда я вручную изменяю ссылку доступа (у меня нет другихвыбор для того, чтобы перейти на правильный поток).В противном случае все работает как положено.
Как мне изменить полномочия, чтобы приложение не провалило аутентификацию пользователя?
- Я пытался использовать поток AAD Registration v1 по умолчанию сбез настройки.
- Я пытался определить процесс, чтобы изолировать проблему (настройте поток регистрации по умолчанию, измените права доступа вручную на поток входа, та же ошибка (как и ожидалось).
- Iискал много разных сайтов и форумов, но ни на одном нет той же проблемы или исправления.
https://github.com/AzureAD/microsoft-authentication-library-for-js/issues/498
https://medium.com/@sambowenhughes/configuring-your-angular-6-application-to-use-microsoft-b2c-authentication-99a9ff1403b3
и многие другие ...
MSAL для угловой установки: "authentication.module.ts"
MsalModule.forRoot({
clientID: "<my-client-id>",
authority: "https://tenant.b2clogin.com/tfp/tenant.onmicrosoft.com/B2C_1_Signin",
redirectUri: "http://localhost:4200/dashboard",
/* default is true */
validateAuthority: false,
/* Defaults is 'sessionStorage' */
cacheLocation : "localStorage",
/* Defaults is 'redirectUri */
postLogoutRedirectUri: "http://localhost:4200/",
/* Ability to turn off default navigation to start page after login. Default is true. */
navigateToLoginRequestUrl : false,
/* Show login popup or redirect. Default:Redirect */
popUp: false,
})
Обёртывание AuthService Служба аутентификации MSAL: "auth.service.ts"
constructor(private msalService: MsalService) {}
public login(scopes: string[] = null, queryParams: string = null): void {
this.msalService.authority = this.tenantConfig.baseURL + "/" + this.tenantConfig.tenant + "/" + this.tenantConfig.signInPolicy;
this.msalService.loginRedirect(scopes, queryParams);
}
public signup(scopes: string[] = null, queryParams: string = null): void {
this.msalService.authority = this.tenantConfig.baseURL + "/" + this.tenantConfig.tenant + "/" + this.tenantConfig.signUpPolicy;
this.msalService.loginRedirect(scopes, queryParams);
}
Iожидать, что модуль Msal будет работать как обычно, даже если я изменю исходные права доступа.