【问题标题】:How to get User Identity object from Microsoft Graph with Azure AD B2C如何使用 Azure AD B2C 从 Microsoft Graph 获取用户标识对象
【发布时间】:2021-06-03 23:24:20
【问题描述】:

我已使用 Azure AD B2C 身份验证和 Microsoft Graph 成功设置了一个 Asp.Net Core Web 应用程序。我想为用户返回 objectIdentity,以便我可以从 issuerAssignedId 属性中提取用户名。然而,身份对象是空的,所以我怎样才能得到这个值?

这是我在 Startup 中的配置。

services.AddMicrosoftIdentityWebAppAuthentication(Configuration, "AzureAdB2C");
services.Configure<OpenIdConnectOptions>(Configuration.GetSection("AzureAdB2C"));

services.AddSingleton<IGraphServiceClient>(implementationFactory =>
{
    var clientId = Configuration["MicrosoftGraph:ClientId"];
    var tenantId = Configuration["MicrosoftGraph:TenantId"];
    var secret = Configuration["MicrosoftGraph:ClientSecret"];

    IConfidentialClientApplication confidentialClientApplication = ConfidentialClientApplicationBuilder
        .Create(clientId)
        .WithTenantId(tenantId)
        .WithClientSecret(secret)
        .Build();

    ClientCredentialProvider authProvider = new ClientCredentialProvider(confidentialClientApplication);
    return new GraphServiceClient(authProvider);
});

这是我在 Azure AD B2C 中的 API 设置。

这是我在 Azure AD B2C 中的测试用户帐户。因为它是具有用户名的本地帐户,所以我试图获取下面突出显示的用户主体名称下的值。

--- 更新 ---

这绝对是我在 Azure AD B2C 中手动创建的本地帐户。这是设置。

已安装的软件包

【问题讨论】:

  • 确保使用 MS Graph API 的 beta 端点。
  • @JasSuri-MSFT 是正确的。

标签: microsoft-graph-api azure-ad-b2c azure-ad-graph-api


【解决方案1】:

这是因为您使用的是 Microsoft Graph v1.0 包。

在这种情况下,您需要使用$select 来获取identities 属性。

var user = await graphClient.Users[oid].Request().Select("identities").GetAsync();

示例here供您参考。

或者您可以在您的项目中使用 Beta 版本(如 @JasSuri 建议的那样)Install-Package Microsoft.Graph.Beta -PreRelease 并继续使用您的原始代码。

【讨论】:

  • Azure 门户中的 UPN 显示用户名,因此它必须是 B2C 帐户。
  • @JasSuri-MSFT 感谢您的更正。你说的对!已更新答案。
  • @JasSuri-MSFT 我将包更新到 Microsoft.Graph.Beta 但现在我在使用new GraphServiceClient(authProvider) 启动时遇到参考错误。错误是“CS0433 'Microsoft.Graph.Beta, Version=4.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 和 'Microsoft.Graph' 中都存在类型 'GraphServiceClient'”。也许它与 asp.net 5 不兼容?
  • @OjM 请尝试卸载 Microsoft.Graph 包。事实上,在生产环境中不推荐使用 Beta 版本。你试过$select查询参数吗?
  • @AllenWu 更新了显示已安装包和错误的问题。我只安装了测试版,但它仍然给出参考错误。
猜你喜欢
  • 2023-01-12
  • 2018-03-02
  • 2019-10-16
  • 1970-01-01
  • 1970-01-01
  • 2019-08-10
  • 1970-01-01
  • 2022-11-13
  • 1970-01-01
相关资源
最近更新 更多