- 애플리케이션 ( client application ) : 여기서 클라이언트의 서버를 뜻함.
- OAuth2 서비스 : 여기서 인증 서버를 뜻함
- 서비스 : 여기서 OAuth2를 통해 접근 가능한 서비스를 뜻함.
- 자격증명 ( credential ) : 로그인 정보 ( id, password )등 개인 신상과 관련해 암호화한 정보
패스워드 그랜트
- 가장 직관적인 그랜트 타입
- 애플리케이션과 서비스가 서로를 명백하게 신뢰하는 경우에 사용
- 애플리케이션이 자격증명을 받아 직접 OAuth2 서비스에서 인증
- AccessToken을 받기위한 구성요소 : 애플케이션 이름, 시크릿 키, 자격증명 ( credential )
클라이언트 그랜트
- 사용자가 없고, 동일한 회사가 두 애플리케이션을 소유할 때 사용
- 예를 들면, 로그/데이터 분석 애플리케이션에서 서비스를 이용하고자 할 때
- 자격증명 없이, 애플리케이션 이름과 시크릿 키만 사용해 인증
- AccessToken을 받기위한 구성요소 : 애플케이션 이름, 시크릿 키
인가 코드 그랜트
- 가장 복잡한 그랜트 타입
- 자격증명을 애플리케이션간 공유하지 않고, 서비스를 이용하고자 할 때 사용
- 사전접근 ( pre-access ) 를 통해 인가 코드 ( Authentication ) 을 확인하는 단계가 추가
- 애플리케이션 구성시, OAuth2 로그인 페이지 URL을 추가한다. ( => 로그인 과정을 OAuth2 서비스에 위임한다 )
- 애플리케이션 소유자는 애플리케이션으로 돌아오는 콜백 URL을 OAuth2에 등록해야한다. ( => 위임된 로그인 과정이 끝난 후, 애플리케이션으로 돌아오기 위함 )
- AccessToken을 받기위한 구성요소 : 애플케이션 이름, 시크릿 키, 인가 코드 ( Authentication )
암시적 그랜트
- 서버 측 호출에 의존하지 않는 순수 js기반 어플리케이션이나 모바일 앱에서 사용
- 다른 그랜트 타입과 달리 애플리케이션 서버가 없다. UI 클라이언트가 직접 모든 서비스와 상호 통신.
- 클라이언트 소유자는 OAuth2 서비스에 클라이언트 이름과 OAuth2 액세스 토큰과 함께 사용자를 리다이렉션할 콜백 URL을 등록한다.
- UI 클라이언트가 OAuth2 서비스를 호출하면 클라이언트 이름을 제시하고 사용자 인증을 한다.
- 인증 성공시, OAuth2 액세스 토큰과 함께 사용자를 리다이렉션한다. ( 토큰은 URL의 쿼리의 매개변수로 전달 )
- 브라우저에 OAuth2 액세스 토큰이 노출되는 유일한 그랜트 타입 => 공격과 오용에 더 취약하다
- 토큰의 수명은 짧아야 하고 ( 1-2 시간 ), 리프레시 토큰은 지원하지 않는다.
- AccessToken을 받기위한 구성요소 : 애플케이션 이름, 자격증명 ( credential )
'Spring' 카테고리의 다른 글
[ Spring Authorization Server ] 일반 Request로 client id가져오기 (0) | 2022.07.29 |
---|---|
[ Spring Authorization Server ] Access Token ( JWT ) 확장하기 (0) | 2021.12.29 |
[ Spring Boot ] JWT를 이용한 OAuth2 설정 (0) | 2021.12.21 |
[ Intellij ] lombok이 적용되지 않을 때 (0) | 2021.10.26 |
[ Maven ] dependency 수동으로 설치하기 (0) | 2021.10.15 |