728x90
반응형
1. 서론
- 오늘은 어제에 이어서 두번째 앱을 구성해보겠습니다.
2. 본론
- 스프링 OAuth Client Thymeleaf-2를 사용하였습니다. 이전 포스팅에서 첫번째 앱을 구성한 것과 비슷한 설정을 가져갈 것입니다.
2.1 application.yml
spring:
security:
oauth2:
client:
registration:
custom:
client-id: ssoClient-2
client-secret: ssoClientSecret-2
scope: read,write
authorization-grant-type: authorization_code
redirect-uri: http://localhost:8084/ui-two/login/oauth2/code/custom
provider:
custom:
authorization-uri: http://localhost:8083/auth/realms/baeldung/protocol/openid-connect/auth
token-uri: http://localhost:8083/auth/realms/baeldung/protocol/openid-connect/token
user-info-uri: http://localhost:8083/auth/realms/baeldung/protocol/openid-connect/userinfo
user-name-attribute: preferred_username
thymeleaf:
cache: false
cache:
type: NONE
server:
port: 8084
servlet:
context-path: /ui-two
logging:
level:
org.springframework: INFO
resourceserver:
api:
url: http://localhost:8081/sso-resource-server/api/foos/
- 두번째 앱은 당연하지만 첫번째 앱과 다른 client_id, client_secret and redirect_uri을 가지고 있습니다.
- 당연히 포트 또한 다르기 때문에 첫번째 클라이언트 앱과 병렬적으로 실행할 수 있습니다.
- 마무리로 클라이언트앱-1 과 비슷하지만 약간 다른 설정으로 프론트엔드를 구성해볼 것입니다.
2.2 SSO 테스트해보기
- 대망의 테스트 흐름입니다.
- 4개의 앱을 모두 기동해봅시다.(인증서버, 리소스서버, 클라이언트 앱 2개)
- 브라우져를 열고, client-1 앱(8082포트)을 기동해봅시다. -> http://localhost:8082/ui-one/
- 간단히 로그인 하라는 버튼 하나만 있을 것입니다. 눌러주면
- 인증페이지(8083포트)로 갑자기 이동되면서 다음과 같은 화면이 보일 것입니다.
- 이제 위의 url을 자세히 뜯어보는 시간을 가져봅시다.
http://localhost:8083/auth/realms/baeldung/protocol/openid-connect/auth
?response_type=code
&client_id=ssoClient-1
&scope=read%20write
&state=Xrcx1_SYgrcl6qN4zVLyKrTaDpj5owH9vkleTvZ6rsQ%3D
&redirect_uri=http://localhost:8082/ui-one/login/oauth2/code/custom
- 음.. 다 application.yml 에 있었던 코드 같은데요. state는 무슨 정보인지 잘 모르겠습니다. 나머지는 다 있는 정보같네요.
- 미리 등록되어있는 정보 id : john@test.com / 123 을 입력하여 로그인해봅시다.
- 다음에 다른 탭을 열어서 클라이언트-2 를 실행시켜주고, 로그인 버튼을 눌러봅시다!
- 신기하게도 Foo 정보가 인증을 거치지 않고 보일 것입니다.
- 반대로도 마찬가지입니다. 유저 로그가 2번째에 먼저 남아있으면, 1번째 것도 인증 없이 통과됩니다.
3. 결론
이 튜토리얼에서는 Spring Security OAuth2 와 Keycloak을 아이디 provider로 이용한 스프링 부트 프로젝트로 구현해보는 실습을 가졌습니다.
728x90
반응형
'Dev > SpringBoot' 카테고리의 다른 글
22. [SpringBoot] 스프링부트 spring security 완전 기초 예제 (0) | 2020.10.04 |
---|---|
21. [SpringBoot] 간단하게 비밀번호 암호화해보기 (2) | 2020.10.01 |
19. [SpringBoot] 버전 걱정 없는 SSO 구현 번역해보기 - 1 (0) | 2020.09.21 |
18. [SpringBoot] 환경설정별로 다르게 실행해보자 (0) | 2020.09.09 |
17. [SpringBoot] 스프링부트 카카오 로그인하기 구현(따라치기만하면됨)(2) (1) | 2020.07.24 |