如何解决您如何使用图形 API 设置 userExtension/可选声明?
我正在编写代码来设置可选声明。我成功地使用 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
解决方法
经过多次测试后发现: 或者,您可以使用以下方法获取名称:
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}
}
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。