일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Component
- spring
- DispatcherServlet
- layout #thymeleaf #화면분할
- 스프링 부트
- 스프링
- Bean
- 1
- git #gitlab #github
- autowired
- 오토와이어드
- zepettoworld.com
- Today
- Total
기록과 정리
스프링 부트와 AWS로 혼자 구현하는 웹 서비스 05 본문
이 글은 이동욱(jojoldu)님의 <스프링 부트와 AWS로 혼자 구현하는 웹 서비스> 를 참고하였습니다.
m.yes24.com/Goods/Detail/83849117
또한 해당글에 대한 소스는 github.com/jojoldu/freelec-springboot2-webservice
에서 자세하게 확인 가능합니다.
스프링 시큐리티와 OAuth 2.0으로 로그인 기능 구현하기
많은 서비스에는 로그인 기능이 있습니다. 스프링에는 스프링 시큐리티라는 기능으로 비교적 쉽게 인증 시스템을 구현할 수 있습니다. ( 비교적입니다...)
스프링 시큐리티가 없다면 각 화면마다 session 이라던지 구현의 로직을 설정을 해주어야하고 내가 로그인을 구현하는 건지 프로그램을 만드는 건지하는 배보다 배꼽이 커지는 상황이 발생합니다. 이러한 수고를 조금 덜기 위해서 사용합니다.
또한 스프링 부트에서는 스프링 시큐리티 2.0을 지원합니다. 그리고 스프링 시큐리티와 더불어 OAuth2 연동을 통하여 구글 및 네이버에서 제공하는 OpenAPI를 사용한 로그인 기능을 구현하고 있습니다.
구글 연동
서적과 달리 구글이 조금 업데이트 되었기때문에 책과 내용이 상이할 수 있습니다. 우선 구글 클라우드 플랫폼에 들어가 본인의 프로젝트를 구성합니다.
사용자 인증정보에 '사용자 인증 정보 만들기'라는 버튼이 있습니다. 클릭.
우리는 OAuth 클라이언트 ID를 만들어줍니다.
웹어플리케이션을 선택하겠습니다.
어플리케이션의 이름과 구글 입장에서 요청이 들어오는 URI 를 입력해줍니다.
만들어진 항목을 보면 다음과 같이 클라이언트 ID, 보안 비밀이 보입니다. 이것이 바로 OAuth2.0을 이용하기 위한 key 값입니다.
보안이슈가 있을 수 있으니 Github이나 다른 버전 관리 서버에는 빼놓고 커밋하도록 합시다. ( gitIgnore 사용! )
위와 같은 appliocation-oauth.properties 파일을 생성한 후, 아까 본 클라이언트 ID, 보안 비밀 키를 입력해줍니다. 이 파일은 따로 관리를 하세요. scope 의 경우 profile,email로 관리를 합니다. openid까지 추가 할 경우 Open id Provider로 인식이 되어 그렇지 않은 서비스 ( 카카오/ 네이버) 와 달리 따로 Service를 만들어야 하는 번거로움을 줄이기 위함입니다.
구글 로그인 연동하기
회원을 관리하는 도메인 User Entity를 하나 생성합니다.
권한을 관리하는 Enum Class를 하나 생성합니다.
Oauth2.0을 관리하기 위한 의존성을 추가해줍니다.
커스텀한 시큐리티 설정을 할 수 있는 파일입니다. URL에 따른 권한별 관리 , 권한 대상 지정, 로그아웃 기능 정리, 진입정 설정 등 다양한 설정을 가능하게 해줍니다. OAuth2UserService를 구현하는 것을 중점으로 기억합니다.
인증된 사용자 정보를 넣을 DTO 를 만들어주고 지금은 name , email, picture을 필드로 선언합니다.
컨트롤러 구성시 , @LoginUser라는 커스터마이징한 어노테이션을 사용해서 Session을 불러오고 있다.
실행해보면 화면이 다음과 같다.
로그인 성공했다. 책에서는 Naver 로그인도 구현하고 있다.
'IT > 스프링 부트와 AWS로 혼자 구현하는 웹 서비스' 카테고리의 다른 글
스프링 부트와 AWS로 혼자 구현하는 웹 서비스 07 (0) | 2021.05.24 |
---|---|
스프링 부트와 AWS로 혼자 구현하는 웹 서비스 06 (0) | 2021.04.01 |
스프링 부트와 AWS로 혼자 구현하는 웹 서비스 04 (0) | 2021.03.16 |
스프링 부트와 AWS로 혼자 구현하는 웹 서비스 03 (0) | 2021.03.09 |
스프링 부트와 AWS로 혼자 구현하는 웹 서비스 02 (0) | 2021.03.04 |