You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在KeyCloak 22.0.1自定义认证器中访问PAR请求?

在KeyCloak 22.0.1自定义认证器中访问PAR请求内容

核心逻辑

PAR(Pushed Authorization Request)的请求数据会被KeyCloak关联到当前用户的认证会话中,你可以通过AuthenticationFlowContext拿到认证会话实例,进而提取PAR相关的请求参数。

具体实现代码

在authenticate(AuthenticationFlowContext context)方法中,按以下步骤获取PAR请求内容:

  1. 获取当前认证会话对象
AuthenticationSessionModel authSession = context.getAuthenticationSession();
  1. 提取PAR请求返回的request_uri标识
String requestUri = authSession.getClientNote(OAuth2Constants.REQUEST_URI);
  1. 获取PAR请求中的原始参数(如scope、client_id等)
    KeyCloak会将PAR的完整请求以JSON字符串形式存在会话的authNotes中,键为PAR_REQUEST,你可以解析这个JSON获取具体参数:
String parRequestJson = authSession.getAuthNote("PAR_REQUEST");
// 用Jackson解析JSON示例
ObjectMapper mapper = new ObjectMapper();
Map<String, Object> parRequestParams = mapper.readValue(parRequestJson, new TypeReference<Map<String, Object>>() {});
// 读取具体参数,比如scope
String scope = (String) parRequestParams.get(OAuth2Constants.SCOPE);

补充说明

  • 如果需要在认证流程的其他阶段(比如action方法)获取PAR请求,同样可以通过AuthenticationFlowContext获取AuthenticationSessionModel来提取数据。
  • 确保自定义认证器所在的流程是PAR触发的授权流程的一部分,否则会话中不会存在PAR相关的存储数据。
  • PAR_REQUEST是KeyCloak 22.0.1中存储PAR请求的内部键名,后续版本可能有变更,建议结合对应版本的源码确认。

内容的提问来源于stack exchange,提问作者Gil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 23:43:14