Azure AD Graph API - 如何获取 Google 和 Facebook 的 IssuerAssignedId

Azure AD Graph API - How you can get the IssuerAssignedId for Google and Facebook

我正在学习 Microsoft 教程 Create a user (local or social account)。所以我试图通过 HTTP 调用创建一个用户,为此我向教程发送了一个类似的有效负载:

{
  "accountEnabled": true,
  "creationType": "LocalAccount",
  "displayName": "Alex Wu",
  "passwordProfile": {
    "password": "Test1234",
    "forceChangePasswordNextLogin": false
  },
  "signInNames": [
    {
      "type": "userName",
      "value": "AlexW"
    },
    {
      "type": "emailAddress",
      "value": "alexw@gmail.com"
    }
  ],
  "userIdentities": [
    {
      "issuer": "google.com",
      "issuerUserId": "MATxTNg5MzYyMzMyMNY1Njc="
    }
  ]
}

我的问题是如何生成 issuerUserId,因为 Google 供应商必须识别用户。我正在尝试使用 base64 进行随机值编码,但是当我 运行 用户流向用户时,它会使用重复的电子邮件再次创建。我想 Google 不认识 issuerUserId.

更新:

基于Allen Wu的回答:

issuerUserId is a unique user identifier for the issuer. You can set any valid string (don't be duplicate) for it.

我用一个有效的字符串创建了这个 issuerUserId12345678909823456789

和以前一样,我成功创建了用户,源显示为 Google:

但是当我想用Google供应商登录账户时

用户重复:

我假设不启动登录过程 Azure/Google 不识别帐户的 issuerUserId 并启动注册过程,因此我认为 issuerUserId 可能由 Google.

创建

一些注意事项:

这不是真的。

根据我的测试,用户流不会创建具有重复电子邮件的新用户。 (之前的用户是通过 AAD Graph 创建的)

issuerUserId 是发行人的唯一用户标识符。您可以为其设置任何有效的字符串(不要重复)。

而Google / Facebook 或任何其他社交idp 不会对其进行验证,因为此用户是在B2C 中创建的。这是一个 B2C 本地帐户。 ("creationType": "LocalAccount")

创建 B2C 本地帐户并不意味着此用户已在 Google 中创建。

我猜你将 Google idp 添加到用户流程中,并试图在 Google 而不是 B2C 中创建新用户。

您应该点击用户流程中的“立即注册”来创建本地帐户。请查收。


更新:

正如我上面提到的,您使用 Azure AD graph 创建的用户是一个 B2C 本地帐户。您应该使用默认登录功能登录该用户。 B2C 将验证您的凭据。

但是当您点击“Google”登录时,实际上 Google 将验证您的凭据并将您的 Google 帐户关联到一个新的 B2C 帐户。这不是本地帐户。

所以他们是两个不同的账户。您可以通过更改 B2C 本地帐户的密码来验证这一点。更改密码后,您仍然需要使用旧密码登录“Google”选项。但您需要使用新密码登录第一个用户(B2C本地账户)。

可以用GET https://graph.windows.net/myorganization/users?api-version获取两个用户,发现issuerUserId不一样