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.
我用一个有效的字符串创建了这个 issuerUserId
:12345678909823456789
和以前一样,我成功创建了用户,源显示为 Google
:
但是当我想用Google供应商登录账户时
用户重复:
我假设不启动登录过程 Azure/Google 不识别帐户的 issuerUserId
并启动注册过程,因此我认为 issuerUserId
可能由 Google.
创建
一些注意事项:
- 我更改了演示电子邮件的电子邮件,但这是当前的
行为。
- 我只使用 Google 身份验证,我不使用登录的电子邮件和密码字段,因为该应用程序的目的仅用于社交身份验证(Google 具体)
- 我正在使用
Sign up and sign in (Recommended)
用户类型流。
- 如果您对
issuerUserId
有更多想法可以帮助我,请告诉我,我将不胜感激。
这不是真的。
根据我的测试,用户流不会创建具有重复电子邮件的新用户。 (之前的用户是通过 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
不一样
我正在学习 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.
我用一个有效的字符串创建了这个 issuerUserId
:12345678909823456789
和以前一样,我成功创建了用户,源显示为 Google
:
但是当我想用Google供应商登录账户时
用户重复:
我假设不启动登录过程 Azure/Google 不识别帐户的 issuerUserId
并启动注册过程,因此我认为 issuerUserId
可能由 Google.
一些注意事项:
- 我更改了演示电子邮件的电子邮件,但这是当前的 行为。
- 我只使用 Google 身份验证,我不使用登录的电子邮件和密码字段,因为该应用程序的目的仅用于社交身份验证(Google 具体)
- 我正在使用
Sign up and sign in (Recommended)
用户类型流。 - 如果您对
issuerUserId
有更多想法可以帮助我,请告诉我,我将不胜感激。
这不是真的。
根据我的测试,用户流不会创建具有重复电子邮件的新用户。 (之前的用户是通过 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
不一样