AngularacquireTokenPopup — msal перенаправляет на локальный хост

Мне нужно получить токен O365 и отправить его обратно в API (.NET) для хранения в БД. после успешного входа в систему или запроса согласия - оно перенаправляет всплывающее окно на локальный хост (это то, что я настроил в Azure как redirectURL). тогда всплывающее окно останется там. Если я закрою это всплывающее окно, я получу ошибку: user_cancelled: Пользователь отменил поток.

Вот что я пробовал: Вариант 1: App.module

      MsalModule.forRoot(new PublicClientApplication({
      auth:{
        clientId:"my-client-id",
        authority:"https://login.microsoftonline.com/$my-tenant-id",
        redirectUri:'http://localhost',
        navigateToLoginRequestUrl:false //also tried set to true
      },
      cache: {
      cacheLocation: BrowserCacheLocation.LocalStorage //nothing gets in as request incomplete
      }
    }), 
    {
      interactionType: InteractionType.Popup, // MSAL Guard Configuration
    },
   null),

внутренний компонент:

        constructor(
    @Inject(MAT_DIALOG_DATA) public data: DialogOauthEditData,
    private eventManager: EventManagerService,
    private adminApi: AdminApiService,
    private authService: MsalService
  ) { }
        async signIn() {
const request: PopupRequest = {
        scopes : ["email",
                 "offline_access",
                 "https://outlook.office.com/SMTP.Send"],
                 prompt:'login', // also tried 'consent'      
      } 
      try {
        
        return await this.authService.acquireTokenPopup(request).subscribe(response => {console.log(response); this.authResult = response});
      } catch (error) {
        console.log(error);
      }

Я получаю сообщение об ошибке от Microsoft: «AADSTS700016: Приложение с идентификатором «НЕИЗВЕСТНО» не найдено в каталоге».

Вариант 2: вместо вызова msalService

           let fakeService = new PublicClientApplication({
       auth:{
        clientId:"my-client-id",
        authority:"https://login.microsoftonline.com/$my-tenant-id",
        redirectUri:'http://localhost',
        navigateToLoginRequestUrl:false //also tried set to true
        
      }
     });

и затем то же самое:

              return await fakeService.acquireTokenPopup(request).then(response => {console.log(response); this.authResult = response});
      } catch (error) {
        console.log(error);
      }

это приводит к перенаправлению всплывающих окон на локальный хост и остается там. закрыть всплывающее окно -> ошибка: user_cancelled: пользователь отменил поток.

также пробовал LoginPopup, loginrRedirect и т. д. - он всегда перенаправляется на localhost, не закрывает всплывающее окно и просто остается там, не возвращая токен.

различные параметры конфигурации MSAL, всплывающее окно должно закрыться — токен сохраняется в var

0 ответов

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