【问题标题】:Calling the Azure AD Graph API from an Azure AD B2C custom policy?从 Azure AD B2C 自定义策略调用 Azure AD Graph API?
【发布时间】:2019-02-25 22:22:30
【问题描述】:

Azure AD B2C 自定义策略中的 REST API 调用在“ServiceUrl”字段中定义了一个固定 URL。

用于读取的 Graph API 调用的格式为例如:

.../users/objectID

所以 URL 需要是动态的。

您可以将 objectID 添加为输入声明,但它如何进入 URL?

输出是一个 JSON 对象。我认为您可以对其进行声明转换以获取输出声明中定义的特定属性。

写入 Graph API 需要 PATCH,但自定义策略 REST API 调用只允许 GET 和 POST。

似乎没有声明转换来构建 JSON 对象以从输出声明中写入。

是否可以从自定义策略调用 Azure AD Graph API?

【问题讨论】:

    标签: azure-ad-b2c


    【解决方案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 功能的原始回答:

    元数据键“SendClaimsAs”=“Url”的 Restful Provider 可以支持动态 URL

    如果你使用这个,你可以指定一个像这样的 url "https://my.tld/{partnerClaim1}/{partnerClaim2}" 并且声明将被填充到 url 中。

    但是,如果您这样做,请求将始终是 Get 请求。

    输出是一个 JSON 对象。我认为您可以对其进行声明转换以获取输出声明中定义的特定属性。

    您是对的,您可以使用声明转换从 json 获取声明。

    写入 Graph API 需要 PATCH,但自定义策略 REST API 调用仅允许 GET 和 POST。

    似乎没有声明转换来构建 JSON 对象以从输出声明中写入。

    你说得对,今天我们没有输出声明的声明转换,rest api 不支持补丁请求。

    【讨论】:

      【解决方案2】:

      添加额外的视角:

      您问:是否可以从自定义策略调用 Azure AD Graph API?

      如上所述,使用 REST API 技术提供程序调用 Azure AD 存在一些挑战,但我们始终从自定义策略调用 Azure Graph API。我们使用 Azure AD 提供程序。
      当您仔细查看 starterpack 时,您将看到所有与 Azure AD 相关的调用(AAD Technical ProfileS)。除了身份验证之外,所有其他 Azure AD 提供程序调用实际上都是调用 Azure AD 图来创建用户、更新用户配置文件。

      您能告诉我们您通过调用 Azure AD Graph 想要完成什么吗?

      更新/回答

      我们在 B2C 之外有一个用户配置流程。

      该流程的一部分调用 B2C 自定义策略。在用户旅程中,我们想要访问/更新一些 B2C 属性。其中一些是标准的。有些是自定义扩展属性。

      根据价值,我们使用“先决条件”跟踪旅程中的不同流程。

      所以本质上是获取/设置 B2C 属性的方法。

      为此,我们查看了调用 GraphAPI 的“Web.TPEngine.Providers.RestfulProvider”选项。

      但这似乎是不可能的。

      您是说我们可以通过使用“AAD-UserReadUsingObjectId”和“AAD-UserWriteProfileUsingObjectId”来达到相同的结果吗?

      这是有道理的,只要它都可以在后台运行。不涉及 UI。

      【讨论】:

      • 更新了细节。
      • 嗨@nzpcmad 您应该能够使用 AAD-UserReadUsingObjectIdAAD-UserWriteProfileUsingObjectId 访问所有 B2C 内置和自定义属性技术概况。这些技术配置文件都不需要任何用户交互。
      • 谢谢。我想这是思考更新 B2C = Graph API = REST = B2C REST 方法而不是退后一步的经典案例 :-)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多