【发布时间】:2020-07-16 09:25:46
【问题描述】:
我们正在评估将 jxBrowser 集成到我们的桌面解决方案中,以使用 IDP (Keycloak) 处理身份验证。
在此集成中,我们希望支持 Kerberos 身份验证,为此我们需要支持 SPNEGO。
这是 jxBrowser 支持的吗?否则是否在路线图上?
【问题讨论】:
我们正在评估将 jxBrowser 集成到我们的桌面解决方案中,以使用 IDP (Keycloak) 处理身份验证。
在此集成中,我们希望支持 Kerberos 身份验证,为此我们需要支持 SPNEGO。
这是 jxBrowser 支持的吗?否则是否在路线图上?
【问题讨论】:
在 JxBrowser 中,您可以配置 HTTP 服务器授权白名单,该白名单以逗号/分号分隔的 URL 列表表示字符串。此功能允许您对列出的域使用集成 Windows 身份验证 (IWA) 和 Kerberos 身份验证。 借助 IWA,Chromium 可以向 Web 服务器或代理验证用户身份,甚至无需提示用户输入用户名或密码。它通过使用在用户最初登录到运行浏览器的机器时建立的缓存凭据来做到这一点。 IWA 仅支持 Negotiate 和 NTLM 挑战。
HttpAuthPreferences.serverWhitelist() 方法允许您指定应将哪些服务器列入白名单以进行集成身份验证。默认情况下,仅当来自代理或此允许列表中的服务器的身份验证质询时才启用集成身份验证。如果未设置此列表,Chromium 引擎将尝试检测服务器是否在 Intranet 上,然后才会响应 IWA 请求。如果服务器被检测为 Internet,则来自它的 IWA 请求将被忽略。
HttpAuthPreferences.delegateWhitelist() 方法指定 Chromium 可以委托给的服务器。如果未设置此列表,即使服务器被检测为 Intranet,Chromium 也不会委派用户凭据。
如果您在列表中指定多个服务器名称,请用逗号分隔它们。允许使用通配符 (*)。
示例
假设 IIS 在 127.0.0.1 上运行。已为服务器启用 NTLM/Negotiate 身份验证。
默认情况下,服务器以 401 Unauthorized 响应。将 127.0.0.1 添加到白名单后,无需任何额外请求即可通过身份验证。
engine.network().httpAuthPreferences().serverWhitelist("http://127.0.0.1");
engine.network().httpAuthPreferences().delegateWhitelist("http://127.0.0.1");
我们尚未使用 Kerberos 身份验证测试此解决方案,因为我们还没有所需的基础架构,但您可以尝试使用此方法来配置服务器并使用使用 Kerberos 身份验证的地址委派白名单。请尝试这种方法,如果有帮助,请告诉我。
【讨论】: