[[415177]]性爱游戏在线观看 Keycloak对流行的Java应用提供了适配器。在系列著作的上一篇咱们演示了针对Spring Boot的安全保护,用的便是适配器的一种。Keycloak相似提供Spring Security的适配器,后续的几篇著作咱们就来共同学习Spring Security适配器的使用。 Keycloak的安设可参考前边的系列教程。 适配器集成 在Spring 应用中咱们集成keycloak-spring-security-adapter: dependencygro

性爱游戏在线观看 Spring Security中使用Keycloak行为认证授权管事器

性爱游戏在线观看 Spring Security中使用Keycloak行为认证授权管事器

 [[415177]]性爱游戏在线观看

Keycloak对流行的Java应用提供了适配器。在系列著作的上一篇咱们演示了针对Spring Boot的安全保护,用的便是适配器的一种。Keycloak相似提供Spring Security的适配器,后续的几篇著作咱们就来共同学习Spring Security适配器的使用。

Keycloak的安设可参考前边的系列教程。

适配器集成

在Spring 应用中咱们集成keycloak-spring-security-adapter:

<dependency>     <groupId>org.keycloak</groupId>     <artifactId>keycloak-spring-security-adapter</artifactId>     <version>15.0.0</version> </dependency> 

在Spring Boot中不错这么集成:

<dependency>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency>     <groupId>org.keycloak</groupId>     <artifactId>keycloak-spring-boot-starter</artifactId>     <version>15.0.0</version> </dependency>        

然后就能期骗Spring Security的特质来集成Keycloak。Keycloak 提供了一个 KeycloakWebSecurityConfigurerAdapter 行为创建WebSecurityConfigurer 实例的便捷基类。咱们不错编写了一个树立类来定制咱们的安全计谋,就像这么:

@KeycloakConfiguration public class SecurityConfig extends KeycloakWebSecurityConfigurerAdapter {     /**      *  注册了一个Keycloak的AuthenticationProvider      */     @Autowired     public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {         auth.authenticationProvider(keycloakAuthenticationProvider());     }      /**      * 界说会话计谋      */     @Bean     @Override     protected SessionAuthenticationStrategy sessionAuthenticationStrategy() {         return new RegisterSessionAuthenticationStrategy(new SessionRegistryImpl());     }      /**      * 常见的Spring Security安全计谋      */      @Override     protected void configure(HttpSecurity http) throws Exception     {         super.configure(http);         http                 .authorizeRequests()                 .antMatchers("/customers*").hasRole("USER")                 .antMatchers("/admin/**").hasRole("base_user")                 .anyRequest().permitAll();     } } 

属目:上头的树立并不可得胜。

树立完上头的然后咱们径直开动应用,成果并不像盼望的那样:

java.io.FileNotFoundException: Unable to locate Keycloak configuration file: keycloak.json 

抛出找不到 keycloak.json文献的异常。Keycloak复旧的每个Java适配器齐不错通过一个简便的JSON文献进行树立,咱们缺失的便是这个文献。

{   "realm" : "demo",   "resource" : "customer-portal",   "realm-public-key" : "MIGfMA0GCSqGSIb3D...31LwIDAQAB",   "auth-server-url" : "https://localhost:8443/auth",   "ssl-required" : "external",   "use-resource-role-mappings" : false,   "enable-cors" : true,   "cors-max-age" : 1000,   "cors-allowed-methods" : "POST, PUT, DELETE, GET",   "cors-exposed-headers" : "WWW-Authenticate, My-custom-exposed-Header",   "bearer-only" : false,   "enable-basic-auth" : false,   "expose-token" : true,   "verify-token-audience" : true,    "credentials" : {       "secret" : "234234-234234-234234"    },     "connection-pool-size" : 20,    "socket-timeout-millis": 5000,    "connection-timeout-millis": 6000,    "connection-ttl-millis": 500,    "disable-trust-manager": false,    "allow-any-hostname" : false,    "truststore" : "path/to/truststore.jks",    "truststore-password" : "geheim",    "client-keystore" : "path/to/client-keystore.jks",    "client-keystore-password" : "geheim",    "client-key-password" : "geheim",    "token-minimum-time-to-live" : 10,    "min-time-between-jwks-requests" : 10,    "public-key-cache-ttl": 86400,    "redirect-rewrite-rules" : {    "^/wsmaster/api/(.*)$" : "/api/$1"    } } 

上头包含的客户端树立属性齐不错在Keycloak驱散台进行树立,见下图:

精品香蕉在线观看视频

树立Keycloak客户端属性性爱游戏在线观看

也便是说咱们需要的json文献和图中的树立项是对应的。比拟东说念主性化的是咱们不需要自行编写这个json文献,Keycloak提供了下载客户端树立的门径,这里我只使用了必要的树立项:

你不错下载客户端json树立

引入客户端树立

固然奏凯拿到json文献,可是加载这个json树立却不太奏凯,经过我的摸索需要收尾一个KeycloakConfigResolver并注入Spring IoC,有底下两种收尾神情。

复用Spring Boot Adapter树立

径直复用Spring Boot的树立风光,先声明Spring Boot的KeycloakConfigResolver收尾:

/**    * 复用spring boot 的门径    *    * @return the keycloak config resolver    */   @Bean   public KeycloakConfigResolver keycloakConfigResolver() {       return new KeycloakSpringBootConfigResolver();   } 

