[Aribnb] SpringSecurity와 OAuth2.0으로 로그인 기능 구현하기 1

장수현·2021년 11월 1일
0

에어비앤비

목록 보기
11/15

🔵 SpringSecurity

인증(Authentication)과 인가(Authorization - 권한 부여) 기능을 가진 프레임워크

  • 스프링 기반의 애플리케이션에서는 보안을 위한 표준이다.
  • 확장성이 좋다.

5.1 스프링 시큐리티와 스프링 시큐리티 OAuth2 클라이언트

Spring-Security-oauth2-autoconfigure 라이브러리를 사용할 경우 스프링부트2에서도 1.5에서 쓰던 설정을 그대로 사용할 수 있다.

  • 스프링부트2.0 방식에서는 client 인증 정보만 입력하면 됩니다.
  • CommonOAuth2Provider라는 enum이 새롭게 추가되어 구글, 깃허브, 페이스북, 옥타의기본 설정값은 모두 여기서 제공한다.
  • 이외에 다른 소셜 로그인(네이버, 카카오 등)을 추가한다면 직접 다 추가해주어야 한다.

5.2 구글 서비스 등록

  • 구글 클라우드 플랫폼에서 프로젝트 생성 뒤 'src/main/resources/' 패키지에 application-oauth.properties 파일을 생성한다.
    - 해당 파일에 클라언트 ID와 클라이언트 보안 비밀 코드를 등록한다.

application-oauth.properties

spring.security.oauth2.client.registration google.client-id=클라이언트 ID
spring security.oauth2.client.registration.google.client-secret=클라이언트 보안 비밀
spring.security.oauth2.client.registration.google.scope=profile, email

  • scope(범위)= profile, email을 강제로 등록한 이유는
    1. scope의 기본값이 profile, email, openId인데 'openId'가 있으면 Open Id Provider로 인식한다.
    2. 그렇게 되면 Open Id Provider(구글)과 그렇지 않은 서비스(네이버 등)로 나눠서 OAuth2Service를 각각 만들어야 한다.
    3. 따라서 하나의 OAuth2Service로 사용하기 위하여 일부러 openId Scope을 빼고 등록한다.
  • 스프링 부트에서는 properties의 이름을 application-XXX.properties로 만들면 XXX라는 이름의 profile이 생성되어 이를 통해 관리할 수 있다.
    - 즉, profile = XXX 라는 식으로 호출하면 해당 properties의 설정들을 가져올 수 있다.
    - application.propertiex에 spring.profiles.include = oauth를 추가한다.
  • application-ouath.properties에는 보안이 필요한 정보가 들어가므로 gitignore에 추가해준다.

0개의 댓글