【问题标题】:Ionic 5 msal Authentication failed离子 5 msal 身份验证失败
【发布时间】:2021-07-15 13:47:43
【问题描述】:

我正在尝试在 ionic 5 中实现 Microsoft SSO 身份验证。

执行以下代码时,控制台中会发生 Undefine。哪一部分有问题?

login(){
let authContext: AuthenticationContext = this.msAdal.createAuthenticationContext('https://login.windows.net/common');

authContext.acquireTokenAsync('https://graph.windows.net', 'clientID', 'http://localhost:8200')
  .then((authResponse: AuthenticationResult) => {
    console.log('Token is' , authResponse.accessToken);
    console.log('Token will expire on', authResponse.expiresOn);
  })
  .catch((e: any) => console.log('Authentication failed', e));

}

错误 =>

https://ionicframework.com/docs/v3/native/ms-adal/

【问题讨论】:

    标签: microsoft-graph-api msal ionic5 azure-ad-b2c-custom-policy


    【解决方案1】:
    const browser = this_.iab.create("https://login.microsoftonline.com/" + tenant_id +
                  "/oauth2/authorize?response_type=id_token&client_id=" + client_id
                  +"&state=SomeState&nonce=SomeNonce"
                  , '_blank', 'clearsessioncache=yes,clearcache=yes,toolbar=no,location=no,toolbarposition=top,hidenavigationbuttons=yes,toolbarcolor=#0072bb')
                browser.on("loadstart").subscribe(event => {
    

    IAB 在应用浏览器中。当我们需要对 azure AD b2c 进行这种类型的身份验证时,我们也尝试过使用 Msal。同样,你必须为你的情况做。

    有一个企业级插件可用,价格约为 80 万印度卢比。
    所以这是解决方法。当您在 Azure 帐户中的应用程序下注册您的应用时,您将获得租户 ID 和客户端 ID。

    因此,一旦登录成功,负载侦听器将侦听 IAB 正在访问的页面。如果发现 #token_id 出现(成功登录后)。

    iab 将自动关闭,离子应用页面将恢复,或者您可以在该事件侦听器中添加一些新的路由条目。

    对于您的情况,基本网址可能会更改。因此,请尝试首先使用打开您的案例登录的 url 访问 chrome。并相应地改变。

    使用 IAB 而不是 MSAL 使其工作

    【讨论】:

    • 我觉得url链接不对,有教程吗?错误消息 => "lang":"en","value":"请求 url 无效。请求应类似于 \/tenantdomainname\/Entity 或 \/$metadata。租户域名可以是任何已验证、未验证域名或上下文 ID。
    • 看这就是我的意思。我们使用了 azure ad b2c 登录。您需要在 Azure 帐户中的应用程序下创建租户 ID 和客户端 ID。您不能直接使用该链接。 Tanant id 和 client 基本上是变量。这样你就会拥有自己的。 Microsoft SSO 身份验证检查您如何在 azure 中注册应用程序。您首先注册您的 azure ad b2c 应用程序。它将显示租户 ID 和客户 ID。你插入那里。您必须使用它在 url 中获取令牌。您可以先在 chrome 上尝试,然后在 ionic 应用上尝试类似的方式。
    • stackoverflow.com/questions/38211141/… 这是我们用来实现目标的引用堆栈溢出链接。
    • 如何输入重定向 url 以同时运行 Android 和 iOS 应用程序?你能帮忙吗?
    • 对于 android 和 iOS,url 都是一样的。您无需输入重定向 URL。 browser.on("loadstart").subscribe(event => { 继续收听该 loadstart 事件。每次 IAB 访问新页面时,您将在调试模式下在 Android 和 iOS 上进行控制台。在 IAB 登录后,天蓝色将发送您使用 #id_token 定义的 url。如果 IAB url 包含该“#id_token”,您现在需要做的是在 loadstart 中。您关闭 IAB 并使用重定向回应用程序。
    猜你喜欢
    • 2021-11-22
    • 1970-01-01
    • 2020-10-16
    • 2014-01-24
    • 2021-11-19
    • 2017-11-27
    • 1970-01-01
    相关资源
    最近更新 更多