azure - 使用个人 Microsoft 帐户登录 Oauth2 v2 失败
问题描述
我确实使用我的 Office365 公司帐户在 portal.azure.com 上注册了一个新应用程序以访问 GraphAPI。
虽然身份验证适用于我们自己域中的用户(在 O365 中注册的用户),但我不断收到来自个人 Microsoft 帐户(outlook.com 或 live.com)的用户的错误。
我确实设置了应用程序以支持“所有 Microsoft 帐户用户”。
这是清单
{
"id": "valid-uid",
"acceptMappedClaims": null,
"accessTokenAcceptedVersion": 2,
"addIns": [],
"allowPublicClient": null,
"appId": "valid-uid",
"appRoles": [],
"oauth2AllowUrlPathMatching": false,
"createdDateTime": "2019-08-29T13:34:54Z",
"groupMembershipClaims": "All",
"identifierUris": [
"api://app-id"
],
"informationalUrls": {
"termsOfService": null,
"support": null,
"privacy": null,
"marketing": null
},
"keyCredentials": [],
"knownClientApplications": [],
"logoUrl": null,
"logoutUrl": null,
"name": "My Application (DEV2)",
"oauth2AllowIdTokenImplicitFlow": false,
"oauth2AllowImplicitFlow": true,
"oauth2Permissions": [],
"oauth2RequirePostResponse": false,
"optionalClaims": null,
"orgRestrictions": [],
"parentalControlSettings": {
"countriesBlockedForMinors": [],
"legalAgeGroupRule": "Allow"
},
"passwordCredentials": [
{
"customKeyIdentifier": null,
"endDate": "2299-12-30T23:00:00Z",
"keyId": "valid-uid",
"startDate": "2019-08-29T13:40:10.571Z",
"value": null,
"createdOn": "2019-08-29T13:40:11.7033226Z",
"hint": "U18",
"displayName": "Local Client"
}
],
"preAuthorizedApplications": [],
"publisherDomain": "NETORGFT(integer-nr).onmicrosoft.com",
"replyUrlsWithType": [
{
"url": "http://localhost:8080/auth/microsoft/callback",
"type": "Web"
}
],
"requiredResourceAccess": [
{
"resourceAppId": "00000003-0000-0000-c000-000000000000",
"resourceAccess": [
{
"id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d",
"type": "Scope"
}
]
}
],
"samlMetadataUrl": null,
"signInUrl": null,
"signInAudience": "AzureADandPersonalMicrosoftAccount",
"tags": [],
"tokenEncryptionKeyId": null
}
这是我在尝试使用 outlook.com(个人帐户)登录时遇到的错误。
- - - - - - - - 错误 - - - - - - - -
登录 抱歉,我们无法让您登录。
AADSTS50020:来自身份提供商“live.com”的用户帐户“someemail@outlook.com”在租户“ourdomain.com”中不存在,并且无法访问应用程序“uid-of-our-app”(我的应用程序(DEV2))在那个租户。需要先将该帐户添加为租户中的外部用户。注销并使用不同的 Azure Active Directory 用户帐户重新登录。
尽管已将应用程序配置为,为什么会出现该错误"signInAudience": "AzureADandPersonalMicrosoftAccount"
?
解决方案
其实这是我自己想出来的。
如果您通过 URL 传递租户 ID,Manifest 属性似乎会被忽略
https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize
...。
在我发现的文档中,对于企业和个人帐户,您必须'common'
通过{tenant}
.
https://login.microsoftonline.com/common/oauth2/v2.0/authorize
请求路径中的 {tenant} 值可用于控制谁可以登录应用程序。允许的值为
common
对于 Microsoft 帐户和工作或学校帐户,organizations
仅适用于工作或学校帐户,consumers
仅适用于 Microsoft 帐户,以及租户 ID 或域名等租户标识符。
推荐阅读
- javascript - 我正在尝试在 javascript 循环中发送 get 或 post 请求,但 .click() 只处理一次
- data-warehouse - 非规范化时要走多远
- android - 我可以使用 CameraX (Android Jetpack) 录制视频吗?
- c# - 在显示片段后存储要使用的画布绘图
- error-handling - 如何解决 BigQuery 中的“在美国位置找不到数据集”错误?
- android - 如何在原生广告位置上实施 Facebook 推荐
- python - 如何在 ROS 上使用 Azure IoT Hub 节点?
- sql - 如何在字符串之间插入逗号
- selenium-webdriver - chrome webdriver设置视口低于500px?
- unit-testing - 无法获取应用程序上下文