Ionic 使用Azure AD示例进行离子和MSAL身份验证

ohfgkhjo  于 12个月前  发布在  Ionic
关注(0)|答案(1)|浏览(159)

我想从我的Ionic移动的应用程序登录Azure AD。
我一直在尝试使用msal模块中的**UserAgentApplication.loginPopup()**使我的实现工作,就像user最初在这里描述的那样:Ionic and MSAL Authentication,我终于在Ionic中遇到了重定向问题(我可以使用ng serve和浏览器完成这个过程,但当我在移动的上测试时就不是了:重定向到我的基础应用程序会抛出一个错误,再也不会回来;这似乎是一个已知的问题)

Paolo Cuscela提出的解决方法是避免使用此PopupLogin实用程序,并使其与InAppBrowserCustomNavigationClient一起使用,但在这种情况下,我不知道如何使用正确的msal配置示例化我的msalService.instance,就像我之前使用UserAgentApplication(clientId、authority、redirectUri等)一样。

你能帮帮我吗?我快疯了。
先谢谢你了。
我正在尝试使用Azure AD示例登录,但在Ionic移动的应用程序中遇到很多问题。

xnifntxz

xnifntxz1#

最后,我使用InAppBrowser完成了它,它比我预期的要容易。

private iab: InAppBrowser;
(...)
return new Promise<string>((resolve, reject) => {
      const authUrl = `${environment.activeDirectory.authority + environment.activeDirectory.tenantId}/oauth2/v2.0/authorize?`
        + `client_id=${environment.activeDirectory.clientId}&`
        + `response_type=token&`
        + `redirect_uri=${encodeURIComponent(environment.activeDirectory.redirectUri)}&`
        + `scope=${environment.activeDirectory.scope}`;

      const browserOptions = 'location=yes,mediaPlaybackRequiresUserAction=yes,' +
          'shouldPauseOnSuspend=yes,usewkwebview=yes,clearcache=yes,clearsessioncache=yes,fullscreen=yes,hidenavegationbuttons=yes';

      const browser = this.iab.create(authUrl, '_blank', browserOptions); 

      browser.on('loadstart').subscribe((event: any) => {
        if (event.url.includes('#access_token')) {
          // do something
        }
      });
  });

字符串
这种方法使用完整的authUrl来访问AzureAD登录名。response_type=token使access_token在redirect_uri中返回。这在浏览器中不起作用,因为由于X-Frame-Option错误而无法访问Azure登录名,但如果我将其安装在设备中,则可以正常工作。
我知道它可以更复杂,但它对我来说现在工作。

相关问题