ㅇ OAuth2가 뭘까?
쉽게 말해 다른 인증된 기관에서 대신 사용자에대한 인증을 해주는 것이다.
정확히는, 특정 애플리케이션에서 사용자의 인증을 직접 처리하는게 아니라, 정보를 보유하고있는 신뢰할만한 애플리케이션에서 사용자의 인증을 대신 처리해주고 리소스에 대한 자격 증명용 토큰을 발급하고, 클라이언트가 토큰을 이용해 서비스를 이용하는 방식이다.
ㅇ OAuth2 구성요소들의 역할
- Resource Owner
우리가 사용하고자하는 리소스의 소유자. 예를들어 구글, 카카오등의 서비스를 이용하는 사용자를 의미함.
- Client
Resource에 액세스하는 애플리케이션. 우리가 만드는 애플리케이션이 클라이언트가 된다.
- Resource Server
Client의 요청을 수락하고 Resource Owner에게 해당하는 리소스를 제공하는 서버다. 구글 로그인을 이용하면 구글서비스를 제공하는 애플리케이션이 리소스 서버가 된다.
- Authorization Server
클라이언트가 리소스 서버에 접근할 수 있는 권한을 부여하는 서버. Resource Owner가 인증에 성공하면, Authorization Server는 클라이언트에게 Access Token형태로 권한을 부여함.
ㅇ Authorization Grant
Client 애플리케이션이 Access Token을 얻기 위한 Resource Owner의 권한을 표현하는 크리덴셜을 의미함. 네가지 Authorization Grant 타입이 존재함.
- Authorization Code : 권한 부여 승인 코드 방식
권한 부여 승인을 위해 자체 생성한 Authorization Code를 전달하는 방식. 가장 기본적인 방식. Refresh Topken을 사용할 수 있음.
- Implicit Grant Type : 암묵적 승인 방식
별도의 code 없이 바로 Access Token을 발급하는 방식. Refresh Token사용이 불가능하며, 이 방식에서 Authorization Server는 Client Secret을 통해 클라이언트 인증 과정을 생략함.
- Client Credentials : 클라이언트 자격 증명 승인 방식
Client 자신이 관리하는 Resource 혹은 Authorization Server에 해당 Client를 위한 제한된 Resource 접근 권한이 설정되어 있는 경우 사용할 수 있는 방식.
- Resource Owner Password Credentials : 자원 소유자 자격 증명 승인 방식
로그인시 필요한 정보(username, password)로 Access Token을 발급 받는 방식. 예를 들어 네이버계정으로 네이버웹툰 애플리케이션에 로그인, 카카오 계정으로 카카오 지도 애플리케이션에 로그인.
ㅇ 구글 API 콘솔에서 OAuth2 설정
클라이언트 ID와 Secret을 생성을 해야하는데, 이번 프로젝트는 웹 애플리케이션이 아니라 android와 ios기반이라, android는 sha-1, ios는 번들ID가 필요해 일단 이건 나중에 하기로 했다.
'프로젝트 > 낙낙(KnockKnock)' 카테고리의 다른 글
배포를 해볼까-3 (0) | 2023.07.17 |
---|---|
배포를 해볼까-2 (0) | 2023.07.14 |
배포를 해볼까-1 (0) | 2023.07.14 |
도커를 써볼까 (0) | 2023.07.10 |
배치를 알아보자. Spring Batch (0) | 2023.06.18 |