728x90
개요
- RFC 6749 - https://datatracker.ietf.org/doc/html/rfc6749#section-2.1
- 인증 서버에 클라이언트를 등록할 때 클라이언트 자격 증명인 클라이언트 아이디와 클라이언트 암호를 받는다.
- 클라이언트 암호는 비밀이고 그대로 유지되어야 하는 반면 클라이언트 아이디는 공개이다.
- 이 자격 증명은 인증 서버에 대한 클라이언트 ID를 증명한다
RFC ft-ietf-oauth-v2: The OAuth 2.0 Authorization Framework
The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowi
datatracker.ietf.org
기밀 클라이언트 (Confidential Clients)
- 기밀 클라이언트는 client_secret의 기밀성을 유지할 수 있는 클라이언트를 의미한다.
- 일반적으로 사용자가 소스 코드에 액세스할 수 없는 서버에서 실행되는 응용 프로그램으로 NET, Java, PHP 및 Node.JS와 같은 서버 측 언어로 작성된다
- 이러한 유형의 애플리케이션은 대부분 웹 서버에서 실행되기 때문에 일반적으로 "앱", "웹"이라고 한다
공개 클라이언트 (Public Clients)
- 공개 클라이언트는 client_secret 의 기밀을 유지할 수 없으므로 이러한 앱에는 secret 이 사용되지 않는다.
- 브라우저(SPA)에서 실행되는 JavaScript 애플리케이션, Android 또는 iOS 모바일 앱, 데스크톱에서 실행되는 기본 앱뿐만 아니라 IoT/임베디드 장치에서 실행되는 애플리케이션 등이 있다
- Chrome 개발자 콘솔이나 디스어셈블러와 같은 디버깅 도구를 사용하여 바이너리/실행 코드에서 기밀 정보를 추출할 수 있기 때문에 공개로 간주된다
- 서버 측이 아닌 리소스 소유자가 사용하는 장치에서 실행되는 모든 클라이언트는 공개 클라이언트로 간주되어야 한다
OAuth 2.0 Client Types

- Public 클라이언트 타입
- front 채널에서 공개 중으로 오픈된 채널을 통해 Auth-Server로부터, 바로 토큰을 얻게 되는데 이는 보안상 위험하다.
- Script나, 여러 정보가 노출이 되어 있기 떄문에 이 정보를 통해 다른 사이트에서 해당 정보를 악용할 가능성이 있다.
- Confidential 클라이언트 타입
- front 채널이 Auth-Server 를 통해 코드를 발급받는다 (access 토큰이 아니기 때문에 안전하다)
- front 채널이 back 채널에 요청을 하게 되면, back 채널에서 code를 통해 auth-server로 부터, access 토큰을 발급받아 이를 client에 전달해 준다
TEST
Confidential은 이전 테스트와 같기에 생략한다


http://localhost:8081/#session_state=b6242744-26d9-4c0a-b7f9-b23717aefc3f&access_token=eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJOQXRBU1VxWmZCb21BY0tqckUzeE9CbjZhZzhCZE1USUdjLWhWVTFfNzlRIn0.eyJleHAiOjE2NzI3NjQyNDUsImlhdCI6MTY3Mjc2MzM0NSwiYXV0aF90aW1lIjoxNjcyNzYzMTQ2LCJqdGkiOiI2MDJlOGZlZC0wODk0LTQ0MTktOGUyNi1mMjBmZjMyZWM5YmMiLCJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjgwODAvcmVhbG1zL29hdXRoMiIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI1MGQwNzFkOS0wZTgzLTQzZmEtYjQwOC0wOWFlZTNmY2ZkMGMiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiJvYXV0aDItY2xpZW50LWFwcCIsInNlc3Npb25fc3RhdGUiOiJiNjI0Mjc0NC0yNmQ5LTRjMGEtYjdmOS1iMjM3MTdhZWZjM2YiLCJhY3IiOiIwIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iLCJkZWZhdWx0LXJvbGVzLW9hdXRoMiJdfSwicmVzb3VyY2VfYWNjZXNzIjp7ImFjY291bnQiOnsicm9sZXMiOlsibWFuYWdlLWFjY291bnQiLCJtYW5hZ2UtYWNjb3VudC1saW5rcyIsInZpZXctcHJvZmlsZSJdfX0sInNjb3BlIjoicHJvZmlsZSBlbWFpbCIsInNpZCI6ImI2MjQyNzQ0LTI2ZDktNGMwYS1iN2Y5LWIyMzcxN2FlZmMzZiIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwibmFtZSI6ImtpbSBqdW5obyIsInByZWZlcnJlZF91c2VybmFtZSI6InVzZXIiLCJnaXZlbl9uYW1lIjoia2ltIiwiZmFtaWx5X25hbWUiOiJqdW5obyIsImVtYWlsIjoidXNlckBrZXljbG9hay5jb20ifQ.qmdA-cVtHJro8Usw9TPYo-0c1kkIhcCYNQkbTZEkrzOc3fak1c3z3v0XyWcICTkAJwXHpmeMhzjor8TQEhfsuEAAfWU93Cqth_uAEVaacCypl5Wcwsdee-BhNG2vzMD6rnc5GIiHbeW0NyNjKVzx8qc2MLXlK-uhf5Z9TK0tAq5z__53LkpGwvof6iyaaI__knG8bPCOHq8JwfBoiTeBLO8zsEskbPSIRBdnE5nRaE9sDJLBa2rhjRKXwR_qkLch-K8QgJ8095J2hPxQccA3gTwJsg5uEp4WQDVV6f95SRMp7cO_zw3h-T9D2_7Zp2ReRh5Ih_WhoRuNG_E3g6jlzA&token_type=Bearer&expires_in=900
- token을 바로 전달해 주는것을 확인할 수 있다.
728x90
'스프링 시큐리티 OAuth2 > OAuth 2.0 용어 이해' 카테고리의 다른 글
| Oauth 2.0 Token Types 이해 (0) | 2023.01.06 |
|---|---|
| OAuth 2.0 Roles 이해 (0) | 2023.01.04 |
| keycloak 설치 및 설정 (0) | 2023.01.02 |
| OAuth 2.0 소개 (0) | 2023.01.02 |