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

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

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

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

  1. 在“应用程序注册”边栏选项卡中,我按“添加+”链接来创建 注册测试应用程序A。
  2. 我单击“测试应用程序 A”,此应用程序注册的边栏选项卡将打开。 在此边栏选项卡中,本地目录中的托管应用程序的值 是一个名为“测试应用 A”的链接。
  3. 我点击该链接和一个新的企业应用程序 - PREVIEW 测试应用程序 A 的 Blade 打开。在该 Blade 上启用了删除链接 并且可点击。在该 Blade 上的“管理”链接下 存在条件访问。
  4. 我关闭所有 Blade 并打开企业应用程序 Blade 。那里 在“管理”下,我单击“所有应用程序”。
  5. 在企业应用程序 - 所有应用程序 View 中,我看到测试 已列出应用 A。

这就是我使用 Graph API 所做的事情:

  1. 我向 https://graph.windows.net/ 发送 POST 请求{tenant}/applications?api-version=1.6 创建测试应用 A。
  2. 我单击“测试应用程序 A”,此应用程序注册的边栏选项卡将打开。 在此边栏选项卡中,本地目录中的托管应用程序的值 是文本“登录到应用程序以创建本地实例”。
  3. 我向 https://graph.windows.net/ 发送 POST 请求{tenant)/servicePrincipals?api-version=1.6 创建服务主体。请求的 JSON 正文仅包含属性 appId,其值是测试应用程序 A 的应用程序 ID。这会将“本地目录中的托管应用程序”的值更改为名为“测试应用程序 A”的链接。
  4. 我点击该链接和一个新的企业应用程序 - PREVIEW 测试应用程序 A 的 Blade 打开。在该 Blade 上,删除链接被禁用 并且不可点击。在该 Blade 上的“管理”链接下 缺少条件访问。
  5. 我关闭所有 Blade 并打开企业应用程序 Blade 。那里 在“管理”下,我单击“所有应用程序”。
  6. 在企业应用程序上 - 所有应用程序查看应用程序测试 应用程序 A 未列出。

我错过了什么?在第 3 步中我还必须发送哪些属性。我还必须做什么?

最佳答案

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

"tags": [
  "WindowsAzureActiveDirectoryIntegratedApp"
]

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

因此服务主体创建 JSON 看起来像:

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

或者您可以使用以下方法对服务主体进行 PATCH:

{
  "tags":[
    "WindowsAzureActiveDirectoryIntegratedApp"
  ]
}

关于标签

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

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

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

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

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

这主要只是猜测,因为我实际上并不在 Microsoft 工作,但底线似乎是,如果您希望 AAD 处理主体,就像您通过门户为应用程序创建它一样,则必须指定标签也。

关于azure-active-directory - 如何使用具有门户体验的 Graph API 创建 Azure AD 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41858263/

相关文章:

azure - 使用 adal4j 从 Azure 获取用户名和组信息

azurerm 角色分配,在提供程序中使用 client_id、client_secret、subscription_id、tenant_id 时无法分配角色

Azure kubernetes - java spring应用程序和托管身份来访问 key 保管库?

python-3.x - 将 Azure AD 中的主体 ID 解析为用户、服务

c# - 使用 ADAL JS 的 Azure AD Graph API 不记名 token

azure - 是否可以使用 Powershell 更新 Azure AD 中现有用户的 SignInNames

c# - 尽管在本地主机上工作,部署到 Azure 时 Azure Active Directory 始终重定向到 '~/.auth/login/done'

java - 尝试使用java从webapp在datalake中创建文件

rest - Azure 图形 API : Unable to find valid certification path to requested target on REST call

Azure B2C 图形 API : Create User with an Object ID