我目前正在开发一个 Android 应用程序,并尝试将 MSAL 与我当前的 Keycloak / Azure 身份验证流程一起引入。但是,我的后端设置为通过 Keycloak 令牌进行验证,我需要维护此设置。
这是我想要实现的流程:
我正在寻找有关如何实施此流程的指导。具体来说,我不确定如何从 MSAL/Authenticator 将 Keycloak 配置为 IDP。
如果这是不可能的,是否有任何解决方法或替代方法来实现这一目标?
任何帮助将不胜感激。
我尝试将 MSAL 配置为使用 Keycloak,但找不到任何方法来执行此操作。
我还研究了 B2C,它应该支持其他身份验证机制,但在 MSAL for Android 中似乎不可能,但它存在于 MSAL js 中。
将 keycloak 和 Azure 配置为身份提供者的身份验证流程运行完美,但只需将 MSAL 添加到图中即可实现 SSO。由于 keycloak 将在登录时重定向到 Azure,如果 Android 手机上的另一个应用程序/浏览器已经建立了相同的 Azure 会话,我们应该能够重用该会话。
您应该致力于遵循基于标准的方法以获得最佳的未来选择。
钥匙斗篷
这是您的授权服务器。您的应用程序重定向到它并在那里注册为客户端。它还接收 Keycloak 发行的代币。
蔚蓝广告
这是用户登录的身份提供商。这是一种可能的身份验证选项,但通过使用 AS,您还可以支持许多其他选项。您的应用程序不应了解 Azure AD。
联盟配置
首先在 Azure AD 中创建一个 Web 客户端,以便它信任 Keycloak。这将生成客户端 ID 和客户端密钥。然后在 Keycloak 中注册一个使用客户端 ID + 密钥的身份提供者,以便 Keycloak 信任 Azure AD。
安卓流程
您的应用程序应根据 RFC8252 运行代码流并指向 Keycloak。它应该通过系统浏览器进行登录,而不是使用网络视图。一些身份系统阻止从网络视图登录。
您的应用程序可以使用库来处理此问题。例如,MSAL 可以指向 Keycloak,如此博文。
要进行集成,只需在您的 Android 应用程序中使用任何类型的 Keycloak 登录即可,例如使用密码。然后只需将 Keycloak 配置切换为使用 Azure AD。这不需要更改代码。
您的流量