我正在编写代码来设置可选声明。我成功地使用 PowerShell Set-AzureADUserExtension 设置声明并使用 Get-AzureADUserExtension 对其进行验证。但是我们需要使用graphApi来设置值。
我尝试了一些变体的 graphApi 调用是:
var application = (await graphClient.Applications.Request().Filter($"appId eq '{appClientId}'").GetAsync()).SingleOrDefault();
var schemas = await graphClient.Applications[application.Id].ExtensionProperties.Request().GetAsync();
var schema = schemas.CurrentPage.Single(x => x.Name == $"extension_{appClientId.Replace("-", string.Empty)}_clShops");
await graphClient.Users[userId].Extensions.Request().AddAsync (new OpenTypeExtension
{
ODataType = "Microsoft.DirectoryServices.User",
AdditionalData = new Dictionary<string, object> { { schema.Name, "1,2,3" } },
ExtensionName = schema.Id
});
我尝试更改 OpenTypeExtension 中的值,但我无法更改该用户的值(使用 Get-AzureADUserExtension powershell 命令检查)。
我的问题是我需要调用什么 graphApi 函数,以便设置可选声明以获得与调用 Set-AzureADUserExtension 相同的结果?
c# graphApi sdk 版本为 Microsoft.Graph Version=3.35.0
答案 0 :(得分:0)
经过多次测试后发现: 或者,您可以使用以下方法获取名称:
var application = (await graphClient.Applications.Request().Filter($"appId eq '{appClientId}'").GetAsync()).SingleOrDefault();
var schemas = await graphClient.Applications[application.Id].ExtensionProperties.Request().GetAsync();
var schema = schemas.CurrentPage.Single(x => x.Name.EndsWith("name of claim"));
或者按照惯例(用 schema.Name 替换):$"extension_{appId}_{'name of claim'}"
await graphClient.Users[userId].Request().UpdateAsync(new Microsoft.Graph.User
{
AdditionalData = new Dictionary<string, object>
{
{ schema.Name,value}
}
});