当前位置: 首页 > 科技观察

KeycloakSpringSecurity适配常用配置

时间:2023-03-12 23:00:57 科技观察

在上一篇Keycloak系列文章中,我们成功适配了Keycloak与SpringSecurity,其中使用了一个keycloak.json配置。它包含了很多属性,我觉得在深入学习Keycloak的过程中有必要和大家一起学习。Keycloak适配器常用属性SpringSecurity集成Keycloak适配器时需要引入一些额外的配置属性。一般我们会把它配置到SpringBoot的配置文件中。realmKeycloak域名,必填项。资源申请的client_id,在Keycloak服务器上注册的每个客户端都有唯一的标识。这是必须的。领域公钥,PEM格式realm-public-key,不推荐客户端配置。每次KeycloakAdapter都会自动拉取它。auth-server-urlKeycloak服务器的基本地址,格式一般是https://host:port/auth,这个是必须的。ssl-requiredKeycloak服务器通信使用的HTTPS范围是可选的,共有三个选项:external,默认值,表示所有外部请求都必须使用HTTPS。all,顾名思义,全部使用HTTPS。无,禁用HTTPS。confidential-portKeycloak服务器的安全端口,默认8443。如果use-resource-role-mappings设置为true,KeycloakAdapter会检查token携带的用户角色是否与资源一致;否则,它将查询用户在领域中的角色。默认为假。如果public-client设置为true,则客户端无需配置密码,否则需要配置keycloak.credentials.secret。secret的生成方法是在Keycloak控制台修改相应客户端设置选项的访问类型为机密,然后在安装时查看相应的配置项。当访问类型不机密时,该值为false。enable-cors启用跨域(cors)支持。可选,默认false。如果设置为true,将激活以cors-开头的配置项。这些配置项并不啰嗦,都是常见的跨域配置项。bearer-only对于服务,这应该设置为true。如果启用,适配器将不会尝试对用户进行身份验证,而只会验证持有者令牌。如果用户在请求资源的时候没有携带BearerToken,就会是401,这个是可选的。默认值为假。autodetect-bearer-only如果你的应用不仅是web应用,而且还提供API服务(现在一般是RestfulService),开启这个配置后,Keycloak服务器会比较“智能”的引导未授权用户通过请求头去登录页面仍然返回401状态。比仅承载更智能。enable-basic-auth为适配器启用基本身份验证,如果启用,则必须提供密码。默认为假。expose-tokenJavaScriptCORS请求用于通过根路径下的/k_query_bearer_token向服务器获取token。它似乎被nodejs相关的后端应用程序使用。折腾了半天也没调用成功。credentials当客户端的访问类型为Confidential时,需要配置一个客户端token。目前支持secret和jwt类型。参考public-client中的说明。综上所述,上面列出了大部分常用的属性,后面的属性暂时与自定义Keycloak服务器无关。Keycloak的其余配置项可以在KeycloakJava适配器配置项[1]中查看。在下一篇文章中,我将对KeycloakSpringSecurity的认证授权流程进行分析。参考资料[1]KeycloakJava适配器配置项:https://www.keycloak.org/docs/latest/securing_apps/index.html#_java_adapter_config二维码关注。转载本文请联系码农小胖公众号。