Bra*_*mon 5 java servlet-filters apache-spark openid-connect keycloak
我们正在尝试将KeycloakOIDCFilter其用作 Apache Spark UI 过滤器。然而,我们正在努力配置它KeycloakOIDCFilter本身。
我们在spark-defaults.conf中有:
spark.ui.filters=org.keycloak.adapters.servlet.KeycloakOIDCFilter
Run Code Online (Sandbox Code Playgroud)
该过滤器已成功获取,并且 Spark 主日志显示此过滤器已应用于所有 URL 路由。
我们已经在 Keycloak 管理控制台中生成了一个客户端配置文件,该文件已生成一个keycloak-oidc.json.
但我们如何讲述KeycloakOIDCFilter这些信息呢?
来自 Spark文档
还可以通过设置
spark.<class name of filter>.param.<param name>=<value>以下形式的配置条目在配置中指定过滤器参数:Run Code Online (Sandbox Code Playgroud)spark.ui.filters=com.test.filter1 spark.com.test.filter1.param.name1=foo spark.com.test.filter1.param.name2=bar
在我们的例子中,这似乎是:
spark.org.keycloak.adapters.servlet.KeycloakOIDCFilter.param.<name>=<value>
Run Code Online (Sandbox Code Playgroud)
但是,KeycloakOIDCFilter Java 类只有两个构造函数。一种根本不带任何参数,一种带KeycloakConfigResolver.
Keycloak Java servlet 过滤器适配器文档仅讨论web.xml在配置 Spark 的情况下不适用的内容。
那么我们如何正确配置/指向KeycloakOIDCFilterservlet 过滤器的参数呢?
更新:我们已经确定spark.org.keycloak.adapters.servlet.KeycloakOIDCFilter.param.keycloak.config.file可用于指向配置文件,但Spark 似乎不使用 SessionManager,从而导致可能无法解决的单独错误。
我还没有测试该解决方案,但是根据您引用的 Keycloak 和 Spark 文档以及KeycloakOIDCFilter的源代码,假设您在文件系统中使用文件,以下配置可以工作:
spark.ui.filters=org.keycloak.adapters.servlet.KeycloakOIDCFilter
spark.org.keycloak.adapters.servlet.KeycloakOIDCFilter.param.keycloak.config.file=/path/to/keycloak-oidc.json
Run Code Online (Sandbox Code Playgroud)
或者,如果您的配置可作为 Web 应用程序资源通过 访问,getServletContext().getResourceAsStream(...)而不是文件:
spark.ui.filters=org.keycloak.adapters.servlet.KeycloakOIDCFilter
spark.org.keycloak.adapters.servlet.KeycloakOIDCFilter.param.keycloak.config.path=/WEB-INF/keycloak-oidc.json
Run Code Online (Sandbox Code Playgroud)
请注意,它们表明过滤器参数也可以在配置中指定:afaik,这并不意味着过滤器应该有任何特殊的构造函数或类似的东西。
此配置由以下命令执行addFilters:
spark.ui.filters=org.keycloak.adapters.servlet.KeycloakOIDCFilter
spark.org.keycloak.adapters.servlet.KeycloakOIDCFilter.param.keycloak.config.file=/path/to/keycloak-oidc.json
Run Code Online (Sandbox Code Playgroud)
并添加过滤器:
spark.ui.filters=org.keycloak.adapters.servlet.KeycloakOIDCFilter
spark.org.keycloak.adapters.servlet.KeycloakOIDCFilter.param.keycloak.config.path=/WEB-INF/keycloak-oidc.json
Run Code Online (Sandbox Code Playgroud)
JettyUtilsSpark UI源代码中类中的方法。
| 归档时间: |
|
| 查看次数: |
734 次 |
| 最近记录: |