如何从angular调用B2C图形API?

如何从angular调用B2C图形API?,angular,azure-ad-b2c,msal.js,Angular,Azure Ad B2c,Msal.js,我试图理解如何调用graph API来使用msal angular(“azure/msal angular”):“^0.1.4”)提取一些用户信息。 我还没有找到这方面的工作示例/教程 我已经建立了一个Azure广告B2C。已创建以用户名作为登录密钥的本地帐户提供程序。 我创建了注册/登录流并注册了一个webapp“b2c-app01”。对于API权限,我授予应用程序“user.read”权限 我已使用msal的以下配置登录     MsalModule.forRoot({       clie

我试图理解如何调用graph API来使用msal angular(“azure/msal angular”):“^0.1.4”)提取一些用户信息。 我还没有找到这方面的工作示例/教程

我已经建立了一个Azure广告B2C。已创建以用户名作为登录密钥的本地帐户提供程序。 我创建了注册/登录流并注册了一个webapp“b2c-app01”。对于API权限,我授予应用程序“user.read”权限

我已使用msal的以下配置登录

    MsalModule.forRoot({
      clientID: "00000000-0000-0000-0000-000000000000", // b2c-app01 in app registration
      authority: "https://b2c-app01.b2clogin.com/tfp/b2c-app01.onmicrosoft.com/B2C_1_SignInOrSignUp",
      validateAuthority: false,
接下来,我将尝试按照这个示例访问GraphAPI

但是,我无法通过无声通话。我将['user.read']传递给scope,并得到以下错误

        this._user = this.authService.getUser();
        let tokenResponse = await this.authService.acquireTokenSilent(
            ['user.read'],
        );
        console.log(tokenResponse);
请求中提供的作用域“user.read”不受支持。

我尝试使用用户中返回的authority属性的标识提供程序url,但随后出现CORS错误。我甚至不知道这是否有效,所以我没有进一步研究CORS错误

        this._user = this.authService.getUser();
        let tokenResponse = await this.authService.acquireTokenSilent(
            ['user.read'],
            this._user.identityProvider,
            this._user,
        );
        console.log(tokenResponse);
被CORS策略阻止:请求的资源上不存在“Access Control Allow Origin”头。

关于我做错了什么或遗漏了什么,有什么建议吗

编辑:

下面是api权限

AAD B2C应用程序注册无法授予Graph API的权限。根据您所说的,您已经在B2C目录中创建了AAD应用程序注册

这是不可能的 “我创建了注册/登录流并注册了一个Web应用程序‘b2c-app01’。对于API权限,我授予了应用程序‘user.read’权限。”

您提到AAD B2C,但您的JS示例是针对AAD的。
对于AAD B2C用例,在用户令牌中返回所有必需的数据。对于任何其他图形api调用(如查询用户组),请调用您自己的api,该api使用客户端凭据对B2C租户中的AAD App Reg进行时间图形api身份验证。

您是否尝试过在
用户前加前缀。使用图形URL读取
范围,即
https://graph.microsoft.com/User.Read
?只是黑暗中的一刀

本文描述了使用B2C应用程序调用Microsoft Graph的场景:

该文章实现的OAUTH场景是,也称为服务帐户或守护进程。我认为他们讨论的主要用例是使用Azure DevOps来维护身份策略,并通过对DevOps部署管道进行身份验证来自动上传策略


理想情况下,可以支持其他用户交互oauth流,例如or流。

我没有意识到这一点,我也没有看到文档中提到的内容(然后再说一遍,文档一直指向其他部分,我很可能就是错过了)。请参阅所附的屏幕截图,看起来我已经授予了应用程序图形访问权限。好的,但此应用程序将无法作为B2C策略(用户流/自定义策略)执行的一部分启动。这将只适用于你的B2C租户的AAD端点。是的,我从那以后做了很多阅读,我误解了广告B2C的功能。我认为通过登录返回的id令牌,我可以——不知何故——直接控制对资源的访问。但是,正如你所说,我必须让webapp运行或添加功能,这就是客户端应用程序将调用的。我的理解正确吗?