通过Graph Api在Azure ADB2C中添加自定义声明

时间:2018-07-31 15:47:37

标签: azure azure-ad-b2c azure-ad-graph-api

我想向由图谱API管理的某些特定用户的令牌添加自定义声明。

基本情况如下:

用户已注册我的应用程序。最初,所有用户对资源的访问都受到限制。作为管理员,我将通过添加特定声明来更新一些用户,以便我的应用可以授权该用户使用特定资源。

根据我的理解,有几种方法可以在令牌中包含声明(扩展属性)。

  1. 通过azure门户创建用户属性,并将其用于注册策略中以从用户那里收集值。就我而言,自定义属性仅由管理员应用,因此我不会让用户管理此声明。因此,这对我来说不是一个好方法,对我来说也没有意义,因为在许多用户已经注册后我将添加新属性,因此将无法收集此信息。

  2. 另一种方法是通过Graph Api添加扩展属性。为此,我需要创建一个新的应用程序(通过应用程序注册),并通过graph api向该应用程序注册扩展属性。然后通过在该应用程序中添加新创建的扩展属性来更新用户(通过图形api)。最后,我希望此扩展属性会显示在我的令牌中,但没有机会。它在门户中不可见,在令牌中仅在图形API响应中可见。

  3. 创建我不会创建的自定义策略,因为不建议非专家使用。

第二种解决方案中我缺少什么?

3 个答案:

答案 0 :(得分:0)

在第二个解决方案中,应考虑扩展行为和限制。由于MSDN中已提及,因此您的问题可能与属性类型有关。 Graph API和ADB2C期望扩展字段可以为空。我不知道这是否适合您,但我希望这会有所帮助。

StackOverflow中已经存在问答问题

答案 1 :(得分:0)

扩展名属性未在用户流中显示在令牌中的原因是用户流使用其他扩展名应用程序。

自定义属性是在应用程序(称为extension app)上创建的。在用户流中,AAD B2C自动创建该应用程序(名为B2C extension app, do not delete)。

创建“新应用”时,该应用未在用户流中注册。

为您提供的解决方案是使用B2C extension app创建属性。或在门户中创建属性。然后,使用图表API使用这些新属性来修补用户。

请参阅使用custom attributes in AAD Graph in AAD B2C tenant的文档。 请参阅此question,以获取有关自定义/ extension属性的更多参考。

答案 2 :(得分:-1)

我不同意@Abhishek Agrawal,我使用带有B2C 扩展应用程序的图形创建了自定义属性,不要删除 并为某些用户添加了一些值,然后我运行用户流,登录并且自定义属性没有出现在令牌中