【发布时间】:2021-04-07 01:13:54
【问题描述】:
我正在尝试通过电子邮件从租户获取用户。它在获取某些用户时有效,但在获取电子邮件地址中恰好有“+”的特定用户时不起作用。我不确定那个角色是问题还是其他问题。下面的查询始终为该用户返回 null。我的问题是,当用户显然在那个特定用户那里时,我如何弄清楚为什么它返回 null ?我检查了 AD B2C 租户中的审核日志,但它们只显示登录或删除。我在哪里可以检查图形 API 调用发生了什么?第二个问题,为什么要这样做?用户显然在那里!
public static GraphServiceClient GetGraphServiceClient()
{
var clientapp = ConfidentialClientApplicationBuilder
.Create(Globals.ClientId)
.WithTenantId(Globals.TenantId)
.WithClientSecret(Globals.ClientSecret)
.Build();
ClientCredentialProvider authProvider = new ClientCredentialProvider(clientapp);
return new GraphServiceClient(authProvider);
}
public static async Task<User> GetADUserAsyncByEmail(string email)
{
var graphClient = GetGraphServiceClient();
try
{
Logger.Log(LogLevel.Trace, $"Contacting AD tenant {Globals.Tenant} for user {email}.");
var users = await graphClient.Users
.Request()
.Filter($"identities/any(c:c/issuerAssignedId eq '{email}' and c/issuer eq '{Globals.Tenant}')")
.Select("displayName,id,userPrincipalName")
.GetAsync();
Logger.Log(LogLevel.Trace, $"Finished contacting AD tenant {Globals.Tenant} for user {email}.");
var foundUser = users.FirstOrDefault();
return foundUser;
}
catch (ServiceException ex)
{
Logger.Log(LogLevel.Error, ex, $"Error Alert:Encountered an exception when trying to get AD User {email}.");
return null;
}
catch (Exception ex)
{
Logger.Log(LogLevel.Error, ex, $"Error Alert:Encountered an exception when trying to get AD User {email}.");
return null;
}
}
【问题讨论】:
-
您好,您检查我的答案了吗?有更新吗?
-
我做到了,虽然我还没有尝试过。我会相信你的话。
标签: microsoft-graph-api azure-ad-b2c