使用Keycloak实现安全的SpringBoot微服务,2024年最新nginx在微服务架构的作用
总的来说,面试是有套路的,一面基础,二面架构,三面个人。最后,小编这里收集整理了一些资料,其中包括面试题(含答案)、书籍、视频等。希望也能帮助想进大厂的朋友一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!)、书籍、视频等。希望也能帮助想进大厂的朋友*
注意:我们需要clientId作为admin-cli,这由keycloak提供的所有默认客户端ID,用于实现keycloak为admin提供的REST端点,
REST API实现
使用REST端点在域中创建用户有几个步骤:
1.创建用户:
第1步:通过getInstance()方法使用主管理员的详细信息创建实例
Keycloak kcMaster = Keycloak.getInstance(serverUrl, masterRealm, masterUsername, masterPassword, masterClientId);
第2步:在UserRepresentation中设置用户数据
private String userName;
private String firstName;
private String lastName;
private String email;
private String password;
private String companyName;
密码映射到CredentialRepresentation。您必须强制用户在首次登录时通过以下代码更改密码:
credential.setTemporary(isTempPassword);
and user.setRequiredActions(Arrays.asList(ACTION_UPDATE_PASSWORD));
最后,您所要做的就是在给定领域中调用createUser:
kcMaster.realm(request.getCompanyName()).users().create(user);
由于Keycloak拥有自己的数据库,因此新创建的用户信息存储在表中:user_entity
恭喜!您刚刚使用REST端点在Keyclaok中创建了一个用户。
2.用户登录访问和刷新令牌
现在遇到一个重大挑战:将用户登录到您的应用程序中
Keycloak根据您在Keycloak中配置客户端的方式提供了几种获取访问令牌的方法。Keycloak为您提供AccessTokenResponse,它是一个基于JWT的令牌,包含访问令牌,刷新令牌和这些属性的相关信息。
@PostMapping(path = “/login”, consumes = APPLICATION_JSON_VALUE, produces = APPLICATION_JSON_VALUE)
public AccessTokenResponse getToken(@RequestBody Map<String, Object> credentials) {
Keycloak kc = Keycloak.getInstance(serverUrl,
(String credentials.get(“company”),
(String) credentials.get(“username”),
(String) credentials.get(“password”),
(String) credentials.get(“clientId”));
return kc.tokenManager().getAccessToken();
}
您可以重新检查详细数据,该数据嵌入了jwt.io上的访问令牌
Keycloak with Spring
Keycloak知道自己的API与应用程序的交互,并为愿意与Keycloak通信的应用程序提供适配器。它已经为Javascript,NodeJs应用程序,WildFly / EAP和Spring Boot提供了适配器。Spring-boot的keycloak依赖(源代码)
关于安全配置:
如果您是后端开发人员而且您正在使用Spring,并且您必须处理与安全相关的任务,那么您肯定使用Spring Security。好吧,有一个好消息:有一个Keycloak Spring安全适配器,它包含在Spring Boot keycloak starter中。
如果您使用过Spring Security,那么您可能知道SecurityConfig类扩展了WebSecurityConfigurerAdapter。这是为创建WebSecurityConfigurer实例提供了方便的基类,并且任何使用Spring Security的应用程序都需要它。Keycloak在WebSecurityConfigurerAdapter上提供了一个包装类,名为KeycloakWebSecurityConfigurerAdapter。
现在让我们看看如何将Spring Security和Keycloak结合在一起。
添加Spring Security Starter
首先,我们需要在pom.xml中添加spring-boot-starter-security工件来获取Spring Security库:
org.springframework.boot
spring-boot-starter-security
创建SecurityConfig类
@Configuration
@EnableWebSecurity
@ComponentScan(basePackageClasses = KeycloakSecurityComponents.class)
public class SecurityConfig extends KeycloakWebSecurityConfigurerAdapter {
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
KeycloakAuthenticationProvider keycloakAuthenticationProvider = keycloakAuthenticationProvider();
keycloakAuthenticationProvider.setGrantedAuthoritiesMapper(new SimpleAuthorityMapper());
auth.authenticationProvider(keycloakAuthenticationProvider);
}
@Bean
public KeycloakConfigResolver KeycloakConfigResolver() {
return new KeycloakSpringBootConfigResolver();
}
@Bean
@Override
protected SessionAuthenticationStrategy sessionAuthenticationStrategy() {
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。





既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
总结
总的来说,面试是有套路的,一面基础,二面架构,三面个人。
最后,小编这里收集整理了一些资料,其中包括面试题(含答案)、书籍、视频等。希望也能帮助想进大厂的朋友


一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
)、书籍、视频等。希望也能帮助想进大厂的朋友**
[外链图片转存中…(img-XPn0kIhA-1712809350367)]
[外链图片转存中…(img-Bx0P08xE-1712809350367)]
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-Pic5Oc7C-1712809350368)]
更多推荐
所有评论(0)