为应用程序创建Azure extensionProperties

为应用程序创建Azure extensionProperties,azure,azure-ad-b2c,azure-ad-graph-api,azure-cli,Azure,Azure Ad B2c,Azure Ad Graph Api,Azure Cli,我在Azure Active directory中有一个多租户应用程序。我们将其用于sso(因此我们的客户可以使用他们的azure ad凭据登录我们的应用程序) 我们希望向用户配置文件添加更多信息。我们希望从Azure AD读取每个用户的属性值(以便管理员可以为Azure AD中的每个用户设置此属性) 假设此属性为“头发颜色”。Azure用户对象中不存在此属性。根据Azure文档,我可以使用以下方法创建扩展(): 邮递https://graph.windows.net/mydomain.com

我在Azure Active directory中有一个多租户应用程序。我们将其用于sso(因此我们的客户可以使用他们的azure ad凭据登录我们的应用程序)

我们希望向用户配置文件添加更多信息。我们希望从Azure AD读取每个用户的属性值(以便管理员可以为Azure AD中的每个用户设置此属性)

假设此属性为“头发颜色”。Azure用户对象中不存在此属性。根据Azure文档,我可以使用以下方法创建扩展():


邮递https://graph.windows.net/mydomain.com/applications/my_app_id/extensionProperties?api-版本=1.21-预览{“名称”:“头发颜色”,“数据类型”:“字符串”,“目标对象”:[“用户”]}

但我在创建此扩展时遇到问题:

  • 我需要一个访问令牌来执行此请求。因此,我需要使用管理员凭据登录并获取此accessToken。目前我的应用程序没有管理员权限。我不想更改我的应用程序的权限来添加一个简单的扩展。也因为这是一个我只执行一次的操作

  • 我找不到任何工具来做这件事。我尝试使用门户、azure cli和图形浏览器添加扩展(-在这里我可以看到我的扩展,但我无法发布帖子来创建扩展)

是否有为我的应用程序创建扩展属性的工具?或者至少是一个简单的方法。理想情况下,我希望添加extensionProperty,保留实际的应用程序配置(保留权限和其他一切)

另外,我不确定:

  • 这个扩展将出现在Graph API中吗
  • 管理员能否从web浏览器更改此属性?或者他们需要更改它以同步本地azure广告

至少部分回答您的问题:


在您为应用程序创建扩展并且另一个租户的管理员同意您的应用程序后,该属性也会添加到他们的租户中。然后,如果从Graph API中检索到任何用户(例如用户),并且该用户上已为该属性注册了一个值,则扩展属性将在那里。

至少部分回答您的问题:


在您为应用程序创建扩展并且另一个租户的管理员同意您的应用程序后,该属性也会添加到他们的租户中。然后,如果从Graph API检索到任何用户(例如用户),并且该用户上已为该属性注册了一个值,则扩展属性将存在。

如果您要求第三方租户的管理员通过带有&prompt=admin\u同意查询字符串参数的同意URL批准在其租户中使用您的应用程序,它将接受AAD中所有用户的同意,这样个人用户就不需要同意。只需将此链接提供给客户管理员。

关于:“因此属性会出现,但如果管理员未在Azure AD中设置值,则该属性为空”
是的,没错。扩展属性不能由AAD管理员手动设置-只能由应用程序设置。您的应用程序实际上拥有该属性数据,并且是唯一可以对其进行读/写的客户端。因此,在你的应用程序登录时,如果他们没有头发颜色属性(例如),你应该向他们索要

如果您通过带有&prompt=admin\u approve querystring参数的同意URL请求第三方租户的管理员批准在其租户中使用您的应用程序,那么它将接受AAD中所有用户的同意,这样个人用户就无需同意。只需将此链接提供给客户管理员。

关于:“因此属性会出现,但如果管理员未在Azure AD中设置值,则该属性为空”
是的,没错。扩展属性不能由AAD管理员手动设置-只能由应用程序设置。您的应用程序实际上拥有该属性数据,并且是唯一可以对其进行读/写的客户端。因此,在你的应用程序登录时,如果他们没有头发颜色属性(例如),你应该向他们索要

“其他租户的管理员同意您的应用程序”是什么意思?他们需要接受吗??我希望它是自动的。因此,该属性会出现,但如果管理员未在Azure ad中设置值,则该属性为空。当管理员注册您的应用程序时,他们必须同意您的应用程序请求的权限。这在他们首次尝试登录时发生。如果他们选择接受应用程序所需的权限,则表示他们已同意。这就是多租户应用程序在Azure AD中的工作方式。因此,如果不是管理员,而是另一个租户的普通用户注册我的应用程序。然后他们同意我的应用程序请求的权限(它不需要任何管理员权限)。属性是否会出现?普通用户无法注册多租户应用程序。管理员必须先注册,然后普通用户才能登录应用程序。你说的“其他租户的管理员同意你的应用程序”是什么意思?他们需要接受吗??我希望它是自动的。因此,该属性会出现,但如果管理员未在Azure ad中设置值,则该属性为空。当管理员注册您的应用程序时,他们必须同意您的应用程序请求的权限。这在他们首次尝试登录时发生。如果他们选择接受应用程序所需的权限,则表示他们已同意。这就是多租户应用程序在Azure AD中的工作方式。因此,如果不是管理员,而是另一个租户的普通用户注册我的应用程序。然后他们同意我的应用程序请求的权限(它不需要任何管理员权限)。属性是否会出现?普通用户无法注册多租户应用程序。管理员必须先注册,然后普通用户才能登录该应用。您可以对应用使用委派权限,这样只有具有管理员权限的用户才能执行此修改。您可以对应用使用委派权限,这样只有具有管理员权限的用户才能执行此修改