Azure AD B2C自定义策略中的REST API调用在“ ServiceUrl”字段中定义了固定URL。
用于读取的Graph API调用具有以下形式:
... /用户/对象ID
因此URL必须是动态的。
您可以添加objectID作为输入声明,但是它将如何进入URL?
输出是一个JSON对象。我想您可以对此进行声明转换,以获得输出声明中定义的特定属性。
写入Graph API需要PATCH,但是自定义策略REST API调用仅允许GET和POST。
似乎没有声明转换可以构建一个JSON对象以根据输出声明写入。
是否可以通过自定义策略调用Azure AD Graph API?
答案 0 :(得分:1)
编辑3月1日: 关于你的问题
是否可以通过自定义策略调用Azure AD Graph API?
要调用Azure AD,您必须使用AzureActiveDirectoryProvider。 Restful提供程序用于调用您可以设置和控制的任意Rest API。
要使用AAD提供程序,可以在此处遵循文档。 https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-setup-aad-custom
以下是我有关Restful Provider功能的原始答案:
Restful Provider中可以通过元数据键“ SendClaimsAs” =“ Url”支持动态Urls
如果使用此选项,则可以指定一个类似“ https://my.tld/ {partnerClaim1} / {partnerClaim2}”的网址,然后声明将填充到该网址中。
但是,如果执行此操作,则请求将始终是Get请求。
输出是一个JSON对象。我想您可以对此进行声明转换,以获得输出声明中定义的特定属性。
您是对的,您可以使用Claims转换从json获得索赔。
写入Graph API需要PATCH,但是自定义策略REST API调用仅允许GET和POST。
似乎没有声明转换可以构建一个JSON对象以根据输出声明写入。
您是正确的,今天我们没有输出声明的声明转换,rest api不支持补丁请求。
答案 1 :(得分:1)
添加其他视角:
您问:是否可以通过自定义策略调用Azure AD Graph API?
如上所述,使用REST API技术提供商调用Azure AD时遇到了一些挑战,但是我们一直都在通过自定义策略调用Azure Graph API。我们使用Azure AD提供程序。
当您仔细查看入门包时,将看到所有与Azure AD相关的调用(AAD Technical ProfileS)。除了身份验证之外,所有其他Azure AD提供程序调用实际上都是对Azure AD图的调用,以创建用户并更新用户配置文件。
您能否告诉我们您通过调用Azure AD Graph想要完成的工作?
更新/回答
我们在B2C之外有一个用户配置流程。
该流程的一部分调用B2C自定义策略。在用户旅程中,我们要访问/更新一些B2C属性。其中一些是标准的。一些是自定义扩展属性。
根据价值,我们使用“前提条件”遵循旅程中的不同流程。
因此本质上是获取/设置B2C属性的方法。
为此,我们查看了“ Web.TPEngine.Providers.RestfulProvider”选项以调用GraphAPI。
但这似乎不可能。
您是说我们可以通过使用“ AAD-UserReadUsingObjectId”和“ AAD-UserWriteProfileUsingObjectId”来达到相同的结果吗?
这很有意义,只要它可以全部在后台运行即可。没有用户界面。