3.6. 带有 Cordova 的混合应用程序


红帽构建的 Keycloak 支持通过 Apache Cordova 开发混合移动应用程序。该适配器有两种模式: cordovacordova-native

默认为 cordova,如果未明确配置适配器类型,并且存在 window.cordova,则适配器会自动选择。登录时,它会打开一个 InApp 浏览器,允许用户与红帽构建的 Keycloak 交互,之后通过重定向到 http://localhost 来返回到应用程序。由于此行为,您可以在 Admin Console 的客户端配置部分中将此 URL 列为有效的 redirect-uri。

虽然这个模式易于设置,但也有一些缺点:

  • InApp-Browser 是嵌入在应用程序中的浏览器,不是手机的默认浏览器。因此,它具有不同的设置,存储的凭据将不可用。
  • InApp-Browser 可能也较慢,特别是在渲染更复杂的主题时。
  • 在使用此模式前需要考虑安全问题,例如,应用程序可以访问用户的凭证,因为它完全控制浏览器的登录页面,因此不允许其在不受信任的应用程序中使用。

备用模式是"cordova-native",采用不同的方法。它使用系统浏览器打开登录页面。用户通过身份验证后,浏览器使用特殊 URL 重定向到应用。从那里,红帽构建的 Keycloak 适配器可以通过从 URL 读取代码或令牌来完成登录。

您可以通过将适配器类型 cordova-native 传递给 init () 方法来激活原生模式:

await keycloak.init({
    adapter: 'cordova-native'
});
Copy to Clipboard Toggle word wrap

这个适配器需要两个额外的插件:

链接到应用程序的技术详情因每个平台而异,需要特殊设置。如需了解更多信息,请参阅 deeplinks 插件文档中的 Android 和 iOS 部分。

对于打开应用程序,存在不同类型的链接:

虽然前者更容易设置,而且往往能够更可靠地工作,但后者会提供额外的安全性,因为它们是唯一的,并且只有域的所有者才能注册它们。custom-URLs 在 iOS 中已弃用。为获得最佳可靠性,我们建议您将通用链接与使用 custom-url 链接的回退站点结合使用。

另外,我们建议以下步骤来提高与适配器的兼容性:

  • iOS 上的通用链接看似可以更可靠地工作,并将 response-mode 设置为 query
  • 要防止 Android 在重定向时打开一个新的应用程序实例,请在 config.xml 中添加以下片断:
<preference name="AndroidLaunchMode" value="singleTask" />
Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat