如何使用 Azure AD B2C 从 Microsoft Graph 获取用户标识对象
How to get User Identity object from Microsoft Graph with Azure AD B2C
我已经使用 Azure AD B2C 身份验证和 Microsoft Graph 成功设置了 Asp.Net 核心 Web 应用程序。我想 return 用户的 objectIdentity,这样我就可以从 issuerAssignedId 属性 中提取用户名。但是 identities 对象是 null 那么我怎样才能得到这个值呢?
这是我在启动时的配置。
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 中手动创建的本地帐户。这是设置。
已安装的软件包
这是因为您使用了 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 AD B2C 身份验证和 Microsoft Graph 成功设置了 Asp.Net 核心 Web 应用程序。我想 return 用户的 objectIdentity,这样我就可以从 issuerAssignedId 属性 中提取用户名。但是 identities 对象是 null 那么我怎样才能得到这个值呢?
这是我在启动时的配置。
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 中手动创建的本地帐户。这是设置。
已安装的软件包
这是因为您使用了 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
并继续使用您的原始代码。