반응형
2022.08.10 - [OpenSource/keycloak] - keycloak quick start
springboot 연동은 gradle을 사용했다.
build.gradle에 아래와 같이 디펜던시 설정을 넣어주면 된다.
주석 2개 되어있는 부분 참고!
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-webflux'
// https://mvnrepository.com/artifact/org.keycloak/keycloak-spring-boot-starter
implementation group: 'org.keycloak', name: 'keycloak-spring-boot-starter', version: '19.0.1'
// https://mvnrepository.com/artifact/org.keycloak.bom/keycloak-adapter-bom
implementation group: 'org.keycloak.bom', name: 'keycloak-adapter-bom', version: '19.0.1', ext: 'pom'
implementation 'org.springframework.boot:spring-boot-starter-security'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'io.projectreactor:reactor-test'
}
그리고 keycloak.json요런걸 만들어서 키클록 정보를 넣어주던지 아니면 application.yml에 아래와 같이 설정하면 된다.
keycloak:
realm: king-account
# client
resource: kaas-local
# keycloak URL
auth-server-url: http://localhost:8080
ssl-required: external
credentials:
secret: 9J0msTzyRbtIcs8s4wRCDFmfbR31Abㅋㅋ
use-resource-role-mappings: true
server:
port: 8081
그리고 main쪽에 KeycloakConfigResolver Bean을 하나 만들어준다.
@SpringBootApplication
public class KeycloakAccountApplication {
public static void main(String[] args) {
SpringApplication.run(KeycloakAccountApplication.class, args);
}
@Bean
public KeycloakConfigResolver KeycloakConfigResolver() {
return new KeycloakSpringBootConfigResolver();
}
}
해당 클래스를 확인해보면 스프링시큐리티을 해보았다면 어라? 많이 본 내용인데? 라고 할 것이다.
@KeycloakConfiguration
public class KeycloakConfig extends KeycloakWebSecurityConfigurerAdapter {
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
KeycloakAuthenticationProvider keycloakAuthenticationProvider = keycloakAuthenticationProvider();
keycloakAuthenticationProvider.setGrantedAuthoritiesMapper(new SimpleAuthorityMapper());
auth.authenticationProvider(keycloakAuthenticationProvider);
}
@Override
@Bean
protected SessionAuthenticationStrategy sessionAuthenticationStrategy() {
return new RegisterSessionAuthenticationStrategy(buildSessionRegistry());
}
@Bean
protected SessionRegistry buildSessionRegistry() {
return new SessionRegistryImpl();
}
@Override
protected void configure(HttpSecurity http) throws Exception
{
super.configure(http);
http
.authorizeRequests()
.anyRequest().authenticated();
}
}
이제 controller를 하나 만들어주고 기동시켜보면 된다.
@RestController
public class HelloController {
@GetMapping("/hello")
public String helloworld() {
return "hello world";
}
}
기동 후 아래의 url로 컨트롤러에 접근하여 보자!
http://localhost:8081/hello
아래처럼 로그인 창이 뜬다. 굿!
유저 teri.epi를 생성했기 때문에 패스워드를 치고 들어가면 아래와 같이 헬로우 월드를 볼수가 있다.
끝~
반응형
'OpenSource > keycloak' 카테고리의 다른 글
keycloak quick start (0) | 2022.08.10 |
---|