我正在尝试列出 B2C 租户中的用户及其所属组。我正在应用程序模式下连接到图表,如下所示:
var clientCred = new ClientCredential("<client id>", "<secret>");
var authContext = new AuthenticationContext("https://login.windows.net/" + "<b2c tenant>");
var authResult = authContext.AcquireTokenAsync("https://graph.microsoft.com/", clientCred).Result;
var client = new GraphServiceClient(
new DelegateAuthenticationProvider(
async (requestMessage) =>
{
var token = authResult.AccessToken;
var result = await Task.FromResult(token);
requestMessage.Headers.Authorization = new AuthenticationHeaderValue("bearer", token);
}));
var users = client
.Users
.Request()
.Select("memberOf") // not working
//.Select(u => new { u.MemberOf }) // not working
.Expand("memberOf") // not working
//.Expand(u => new { u.MemberOf }) // not working
.GetAsync()
.Result
.ToList();
结果,我得到了包含一些数据的用户列表,但 MemberOf
字段始终为空(尽管我 100% 确定他们至少有一个分配的组)。然而,这按预期工作:
var u = client.Users["<id>"].MemberOf.Request().GetAsync().Result;
可以肯定的是,我已授予我的应用程序完整的应用程序权限,没有任何变化。我错过了什么吗?
最佳答案
这是我的第一个回答,希望能帮到你。
您应该使用 beta 版本,因为 v1.0 没有实现“memberOf”扩展,要将 sdk 更改为 beta 版本,您必须添加:
client.BaseUrl = "https://graph.microsoft.com/beta";
我通常使用 QueryOption 包含扩展,如下所示:
List<QueryOption> options = new List<QueryOption> { new QueryOption("$Expand", "MemberOf") };
但是我认为你的使用方式不会有任何问题
试试这个代码:
var clientCred = new ClientCredential("<client id>", "<secret>");
var authContext = new AuthenticationContext("https://login.windows.net/" + "<b2c tenant>");
var authResult = authContext.AcquireTokenAsync("https://graph.microsoft.com/", clientCred).Result;
var client = new GraphServiceClient(
new DelegateAuthenticationProvider(
async (requestMessage) =>
{
var token = authResult.AccessToken;
var result = await Task.FromResult(token);
requestMessage.Headers.Authorization = new AuthenticationHeaderValue("bearer", token);
}));
//Change to the beta version
client.BaseUrl = "https://graph.microsoft.com/beta";
//Parameters of the query
List<QueryOption> options = new List<QueryOption> { new QueryOption("$Expand", "MemberOf") };
// query with parameters
var users = await graphClient.Users.Request(options).GetAsync();
关于c# - Azure AD B2C 和图 : cannot list users with memberOf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53617796/