在 Android 上使用 Azure 作为 IDP 和 MSAL 配置 Keycloak

问题描述 投票:0回答:1

我目前正在开发一个 Android 应用程序,并尝试将 MSAL 与我当前的 Keycloak / Azure 身份验证流程一起引入。但是,我的后端设置为通过 Keycloak 令牌进行验证,我需要维护此设置。

这是我想要实现的流程:

  • 使用 MSAL 通过 Keycloak + Azure AD 对用户进行身份验证。
  • Azure AD 身份验证成功后,重定向到 Keycloak。
  • Keycloak重定向到APP。

我正在寻找有关如何实施此流程的指导。具体来说,我不确定如何从 MSAL/Authenticator 将 Keycloak 配置为 IDP。

如果这是不可能的,是否有任何解决方法或替代方法来实现这一目标?

Sequence diagram of my current flow

Sequence diagram of wanted flow

任何帮助将不胜感激。

我尝试将 MSAL 配置为使用 Keycloak,但找不到任何方法来执行此操作。

我还研究了 B2C,它应该支持其他身份验证机制,但在 MSAL for Android 中似乎不可能,但它存在于 MSAL js 中。

将 keycloak 和 Azure 配置为身份提供者的身份验证流程运行完美,但只需将 MSAL 添加到图中即可实现 SSO。由于 keycloak 将在登录时重定向到 Azure,如果 Android 手机上的另一个应用程序/浏览器已经建立了相同的 Azure 会话,我们应该能够重用该会话。

android azure keycloak openid-connect msal
1个回答
0
投票

您应该致力于遵循基于标准的方法以获得最佳的未来选择。

钥匙斗篷

这是您的授权服务器。您的应用程序重定向到它并在那里注册为客户端。它还接收 Keycloak 发行的代币。

蔚蓝广告

这是用户登录的身份提供商。这是一种可能的身份验证选项,但通过使用 AS,您还可以支持许多其他选项。您的应用程序不应了解 Azure AD。

联盟配置

首先在 Azure AD 中创建一个 Web 客户端,以便它信任 Keycloak。这将生成客户端 ID 和客户端密钥。然后在 Keycloak 中注册一个使用客户端 ID + 密钥的身份提供者,以便 Keycloak 信任 Azure AD。

安卓流程

您的应用程序应根据 RFC8252 运行代码流并指向 Keycloak。它应该通过系统浏览器进行登录,而不是使用网络视图。一些身份系统阻止从网络视图登录。

您的应用程序可以使用库来处理此问题。例如,MSAL 可以指向 Keycloak,如此博文

要进行集成,只需在您的 Android 应用程序中使用任何类型的 Keycloak 登录即可,例如使用密码。然后只需将 Keycloak 配置切换为使用 Azure AD。这不需要更改代码。

您的流量

© www.soinside.com 2019 - 2024. All rights reserved.