PowerApp组件框架中的Azure / Msal身份验证返回AADSTS50177错误

问题描述

我使用pac pcf init命令创建了一个简单的PowerApps组件框架。 在成功地将此骨架PCF应用程序打包并导入到我的演示租户后,我尝试为其添加MSAL身份验证。

我使用@ azure / msal npm软件包来编写打字稿配置并登录,而无需添加React或Angular npm软件包。我只使用了@ azure / msal和在pcf创建过程中添加的软件包。

最终目标是使用从msal身份验证收到的令牌对我的Wep Api中的授权方法进行请求。

问题是我的Web Api不在演示租户中,用于msal身份验证的用户来自演示租户,并且不存在于我的Web Api的租户中。

我无法在弹出窗口中更改登录用户,因为它仅显示错误消息,并且已添加到演示租户的有权访问Web API的来宾用户无法通过门户网站天蓝色添加证书或门户办公室管理中心页面。

这是我的登录配置(我将省略工作租户的租户名称和客户端ID):

import { AuthenticationParameters,Configuration,UserAgentApplication } from '@azure/msal';
import { AuthOptions,CacheOptions,FrameworkOptions } from "@azure/msal/lib-commonjs/Configuration";

public init(context: ComponentFramework.Context<IInputs>,notifyOutputChanged: () => void,state: ComponentFramework.Dictionary,container:HTMLDivElement)
    {
        // Add control initialization code
        const auth: AuthOptions = {
            clientId:'clientid',authority:'https://login.microsoftonline.com/tenantid',redirectUri:'redirect uri',validateAuthority: true
        };
        const cache: CacheOptions = {
            cacheLocation:"localStorage"
        };
        const framework: FrameworkOptions = {
            protectedResourceMap: new Map([
                ['web api url',['https://tenantid/clientid/uniquename (scope)']],['CRM work sandbox',['CRM work sandbox user impersonation permission(scope)']]
            ]),unprotectedResources:[]
        };
        const config: Configuration = {
            auth: auth,cache: cache,framework: framework
        };
        const params: AuthenticationParameters = {
            authority: 'https://login.microsoftonline.com/tenantid',scopes:['offline_access','https://tenantid/clientid/uniquename(scope)','CRM work sandbox user impersonation permission(scope)'],redirectUri:'web api redirect uri'
        };
        const userAgentApplication = new UserAgentApplication(config);
        const login = userAgentApplication.loginPopup(params).then(data => {
            console.log(data);
            let user = userAgentApplication.getAccount();
            console.log(user);
            if (user) {
                // signin successful
                console.log('success');
            } else {
                // signin failure
                console.log('fail');
            }
        },function (error: string) {
            // handle error
            console.log('Error' + error);
        });
    }

显示的错误消息:

AADSTS50177:来自身份提供者“ https://sts.windows.net/guid/”的用户帐户“用户名”在租户“名称”中不存在,并且无法访问应用程序“客户端ID”(已注册应用程序的名称)在该租户中)。首先需要将该帐户作为外部用户添加到租户中。注销并使用其他Azure Active Directory用户帐户再次登录。

有没有一种方法可以在不向我的工作租户添加pcf或帐户的情况下对其进行测试?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...