Azure active directory 使用Azure AD Graph API在B2C中添加自定义属性(扩展)不会';无法在Azure门户用户属性刀片中显示

Azure active directory 使用Azure AD Graph API在B2C中添加自定义属性(扩展)不会';无法在Azure门户用户属性刀片中显示,azure-active-directory,azure-ad-b2c,azure-ad-graph-api,Azure Active Directory,Azure Ad B2c,Azure Ad Graph Api,有人问了同样的问题,但仍然没有回答。我可以按如下方式添加自定义属性: { "name": "new_secure_claim", "dataType": "Boolean", "targetObjects": ["User"] } 我使用所需的标题将此数据发布到Azure AD Graph API端点: https://graph.windows.net/{tenant}.onmicrosoft.com/applications/{b2c扩展应用程序objectId}/

有人问了同样的问题,但仍然没有回答。我可以按如下方式添加自定义属性:

{
    "name": "new_secure_claim",
    "dataType": "Boolean",
    "targetObjects": ["User"]
}
我使用所需的标题将此数据发布到Azure AD Graph API端点:

https://graph.windows.net/{tenant}.onmicrosoft.com/applications/{b2c扩展应用程序objectId}/extensionProperties?api版本=1.6
。我得到了一个带有刚刚创建的扩展名的响应。我甚至可以在查询图表以获取
b2c extensions app
的所有扩展时看到扩展(请注意下面顶部的扩展):

但是,当我转到Azure门户()中我的B2C目录中的“Azure AD B2C/用户属性”刀片时,我看不到该扩展属性。当我添加索赔以返回保单时,我也看不到它

在向b2c extensions应用程序添加自定义扩展时,我需要做什么不同的事情,以便查看Azure portal用户属性刀片中是否有用户属性?

嗯,嗯

当人们以未记录的方式做事时,事情就变得复杂了。为了简单起见,我鼓励您继续使用门户定义扩展。如果你只是想这么做(而且似乎你想这么做)。因为不仅仅是在图中注册扩展

要理解为什么会这样,你必须更深入地理解B2C是如何从内部运作的。当你深入研究时,你会得到概述。然而,定制政策是,因为它停留在文档中,为身份专业人士谁知道他们在做什么。直截了当地说,
声明模式是在所谓的基本策略中定义的。它不仅在图表中定义,而且在基本策略中也定义了
backed
。有一种XML模式规定B2C必须做什么以及应该如何做。所有声明(和自定义属性)也在该模式中定义。因此,当您在门户中更改与此模式相关的内容(添加新属性)时,它将在Graph API中注册,但它也会在索赔定义模式中更新,该模式将单独保存

这就是为什么当您手动向图形注册扩展时,它不会显示在门户中


我不希望您跳起来开始学习自定义策略,因为对于您的情况,您根本不需要它们。但是我希望在门户中定义自定义属性对您来说不是什么大问题。

似乎他们在门户中做了一些我们无法通过AD Graph API完成的特殊工作。你有很多自定义属性吗?为什么不直接手动创建它们呢?我希望开发人员在应用程序的各个部分贴上声明标签,然后应用程序会通过反射将这些声明添加到目录中,此时可以将新声明分配给用户。很有趣!读完答案后,这完全有道理。这些声明必须涉及到基于xml的策略……这确实不能回答我的问题,但只能猜测事情为什么不起作用。最好是作为“评论”而不是“回答”。我可以想象graph API在幕后会像PortalBlade那样实际更新默认策略XML。它太低,无法发表评论,我相信这也非常接近实际情况。
{
"odata.metadata": "https://graph.windows.net/melangeauth.onmicrosoft.com/$metadata#directoryObjects/Microsoft.DirectoryServices.ExtensionProperty",
"value": [{
        "odata.type": "Microsoft.DirectoryServices.ExtensionProperty",
        "objectType": "ExtensionProperty",
        "objectId": "b7a36f93-8d7a-463f-8d3e-88f449243ea6",
        "deletionTimestamp": null,
        "appDisplayName": "",
        "name": "extension_8588c037999f4d058cc08e2e5f99de30_new_secure_claim",
        "dataType": "Boolean",
        "isSyncedFromOnPremises": false,
        "targetObjects": ["User"]
    }, {
        "odata.type": "Microsoft.DirectoryServices.ExtensionProperty",
        "objectType": "ExtensionProperty",
        "objectId": "b6c6d55f-21a8-4403-a68f-f858966077bf",
        "deletionTimestamp": null,
        "appDisplayName": "",
        "name": "extension_8588c037999f4d058cc08e2e5f99de30_manager_admin_authorization",
        "dataType": "Boolean",
        "isSyncedFromOnPremises": false,
        "targetObjects": ["User"]
    }, {
        "odata.type": "Microsoft.DirectoryServices.ExtensionProperty",
        "objectType": "ExtensionProperty",
        "objectId": "2642596f-5706-47fb-abdb-6d0d012a3006",
        "deletionTimestamp": null,
        "appDisplayName": "",
        "name": "extension_8588c037999f4d058cc08e2e5f99de30_manager_admin",
        "dataType": "Boolean",
        "isSyncedFromOnPremises": false,
        "targetObjects": ["User"]
    }, {
        "odata.type": "Microsoft.DirectoryServices.ExtensionProperty",
        "objectType": "ExtensionProperty",
        "objectId": "ee2c66e3-ced4-4bc8-90d5-e2b18690a56b",
        "deletionTimestamp": null,
        "appDisplayName": "",
        "name": "extension_8588c037999f4d058cc08e2e5f99de30_manager_ads_admin",
        "dataType": "Boolean",
        "isSyncedFromOnPremises": false,
        "targetObjects": ["User"]
    }
]
}