💚
Naver Login시작 전 Setting ⚙️
Security setting:naver의 경우yml이나properties에서Security설정 필요spring.security.oauth2.client.registration.naver.client-idclient-secret: API Application에서 발급받은 값을 설정redirect-uri: API Application에서 설정한 uri 패턴을 작성authorization-grant-type: authorization_code (code를 통한 인증) 고정scope: 갖고올 필수 값client-name: 우리 서비스 이름provider: API이므로 고정이다. 자세한 변경사항은 검색!# provide spring.security.oauth2.client.provider.naver.authorization-uri=https://nid.naver.com/oauth2.0/authorize spring.security.oauth2.client.provider.naver.token-uri=https://nid.naver.com/oauth2.0/token spring.security.oauth2.client.provider.naver.user-info-uri=https://openapi.naver.com/v1/nid/me spring.security.oauth2.client.provider.naver.user-name-attribute=responseㅤ
- 대략적인 흐름
로그인 uri 생성및 인증값 가져오기
https://nid.naver.com/oauth2.0/authorize?에parameter값으로 지정된 값을 붙여URI을 만들면 네이버가 로그인 페이지를 생성해 준다.
response_type:code로 고정client_id: 발급 받은 값 입력state:CORS를 방지하기 위한 특정 토큰 값(임의 값을 사용한다)redirect_uri: application에 등록해놓은redirect_uri중하나, 로그인 인증이 완료되면 여기로 이동하도록 지정한다.redirect_uri에서code를 가지고access_token발급받기
oauth에서authorization이 성공적으로 된다면code를 받아온다. code를 사용하면access_token을 발급받을 수 있다.https://nid.naver.com/oauth2.0/token에 다음parameter를 넘긴다.
grant_type:authorization_code우리는 code 인증이므로 고정client_id: 발급 받은 값 입력client_secret: 발급 받은 값 입력code:redirect_uri로 넘어온@RequestParam에 담겨있던 codestate:redirect_uri로 넘어온@RequestParam에 담겨있던 staterefresh_token:redirect_uri로 넘어온@RequestParam에 담겨있던 refresh_token
UriComponentsBuilder
- Spring에서
URI를 손쉽게 생성할 수 있도록 도와주는 frameworkscheme:[//[user[:password]@]host[:port]][/path][?query][#fragment]- 아래와 같은 컴포넌트를 이용하여 손쉽게
URI를 구성할 수 있도록 도와준다.
- Scheme
- Host
- Path
- Fragment
- 네아로 구성하면서 사용한 method 정리
fromUriString(String): 해당 String의URI로부터 구성path(String): 해당 String으로 path값 설정build(): 변수설정 후 buildencode(void or Charset): void일 경우UTF-8로 encodingtoUriString(): 최종적으로URIString으로 만들기
WebClient
retrieve(): response body를 받아 디코딩하는 가장 간단한 메소드다.- 하나의 값을 리턴할 때는
bodyToMono복수의 값을 리턴할 때는bodyToFluxblock(): Web Client는 기본적으로비동기로 작동한다. 하지만, 만약동기로 작동하게 만들고 싶다면 해당 method를 이용한다.