【问题标题】:Firebase authentication with Microsoft error带有 Microsoft 错误的 Firebase 身份验证
【发布时间】: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


【解决方案1】:

尝试检查管理 -> 身份验证下的令牌复选框? 对我来说,这就是区别

【讨论】:

    猜你喜欢
    • 2019-11-23
    • 2017-11-26
    • 2017-06-18
    • 2018-04-13
    • 1970-01-01
    • 2021-03-31
    • 2019-01-08
    • 1970-01-01
    相关资源
    最近更新 更多