1

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

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

可以说这个属性是“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”] }

但是我在创建这个扩展时遇到了问题:

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

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

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

PS:另外,我不确定:

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

2 回答 2

0

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

关于:“因此,如果管理员未在 Azure AD 中设置值,则该属性出现但为空”是的,正确。扩展属性不能由 AAD 管理员手动设置 - 它只能由您的应用程序设置。您的应用程序本质上拥有该属性数据,并且是唯一可以读取/写入它的客户端。因此,在登录您的应用程序时,如果他们没有头发颜色属性(例如),您应该向他们询问。

于 2017-04-05T08:33:57.247 回答
0

至少部分回答您的问题:

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

于 2016-12-13T12:53:04.830 回答