Cookie中的Keycloak令牌,用于JAX-RS过滤器

时间:2018-07-30 07:55:05

标签: authentication jax-rs keycloak

我正在使用keycloak-jaxrs-oauth-client通过Keycloak保护我的REST API。以前的版本是自制的安全性,其中身份验证状态存储在Java会话中。

过滤器需要Authorization: Bearer令牌,该令牌需要用Java语言进行REST API调用处理,直到不再可能的位置为止:JAX-RS REST API公开了用作经典GET的方法浏览器中的请求:用于下载资源的URL,来自数据库的自定义图片等。

AFAIK不可能使浏览器向此类请求添加自定义标头。因此,回退到传统的cookie方法将是一个解决方案。

keycloak-jaxrs-oauth-client标头不存在时,是否有一个参数或包装程序告诉Authorization使用cookie?我在该库的源代码中找不到这样的位置,但是也许我只是对JAX-RS过滤器使用了错误的实现?我当前正在使用org.keycloak.jaxrs.JaxrsBearerTokenFilterImpl

1 个答案:

答案 0 :(得分:0)

自我回答:

TLDR:否,需要DYI

否,在当前(4.0.0)版本的keycloak库中是不可能的,因为org.keycloak.jaxrs.JaxrsBearerTokenFilterImpl方法中的filter实例化了org.keycloak.adapters.BearerTokenRequestAuthenticator,该实例仅查找HTTP标头{{1 }}。

使用其他策略需要自定义该部分,但是不存在这样的设置。

到目前为止,使用cookie的唯一方法似乎是DYI(这需要重载Authorization方法并用自定义类替换filter)。