从Azure AD B2C自定义策略调用Azure AD Graph API?

时间:2019-02-25 22:22:31

标签: azure-ad-b2c

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?

2 个答案:

答案 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”来达到相同的结果吗?

这很有意义,只要它可以全部在后台运行即可。没有用户界面。