没有浏览器的 Keycloak OpenID 客户端

Posted

技术标签:

【中文标题】没有浏览器的 Keycloak OpenID 客户端【英文标题】:Keycloak OpenID Client without browser 【发布时间】:2020-11-18 03:12:36 【问题描述】:

有问题

我有一个在生产环境中工作的 Keycloak,我需要我的用户登录一个移动应用程序,该应用程序是使用该 Keycloak 使用本机反应开发的。到目前为止,我通过应用内浏览器作为 AppAtuh 使用正常的登录流程,但现在我收到了用户的请求,在登录时在应用中说。

我尝试过的

我使移动登录的 Keycloak 主题与移动应用 UI 非常相似,以至于可以使用 react WebView 作为普通屏幕打开它。

在纸面上,这个想法可行,但在现实生活中,我无法利用放置的 Keycloak ID cookie。因此,每当 WebView 打开时,都会生成一个带有 cookie 的新会话。没用。

我开始自己从移动应用程序内部调用 keycloak 端点。这不是一件容易的事,因为我已经完成了 OTP 配置,因此某些端点无法正常工作。

其次,这个想法适用于像login这样的简单过程,但不适用于registrationreset-password。这只是一个例子。我的 Kecloak 确实有一个 Authenticators 列表,它使用 phoneNumber 和一些 cookie 登录。

规格

我正在使用 Keycloak 10(一年前从 keycloak 6 开始) 移动应用程序是使用 React Native 和 Expo 开发的。第一个登录流程是使用库Expo AppAuth,第二个是React native WebView

【问题讨论】:

【参考方案1】:

你读过that吗?我认为您应该考虑将Custom URI scheme 用于您的 Keycloak OpenID Connect 客户端并使用默认手机浏览器。 This 也可能会有所帮助。

【讨论】:

嗨。我浏览了所有这些链接,并说明了实际已经实施的内容。现在,我希望用户不要通知我们正在使用浏览器 我检查了 Audible 的 android 登录页面,这与我想要实现的想法相同。请作为示例检查它 正如您所提到的,由于 OTP、cookie 的新会话和其他事情,存在一些问题,因此如果您希望 Keycloak 工作,您需要使用浏览器或类似 Custom Tabs 的东西。我检查了 Audible,也许它类似于 Trusted Web Activity?

以上是关于没有浏览器的 Keycloak OpenID 客户端的主要内容,如果未能解决你的问题,请参考以下文章

Keycloak 公开与机密客户

在 Keycloak 中使用 OpenID Connect 的两个用例有啥区别? (客户端与应用程序)

Keycloak 客户端没有可用于访问类型公共的秘密

使用 jumbojett/OpenID-Connect-PHP 库的 KeyCloak 身份验证流程

无法使用 openid_client 通过带有 keycloak 的 pkce Flutter 应用程序进行身份验证

keycloak~自定义登出接口