[SSO] CAS 클라이언트 (4) - 샘플 프로젝트 : 두 개의 Client 로그인 테스트
이전 글에서는 Client에서 Cas 인증 서버로 Redirect 한 뒤 인증처리가 되는 것을 확인했다.
하나의 Client가 잘 동작하는 것은 확인 했다.
이제 하나의 Client에서 인증이 완료 됐을 때, 다른 Client에서도 인증이 되는지 확인해 볼 필요가 있다.
프로젝트를 하나 더 만들어도 되지만 어차피 거의 똑같은 구조이기에 PORT 만 변경해서 Client 가 실행될 수 있도록
Cas 인증 서버 프로젝트와 Client 프로젝트를 수정해보자.
Cas 인증서버 프로젝트
Cas 인증서버에서는 JSON 파일 하나만 추가하면 된다.
그리고 실행 시켜보자.
새로 추가한 Client도 등록이 된 것을 확인할 수 있다.
Client 프로젝트
application.properties 파일에 server.port를 다음과 같이 수정하자.
server.port=${PORT:9000}
환경 변수로 PORT를 사용하고 입력하지 않았을 경우에 '9000' 을 사용하는 설정이다.
CasClientConfiguration 파일에 다음과 같이 추가하자.
@Value("${server.port}")
String port;
그리고 ServiceProperties, CasAuthenticationProvider Bean을 등록할 때 하드코딩 해놨던 포트 번호를 @Value로 추가한 port 변수로 변경한다.
@Bean
public ServiceProperties serviceProperties() {
ServiceProperties serviceProperties = new ServiceProperties();
serviceProperties.setService("http://localhost:"+port+"/login/cas");
serviceProperties.setSendRenew(false);
return serviceProperties;
}
@Bean
public CasAuthenticationProvider casAuthenticationProvider() {
CasAuthenticationProvider provider = new CasAuthenticationProvider();
provider.setServiceProperties(serviceProperties());
provider.setTicketValidator(ticketValidator());
provider.setUserDetailsService(
s -> new User("kennen", "Mellon", true, true, true, true,
AuthorityUtils.createAuthorityList("ROLE_ADMIN")));
provider.setKey("CAS_PROVIDER_LOCALHOST_"+port);
return provider;
}
설명에서는 하드코딩으로 설정해놨지만 실제 소스는 Properties를 사용한다.
이제 Terminal 에서 실행시켜보자.
포트 9000
$ mvn spring-boot:run -DPORT=9000
포트 9100
$ mvn spring-boot:run -DPORT=9100
포트가 다른 Client 두개가 잘 실행됐다.
9100 포트로 실행된 클라이언트에서 로그인을 시도해보자.
로그인이 잘 성공되면, 9000번 포트로 실행한 Client의 URL Path를 /secured 로 변경해보자.
위 이미지 처럼 9000번 포트의 Client에서는 로그인을 하지 않았지만 /secured 에 대한 응답을 확인할 수 있다.
다음 글에서는 Client의 로그아웃을 설정하고 Single Sign On의 로그아웃 버전인 Single Sign Out을 설정해보자.