我在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:另外,我不确定:
答案 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管理员手动设置扩展属性 - 它只能由您的应用设置。您的应用程序基本上拥有该属性数据,并且是唯一可以读取/写入它的客户端。因此,在您的应用程序签到时,如果它们没有头发颜色属性(例如),您应该询问它们。