为应用程序创建Azure extensionProperties

时间:2016-12-13 12:11:07

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

我在Azure Active目录中有一个多租户应用程序。我们将它用于sso(因此我们的客户可以使用其天蓝广告凭证登录我们的应用程序)。

我们希望向用户个人资料添加更多信息。我们希望从Azure AD中读取每个用户的属性值(因此管理员可以为azure广告中的每个用户设置此属性)。

让我们说这个属性是“hair_color”。 Azure用户对象中不存在此属性。根据Azure文档,我可以使用:

创建扩展名(https://azure.microsoft.com/en-us/resources/samples/active-directory-dotnet-graphapi-directoryextensions-web/

POST https://graph.windows.net/mydomain.com/applications/my_app_id/extensionProperties?api-version=1.21-preview { “name”: “hair_color”, “dataType”: “String”, “targetObjects”: [“User”] }

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

  • 我需要一个Access-Token来执行此请求。所以我需要使用我的管理员凭据登录并获取此accessToken。现在我的应用程序没有管理员权限。而且我不想更改我的应用程序的权限以添加简单的扩展名。也导致这是我将要执行一次的操作。

  • 我找不到任何工具。我尝试使用门户网站,azure-cli和图形资源管理器(https://graphexplorer.cloudapp.net/ - 添加扩展程序 - 在这里我可以看到我的扩展程序,但是我无法通过POST来创建扩展程序。)

是否有工具为我的应用创建extensionProperties?或者至少是一种简单的方法。理想情况下,我想添加extensionProperty离开我的实际应用程序配置(保留权限和其他所有内容)。

PS:另外,我不确定:

  • 此扩展程序是否会出现在Graph API中?
  • 管理员是否可以从网络浏览器更改此属性?或者他们是否需要更改同步本地天蓝广告?

2 个答案:

答案 0 :(得分:0)

至少部分回答你的问题:

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

答案 1 :(得分:0)

如果您要求第三方租户的管理员通过带有& prompt = admin_consent查询字符串参数的同意网址批准在其租户中使用您的应用,则会接受AAD中所有用户的同意,以便个人用户永远不需要同意。只需将此链接提供给客户管理员即可 https://login.microsoftonline.com/common/oauth2/authorize?response_type=code&client_id=YOUR_APP_GUID&prompt=admin_consent

关于:“因此,如果管理员未在Azure AD中设置值,则属性会显示但为空” 是,对的。无法通过AAD管理员手动设置扩展属性 - 它只能由您的应用设置。您的应用程序基本上拥有该属性数据,并且是唯一可以读取/写入它的客户端。因此,在您的应用程序签到时,如果它们没有头发颜色属性(例如),您应该询问它们。