然后复用Spring Boot的application.yaml的树立项:

复用Spring Boot树立项

本来的扮装资源映射不断失效。

自界说收尾

你也不错自界说写剖判,这个时辰json风光依然不时弊了,你不错将json文献的内容存储到任何你擅长的场所。

/**  * 我方写剖判  *  * @return the keycloak config resolver  */ @Bean public KeycloakConfigResolver fileKeycloakConfigResolver() {     return  new KeycloakConfigResolver() {         @SneakyThrows         @Override         public KeycloakDeployment resolve(HttpFacade.Request request) {             // json 文献放到resources 文献夹下             ClassPathResource classPathResource = new ClassPathResource("./keycloak.json");             AdapterConfig adapterConfig = new ObjectMapper().readValue(classPathResource.getFile(), AdapterConfig.class);              return KeycloakDeploymentBuilder.build(adapterConfig);         }     }; } 
扮装定名计谋

Spring Security会为每个扮装添加ROLE_前缀,这需要咱们声明GrantedAuthoritiesMapper的收尾SimpleAuthorityMapper来完成这一功能。Keycloak在KeycloakAuthenticationProvider中树立该功能:

KeycloakAuthenticationProvider authenticationProvider = keycloakAuthenticationProvider();  authenticationProvider.setGrantedAuthoritiesMapper(new SimpleAuthorityMapper()); 
完好意思的树立

applicaiton.yaml:

keycloak: # 声明客户端所在的realm   realm: felord.cn # keycloak授权管事器的地址   auth-server-url: http://localhost:8011/auth # 客户端称号   resource: springboot-client # 声明这是一个公开的客户端,不然不可在keycloak外部环境使用,会403   public-client: true 

这里要聚拢Keycloak导出的json文献树立。

Spring Security树立:

@KeycloakConfiguration public class SecurityConfig extends KeycloakWebSecurityConfigurerAdapter {          /**      * 复用spring boot 的门径      *      * @return the keycloak config resolver      */     @Bean     public KeycloakConfigResolver keycloakConfigResolver() {         return new KeycloakSpringBootConfigResolver();     }     /**      * 我方写剖判      *      * @return the keycloak config resolver      */ //    @Bean     public KeycloakConfigResolver fileKeycloakConfigResolver() {         return request -> {             // json 文献放到resources 文献夹下             ClassPathResource classPathResource = new ClassPathResource("./keycloak.json");             AdapterConfig adapterConfig = null;             try {                 adapterConfig = new ObjectMapper().readValue(classPathResource.getFile(),                          AdapterConfig.class);             } catch (IOException e) {                 e.printStackTrace();             }              return KeycloakDeploymentBuilder.build(adapterConfig);         };     }     /**      *  树立{@link AuthenticationManager}      *  这里会引入Keycloak的{@link AuthenticationProvider}收尾      *      * @param auth the auth      */     @Autowired     public void configureGlobal(AuthenticationManagerBuilder auth) {         KeycloakAuthenticationProvider authenticationProvider = keycloakAuthenticationProvider();         authenticationProvider.setGrantedAuthoritiesMapper(new SimpleAuthorityMapper());         auth.authenticationProvider(authenticationProvider);     }     /**      * 会话身份考证计谋      */     @Bean     @Override     protected SessionAuthenticationStrategy sessionAuthenticationStrategy() {         return new RegisterSessionAuthenticationStrategy(new SessionRegistryImpl());     }     /**      * 树立 session 监听器 保证单点退降奏效      *      * @return the servlet listener registration bean      */     @Bean     public ServletListenerRegistrationBean<HttpSessionEventPublisher> httpSessionEventPublisher() {         return new ServletListenerRegistrationBean<>(new HttpSessionEventPublisher());     }     @Override     protected void configure(HttpSecurity http) throws Exception {         super.configure(http);         http                 .authorizeRequests()                 .antMatchers("/customers*").hasRole("USER")                 .antMatchers("/admin/**").hasRole("base_user")                 .anyRequest().permitAll();     } } 
调用经过

资源客户端springboot-client有一个接口/admin/foo,当未登录调用该接口时会转发到:

http://localhost:8011/auth/realms/felord.cn/protocol/openid-connect/auth?response_type=code&client_id=springboot-client&redirect_uri=http://localhost:8080/sso/login&state=ec00d608-5ce7-47a0-acc8-8a20a2bfadfd&login=true&scope=openid 

输入正确的用户密码后智商获得盼望的成果。

典型的authorazation code flow。

回首

Keycloak整合Spring Security的重点这里需要再梳理一下。在原生情况下,客户端的树立、用户的信息、扮装信息齐由Keycloak认真;客户端只认真扮装和资源的映射谈判。后续会深远并定制Keycloak和Spring Security以旺盛骨子场景需要。

本文转载自微信公众号「码农小胖哥」,不错通过以下二维码暄和。转载本文请关联码农小胖哥公众号。

性爱游戏在线观看



上一篇:性爱游戏在线观看 华翔股份“家电+汽车”双主业架组成型 汽车板块合股公司郑重出发    下一篇:性爱游戏在线观看 3月21日基金净值:鹏华尊泰一年定缔造起式债券最新净值1.0253,涨0.04%    


Powered by 最新四色米奇影视777在线看 @2013-2022 RSS地图 HTML地图

Copyright Powered by站群系统 © 2013-2024