【发布时间】:2020-12-07 15:50:11
【问题描述】:
在 Keycloak 中创建身份提供者 (IdP) 时,有一个选项可用于将查询参数转发到外部 IdP。我该如何使用它?
我想将 launch 参数转发给外部 IdP。我在 Keycloak 配置页面的Forwarded Query Parameters 字段中提到了launch。我在我的locahost:9090 上使用受 Keyclaok 保护的应用程序。当我访问http://localhost:9090?launch=abc 时,此参数不会转发到外部 IdP。我将 keycloak-spring-boot-starter 用于我们的 Spring Boot 应用程序。
同样来自code of Keycloak,我看到转发参数附加了一些前缀,即client_request_param_,所以我尝试使用http://localhost:9090?client_request_param_launch=abc,但没有运气。
AuthorizationEndpoint.LOGIN_SESSION_NOTE_ADDITIONAL_REQ_PARAMS_PREFIX = client_request_param_
String forwardParameterConfig = getConfig().getForwardParameters() != null ? getConfig().getForwardParameters(): "";
List<String> forwardParameters = Arrays.asList(forwardParameterConfig.split("\\s*,\\s*"));
for(String forwardParameter: forwardParameters) {
String name = AuthorizationEndpoint.LOGIN_SESSION_NOTE_ADDITIONAL_REQ_PARAMS_PREFIX + forwardParameter.trim();
String parameter = request.getAuthenticationSession().getClientNote(name);
if(parameter != null && !parameter.isEmpty()) {
uriBuilder.queryParam(forwardParameter, parameter);
}
}
P.S:我使用的是 Keycloak 7.0.0。
【问题讨论】:
标签: oauth keycloak openid-connect identity