Cute Happy Ghost
본문 바로가기
server·network

OAuth 2.0 동작 방식 중 권한 부여 승인 코드 방식 이해하기

by JENN_tech7 2023. 6. 26.
728x90
SMALL

유럽과 같이 하는 사업 중에럼 로그인을 통합하여 구현해야 하는 부분이 있었다.

7-8개의 파트너 플랫폼&기술들은 하나의 계정으로 모든 플랫폼에 접근할 수 있어야하고 

이미 세션이 있다면 로그인 필요없이 접근이 가능하도록 해야했다

이는 Oauth2.0방식의 인증방식을 사용했고 나도 이를 따라야했다.

 

나는 우리 플랫폼의 client_id와 client_secret을 부여받았다

이건 아마 등록을 하면 나오는 걸로 알고있다.

4가지 정도의 프로토콜유형이 있는데 나는 그 중에서 

권한 부여 승인 코드 방식이라고도 부르는 Authorization Code Grant방식을 사용했다

자체 생성한 Authorization Code를 전달하는 방식으로 기본적으로 많이 쓰이는 방식이다. 

또 이 방식은 refresh token을 사용가능하다는 점에서 장점이있다.

 

 

 

프로세스를 간략하게 설명해보겠다.

1. redirect_uri와 response type을 코드로 지정한 로그인화면(인터페이스는 프로젝트 자체 통합되어있음)

2. id,pw입력하여 로그인 버튼클릭 시 code를 받음

3. 해당 code로 access_token과 refresh_token을 발급받음

-------------------

여기까지가 기본 프로세스이고 추가 작업은

4. 초기화면으로 이동시켜줌

5. 해당 토큰을 서버에 저장하고 3500x10의 주기마다 refresh_token으로 새로운 token을 발급받아 저장

6. 발급받은 token으로 user정보 가져와서 user_id를 서버에 저장

7. 재접속시 토큰이 서버에 저장되어 있으면 로그인없이 바로 접근가능하도록 redirect 

 

 

  • 주요 파라미터를 아래와 같다
  • 내가 쓴 방식에 대한 값은 빨간색으로 해놓겠다
client_id,
client_secret
클라이언트 자격증명. 클라이언트가 권한 서버에 등록하면 발급받을 수 있으며 권한 서버 연동 시 클라이언트의 검증에 사용됩니다.
redirect_url
권한 서버가 요청에 대한 응답을 보낼 url을 설정합니다.
response_type
권한 부여 동의 요청 시 포함되는 값으로 권한 부여 방식에 대한 설정입니다.
아래 값 중 한 개를 사용합니다.
· code: Authorization Code Grant
· token: Implicit Grant
state
CSRF 공격에 대비하기 위해 클라이언트가 권한서버에 요청 시 포함하는 임의의 문자열.
클라이언트가 요청 시 state를 포함 시켰다면 권한 서버는 동일한 값을 클라이언트에게 보내야 함.
grant_type
Access Token 획득 요청 시 포함되는 값으로 권한 부여 방식에 대한 설정입니다. 아래 값 중 한 개를 사용합니다.
· authorization_code: Authorization Code Grant
· password: Resource Owner Password Credentials Grant
· client_credentials: Client Credentials Grant
code
Authorization Code Grant 방식에서 Access Token요청 시 사용됩니다.
권한 서버에서 획득한 Authorization Code를 입력하면 Access Token을 발행할 수 있음.
token_type
발행된 Token의 타입.
대표적으로 Bearer, MAC(Message Authentication Code)가 있음.
expires_in
토큰 만료 시간이며 단위는 초이다.
보통 36000초

 

 

테스트는 postman으로 진행했고 java로 구현을 했다

자세한 코드는 추후에 올리겠다!

 

 

 

 

728x90
LIST

댓글