授予对图API的现有B2C应用访问权限

时间:2017-09-11 09:35:43

标签: azure-ad-b2c

我有一个现有的B2C应用,我想给它提供图形访问权。

我之前设置了它,但现在想要复制它,但我能找到的所有内容都适用于新的应用程序。我用了较旧的图表,但我认为我用过的文章已被移动,因为所有内容都在讨论新的Graph api

是否有针对此的特定文章,如果有人看过一篇描述从Azure图表移动到Microsoft Graph(新版本)的过程的文章,那么B2C应用程序会很棒

谢谢

2 个答案:

答案 0 :(得分:1)

注册Graph API的应用程序

除了在B2C目录中注册应用程序外, 我们还必须为图API创建应用程序注册。 您需要的三个键/ id值是tenantId,ObjectId, 和AppPrincipalId。

要获取tenantId,请登录新门户网站中的azure ad b2c目录。

https://portal.azure.com/

确保登录后选择了正确的目录 (右上角)。

点击附近的帮助按钮(圆圈内的问号) 页面右上角。在出现的菜单中,单击 “显示诊断”选项。这将显示JSON格式的输出 一个新的弹出窗口。寻找“租户”数组并找到该条目 使用您希望注册的目录的显示名称 应用。该条目的“id”属性是tenantId。

示例:

{
  "clientSessionStartDate": {
  //stuff will be here ...
  },
  //
  // more shtuff you don't care about will be here ...
  //
  "tenants": [
    {
      "id": "SomeUUIDwithlike36charactersSometime",
      "domainName": "yourtenantname.onmicrosoft.com",
      "displayName": "displanynameoftenant",
      "isSignedInTenant": true
    },
    // ... snippity lemon
  ]
  // ... snip some more
}

您还需要一个独特的应用程序Secret和AppPrincipalId 为新应用程序生成。

此外,要为应用程序设置正确的权限,您需要 它的“ObjectId”。

注册应用程序并生成这些值的过程 更复杂,需要PowerShell的特殊模块 以及要下载和安装的在线登录模块。

另外,请确保安装了最新版本的PowerShell 你的系统,或者你将无法使用azure模块。

登录助手:https://www.microsoft.com/en-us/download/details.aspx?id=41950 Azure AD PowerShell模块:http://go.microsoft.com/fwlink/p/?linkid=236297

使用PowerShell创建应用程序注册

下一节是文档的几乎逐字复制粘贴。

https://azure.microsoft.com/en-us/documentation/articles/active-directory-b2c-devquickstarts-graph-dotnet/

安装PowerShell模块后,打开PowerShell并连接到 您的B2C租户。

> $msolcred = Get-Credential

运行Get-Credential后,系统会提示您输入 用户名和密码,输入用户名和密码 您的B2C租户管理员帐户。

> Connect-MsolService -credential $msolcred

在创建应用程序之前,您需要生成一个新客户端 秘密。您的应用程序将使用客户端密钥进行身份验证 Azure AD并获取访问令牌。您可以生成有效的秘密 在PowerShell中:

> $bytes = New-Object Byte[] 32
> $rand = [System.Security.Cryptography.RandomNumberGenerator]::Create()
> $rand.GetBytes($bytes)
> $rand.Dispose()
> $newClientSecret = [System.Convert]::ToBase64String($bytes)
> $newClientSecret

最终命令应该打印您的新客户端密码。把它复制到安全的地方。你以后需要它。现在,您可以通过提供新的客户端密钥作为应用程序的凭据来创建应用程序:

> New-MsolServicePrincipal -DisplayName "My New B2C Graph API App" -Type password -Value $newClientSecret

示例输出:

DisplayName           : My New B2C Graph API App
ServicePrincipalNames : {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
ObjectId              : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
AppPrincipalId        : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
TrustedForDelegation  : False
AccountEnabled        : True
Addresses             : {}
KeyType               : Password
KeyId                 : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
StartDate             : 1/1/2017 1:33:09 AM
EndDate               : 1/1/2017 1:33:09 AM
Usage                 : Verify

如果您成功创建了应用程序,则应该打印出来 应用程序的属性,如上所述,但混合使用字母数字字符。你需要两个 ObjectId和AppPrincipalId,所以也要复制这些值。

您还需要B2C目录的租户ID。

在B2C租户中创建应用程序后,您需要分配 它是执行用户CRUD操作所需的权限。分配 应用程序三个角色:目录读者(读取用户),目录 编写者(创建和更新用户)和用户帐户管理员 (删除用户)。这些角色具有众所周知的标识符,因此您可以 用上面的ObjectId替换-RoleMemberObjectId参数 运行以下命令。要查看所有目录角色的列表, 尝试运行Get-MsolRole。

> Add-MsolRoleMember -RoleObjectId 88d8e3e3-8f55-4a1e-953a-9b9898b8876b -RoleMemberObjectId <Your-ObjectId> -RoleMemberType servicePrincipal
> Add-MsolRoleMember -RoleObjectId 9360feb5-f418-4baa-8175-e2a00bac4301 -RoleMemberObjectId <Your-ObjectId> -RoleMemberType servicePrincipal
> Add-MsolRoleMember -RoleObjectId fe930be7-5e62-47db-91af-98c3a49a38b1 -RoleMemberObjectId <Your-ObjectId> -RoleMemberType servicePrincipal

您现在拥有一个有权创建,阅读, 更新并删除B2C租户中的用户。

答案 1 :(得分:0)

我完全忘记了这个伟大的答案存在,这就是你如何做到的

Authorize By Group in Azure Active Directory B2C