如何使用具有门户体验的Graph API创建Azure AD应用程序

时间:2017-01-25 17:49:40

标签: azure-active-directory azure-ad-graph-api

在新的Azure门户中,我可以创建新的应用程序注册。我发现这个动作包含了我想用Graph API实现的多个步骤。

这是我想用Graph API模拟的门户体验:

  1. 在App registrations刀片中,按下Add +链接创建 注册测试应用程序A.
  2. 我点击测试应用A,此应用注册的刀片将打开。 在此刀片中,托管应用程序在本地目录中的值 是一个名为Test App A的链接。
  3. 我点击该链接和一个新的企业应用程序 - 预览 测试应用程序A的刀片打开。在该刀片上,启用了删除链接 并且可点击。在MANAGE下的那个刀片上的链接 存在条件访问。
  4. 我关闭所有刀片并打开企业应用程序刀片。那里 在管理下,我点击所有应用程序。
  5. 在企业应用程序 - 所有应用程序视图中,我看到了测试 App A列出。
  6. 这就是我使用Graph API所做的事情:

    1. 我向https://graph.windows.net/ {tenant} /applications?api-version=1.6发送POST请求以创建测试应用A.
    2. 我点击测试应用A,此应用注册的刀片将打开。 在此刀片中,托管应用程序在本地目录中的值 是文本登录到应用程序以创建本地实例。
    3. 我向https://graph.windows.net/ {tenant)/servicePrincipals?api-version=1.6发送POST请求以创建服务主体。请求的JSON主体仅包含属性appId,其中应用程序ID为Test App A作为其值。这会将“本地目录中的托管应用程序”的值更改为名为“测试应用程序A”的链接。
    4. 我点击该链接和一个新的企业应用程序 - 预览 测试应用程序A的刀片打开。在该刀片上,删除链接已禁用 而不是可点击的。在MANAGE下的那个刀片上的链接 缺少条件访问。
    5. 我关闭所有刀片并打开企业应用程序刀片。那里 在管理下,我点击所有应用程序。
    6. 在企业应用程序上 - 所有应用程序查看应用程序测试 App A未列出。
    7. 我错过了什么?我必须在步骤3中发送哪些属性。我还需要做什么?

1 个答案:

答案 0 :(得分:2)

您必须在创建服务主体期间指定以下内容:

"tags": [
  "WindowsAzureActiveDirectoryIntegratedApp"
]

或者您可以使用它更新现有服务主体。否则你做的是正确的。

所以服务主体创建JSON看起来像:

{
  "appId": "0e5836bf-ac8d-4b46-9cbb-5b3e8ebcdd37",
  "tags":[
    "WindowsAzureActiveDirectoryIntegratedApp"
  ]
}

或者您可以使用以下命令对服务主体执行PATCH:

{
  "tags":[
    "WindowsAzureActiveDirectoryIntegratedApp"
  ]
}

关于标签

当您添加此标记时,主体在“企业应用程序”列表中显示(实际上是服务主体列表)。条件访问也已启用。

此标记似乎存在于通过任何门户为应用创建的任何和所有服务主体上。

但也有一些没有标记的服务主体,例如Graph API的主体和Azure门户。

关键似乎是这些服务在您的目录中具有一些访问权限,但它们不应该在您的控制之下。标签区分了应该对您可见的主体。即使没有标记,主体也可以看到,但只能通过您创建的应用程序,如我们在此处所见。

有趣的是,像Microsoft Graph API这样的主体有一个appId,但没有appOwnerTenantId。 publisherName也为null。

这主要是猜测,因为我实际上并没有在Microsoft工作,但最重要的是,如果您希望AAD处理主体,就像您通过门户网站为应用程序创建主体一样,您必须指定标签也。