我正在使用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
。
答案 0 :(得分:0)
自我回答:
TLDR:否,需要DYI
否,在当前(4.0.0)版本的keycloak库中是不可能的,因为org.keycloak.jaxrs.JaxrsBearerTokenFilterImpl
方法中的filter
实例化了org.keycloak.adapters.BearerTokenRequestAuthenticator
,该实例仅查找HTTP标头{{1 }}。
使用其他策略需要自定义该部分,但是不存在这样的设置。
到目前为止,使用cookie的唯一方法似乎是DYI(这需要重载Authorization
方法并用自定义类替换filter
)。