我正在尝试发现我的应用程序可用的扩展属性。我最初遵循本指南获取扩展属性:
但是这只会返回以下JSON:
{
"odata.metadata": "https://graph.windows.net/screenmediatestb2c.onmicrosoft.com/$metadata#directoryObjects/Microsoft.DirectoryServices.ExtensionProperty",
"value": []
}
我还尝试使用Postman进行常规HTTP请求,但结果完全相同。我可以对应用程序,用户,组等进行身份验证和加载。但它不会返回我的任何自定义属性,我有2个。
我使用的终端是:
https://graph.windows.net/[tenant]/applications/[application对象ID] /extensionProperties?api-version=1.6
有谁知道我做错了什么?
答案 0 :(得分:3)
我刚在本页底部注意到免责声明https://azure.microsoft.com/en-us/documentation/articles/active-directory-b2c-reference-custom-attr/。看起来这可能是我们的问题。
自定义属性存在已知限制。它只是创建 它是第一次在任何策略中使用,而不是在您添加它时 用户属性列表。
答案 1 :(得分:0)
本教程附带的GitHub仓库中有一个错误: https://azure.microsoft.com/en-us/documentation/articles/active-directory-b2c-devquickstarts-graph-dotnet/#use-custom-attributes
通过将Program.GetB2CExtensionApplication(...)改为:
来破坏你的球private static void GetB2CExtensionApplication(string[] args)
{
object formatted = JsonConvert.DeserializeObject(client.
GetApplications("$filter=startswith(displayName, 'b2c-extensions-app')").Result);
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine(JsonConvert.SerializeObject(formatted, Formatting.Indented));
}
不检查displayName是否等于'b2c-extensions-app',而是检查它是否以'b2c-extensions-app'开头。他们在更高版本的Azure AD B2C中更改了应用程序的名称。
当您使用返回的ID来获取扩展程序时,您会看到自定义属性名称带有Guid前缀,这就是我们访问它时遇到问题的原因: 例如。 extension_10ecdccd92c446829a399e68ed758978_MyCustomAttribute
Get-B2C-Application的正确GET URL应为:
GET https://graph.windows.net/{Tenant}/applications?api-version=1.6&$filter=startswith(displayName,'b2c-extensions-app')
扩展属性(自定义属性)的GET URL应为:
GET https://graph.windows.net/{Tenant}/applications/{ObjectID}/extensionProperties?api-version=1.6
答案 2 :(得分:0)
可以通过 LINQ 获取属性:
string selectClause = "GivenName,Surname,Id,Mail"
+ ",extension_{ExtensionPropertyPrefixGUID}_myAttribute1"
+ ",extension_{ExtensionPropertyPrefixGUID}_myAttribute2";
var result = await _graphClient.Users
.Request()
.Select(selectClause)
.GetAsync();
然后可以通过 AdditionalData 访问扩展属性
foreach (User user in result.CurrentPage)
{
string attribute1Value = (string)user.AdditionalData["extension_{ExtensionPropertyPrefixGUID}_myAttribute1";
}