【发布时间】:2019-04-02 14:00:04
【问题描述】:
我正在尝试在我的 Android 应用上为我的组织实施 Firebase 身份验证。每个员工都有一个 Microsoft 企业帐户,因此我想使用该电子邮件/密码登录我的应用。
我在 Firebase 控制台上启用了此选项,并使用我创建的 Azure AD 应用程序的信息填充数据:
Azure AD 应用有权登录用户并阅读他们的个人资料。
我设法让它工作到在我的 Firebase 控制台上创建用户的地步。
但在我的 Android 应用上,写入凭据后,会出现此错误消息。
我们无法让您登录。 AADSTS900561:端点只接受 POST 请求。收到一个 GET 请求。
Android 代码是 Firebase 提供的示例代码。
OAuthProvider.Builder provider = OAuthProvider.newBuilder("microsoft.com");
Task < AuthResult > pendingResultTask = mAuth.getPendingAuthResult();
if (pendingResultTask != null) {
pendingResultTask.addOnSuccessListener(new OnSuccessListener < AuthResult >
() {
@Override
public void onSuccess(AuthResult authResult) {
Log.e("PROFILE", authResult.getAdditionalUserInfo()
.getProfile().toString());
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.e("FAIL", "ERROR LOGIN");
}
});
} else {
mAuth.startActivityForSignInWithProvider(Login.this, provider.build())
.addOnSuccessListener(new OnSuccessListener < AuthResult > () {
@Override
public void onSuccess(AuthResult authResult) {
Log.e("PROFILE", authResult.getAdditionalUserInfo()
.getProfile().toString());
Log.w("USERNAME", authResult.getUser()
.getDisplayName());
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.e("FAIL", "ERROR LOGIN: " + e);
}
});
}
PROFILE 日志行正在打印,Android Studio 中没有错误。此外,如果用户是在 Firebase 上创建的...我不知道是什么导致登录过程未完成。
编辑: 这是我在 Azure AD 应用上的重定向 URI 配置:
编辑 2: 支持的帐户类型设置为所有帐户。 (抱歉是西班牙语,上面说我可以编辑清单来更改配置)
清单如下所示:
{
"id": "******************************",
"acceptMappedClaims": null,
"accessTokenAcceptedVersion": 2,
"allowPublicClient": null,
"appId": "***************************",
"appRoles": [],
"oauth2AllowUrlPathMatching": false,
"createdDateTime": "2019-04-02T09:53:53Z",
"groupMembershipClaims": null,
"identifierUris": ["api://****************************"],
"informationalUrls": {
"termsOfService": null,
"support": null,
"privacy": null,
"marketing": null
},
"keyCredentials": [],
"knownClientApplications": [],
"logoUrl": null,
"logoutUrl": null,
"name": "App name",
"oauth2AllowIdTokenImplicitFlow": true,
"oauth2AllowImplicitFlow": true,
"oauth2Permissions": [],
"oauth2RequirePostResponse": false,
"optionalClaims": null,
"orgRestrictions": [],
"parentalControlSettings": {
"countriesBlockedForMinors": [],
"legalAgeGroupRule": "Allow"
},
"passwordCredentials": [
{
"customKeyIdentifier": null,
"endDate": "2099-12-31T12:00:00Z",
"keyId": "***************************",
"startDate": "2019-04-02T09:55:10.2084897Z",
"value": null,
"createdOn": "2019-04-02T09:55:14.432352Z",
"hint": "gGL",
"displayName": null
}
],
"preAuthorizedApplications": [],
"publisherDomain": "domain.com",
"replyUrlsWithType": [
{
"url": "https://***********.firebaseapp.com/__/auth/handler",
"type": "Web"
},
{
"url": "https://login.live.com/oauth20_desktop.srf",
"type": "InstalledClient"
},
{
"url": "urn:ietf:wg:oauth:2.0:oob",
"type": "InstalledClient"
},
{
"url": "https://login.microsoftonline.com/common/oauth2/nativeclient",
"type": "InstalledClient"
},
{
"url": "msalececeef1-*****************://auth",
"type": "InstalledClient"
}
],
"requiredResourceAccess": [
{
"resourceAppId": "*************************",
"resourceAccess": [
{
"id": "***********************",
"type": "Scope"
}
]
}
],
"samlMetadataUrl": null,
"signInUrl": null,
"signInAudience": "AzureADandPersonalMicrosoftAccount",
"tags": [],
"tokenEncryptionKeyId": null
}
我尝试将"oauth2RequirePostResponse": false 更改为true,但也没有用。
【问题讨论】:
-
您是否按照此处所述进行了配置:firebase.google.com/docs/auth/android/…?
-
感谢您的回复。是的,我做到了。我添加了一个额外的图像来显示 Azure URI 重定向,但是您可以看到我在其余图像和代码上虔诚地关注了该站点。我在想可能缺少权限,因为这部分没有真正解释。
-
看起来这适用于 v2 Endpoint。确保身份验证刀片的“支持的帐户类型”部分未设置为“仅限此组织目录中的帐户(Microsoft)”或“任何帐户中的帐户组织目录”。 “任何组织目录中的帐户和个人 Microsoft 帐户(例如 Skype、Xbox、Outlook.com)” 适用于 v2 Endpoint。
-
检查我的编辑。启用了正确的选项,但清单上可能有一些可以提供帮助的东西?谢谢你的时间。
-
您解决了吗?我也在挣扎。看来他们的文档已经过时了。
标签: java android firebase firebase-authentication azure-active-directory