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


Keycloak 支持使用 Apache Cordova 开发的混合移动应用。JavaScript 适配器有两种模式: cordova 和 cord ova -native:

默认为 cordova,如果尚未配置任何适配器类型且有 window.cordova,则适配器将自动选择。登录后,它将打开一个 InApp Browser,允许用户与 Red Hat Single Sign-On 交互,然后通过重定向到 http://localhost 来返回应用程序。因此,您必须在 Admin Console 的客户端配置部分中将此 URL 列为有效的 redirect-uri。

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

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

使用此示例应用程序帮助您开始使用 :https://github.com/keycloak/keycloak/tree/master/examples/cordova

替代模式 cordova-native 采用不同的方法。它使用系统浏览器打开登录页面。用户通过身份验证后,浏览器使用特殊 URL 重新重定向到应用。在那里,Red Hat Single Sign-On 适配器可以通过从 URL 读取代码或令牌来完成登录。

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

keycloak.init({
    adapter: 'cordova-native'
})

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

链接到每个平台上的应用程序的技术详情需要特殊设置。有关更多说明,请参阅 deeplinks 插件文档中的 Android 和 iOS 部分。

打开应用程序的不同链接:自定义方案(例如 myapp://loginandroid-app://com.example.myapp/https/example.com/login)和 Universal Links (iOS)/ Deep Links (Android)。虽然前者易于设置,并且通常更可靠地工作,但以后会提供额外的安全性,因为它们是唯一的,并且只有域的所有者可以注册它们。在 iOS 上已弃用 custom-URL。我们建议您使用通用链接,将回退站点与 custom-url 链接结合使用,以获得最佳可靠性。

另外,我们推荐以下步骤提高与 Keycloak 适配器的兼容性:

  • iOS 上的通用基础镜像看似更可靠地使用 response-mode 设置为 查询
  • 要防止 Android 在重定向上打开应用程序新实例,请将以下代码片段添加到 config.xml 中:
<preference name="AndroidLaunchMode" value="singleTask" />

有一个 app 示例,它演示了如何使用 native-mode: https://github.com/keycloak/keycloak/tree/master/examples/cordova-native

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部