目录
一、前言
二、遇到的问题
1、keycloak中配置public访问方式如何配置keycloak
三、解决问题
1、环境说明
2、对应keycloak public访问方式的keycloak配置
a、方案分析
b、方案实践
c、效果
一、前言
keycloak-鉴权quarkus框架_keycloak 配置-CSDN博客
这是之前写的keycloak 鉴权 quarkus 框架的基础配置,基于上篇集成quarkus文章遇到的问题,本文做一个补充。
二、遇到的问题
1、keycloak中配置public访问方式如何配置keycloak
2、keycloak拦截登录后,重定向多次报错,因cookie超长
三、解决问题
1、环境说明
quarkus:3.2.10
keycloak: 18.0.2
2、对应keycloak public访问方式的keycloak配置
#keyCloak鉴权配置
quarkus.oidc.auth-server-url=http://127.0.0.1:8080/realms/user_login
quarkus.oidc.client-id=user_login_client
quarkus.oidc.application-type=web-app
quarkus.oidc.tls.verification=none
3、解决cookie太长的问题
a、方案分析
-
设置
quarkus.oidc.token-state-manager.split-tokens=true
,这将导致 ID 令牌、访问令牌和刷新令牌存储在单独的 cookies 中,从而减少每个 cookie 的大小。 -
如果不需要使用访问令牌作为角色来源、请求 UserInfo 或者将其传播到下游服务,可以设置
quarkus.oidc.token-state-manager.strategy=id-refresh-tokens
。 -
通过设置
quarkus.oidc.token-state-manager.encryption-required=false
来减少会话 cookie 的长度,但只有在你认为在你的应用程序网络中这样做是安全的情况下才应该这么做。 -
注册一个自定义的
quarkus.oidc.TokenStateManager
CDI bean,并将替代优先级设置为 1。
b、方案实践
采取第一种方式,这种方式是将令牌拆分到不同的cookies中,可以避免单个cookie过大。
设置 quarkus.oidc.token-state-manager.split-tokens=true
#keyCloak鉴权配置
quarkus.oidc.auth-server-url=http://127.0.0.1:8080/realms/user_login
quarkus.oidc.client-id=user_login_client
quarkus.oidc.application-type=web-app
quarkus.oidc.tls.verification=none
quarkus.keycloak.policy-enforcer.enable=false
#此处配置即为拆分cookie
quarkus.oidc.token-state-manager.split-tokens=true
c、效果
登录后可以请求到后端数据了。