WEB/보안

OAuth2.0 PKCE란?

senssi 2023. 3. 7. 18:26

OAuth2.0 PKCE란?

■ PKCE란?

Outh2.0의 확장 사양으로 인가 코드 가로채기 공격의 대책으로서 사용되는 구조.

클라이언트 측에서 해시화된 code_challenge와 원래 소재의 code_verifier를 인가 서버에서 대조하여 인증을 실시한다.

기본적인 처리 흐름은 아래와 같다.

PKCE 처리 흐름

※인용 이미지(일본어):https://qiita.com/naoya_matsuda/items/992c67b803ff460818ec

 

OAuth2.0 PKCEとは 〜Stateとの違い〜 - Qiita

はじめに OAuth2.0の拡張仕様で当たり前になりつつある?PKCEについてまとめました。 「PKCE」とは PKCEとは、「Proof Key for Code Exchange by OAuth Public C...

qiita.com

 

■ code_challenge

클라이언트 측에서 해시화한 파라미터.

클라이언트 : 인가 요청 시 인가 서버에 송신한다.

인가 서버 : 인가 코드와 연결하여 code_challenge를 유지하고 토큰 요청 시 조회한다.

 

 

■ code_challenge_method

code_challenge를 생성하는 방법을 지정한다.

"plain"(해시화하지 않음), "S256"(SHA256 해시화) 중 하나를 지정한다.

클라이언트 : 인가 요청 시 인가 서버에 송신한다.

인가 서버 : 인가 코드와 연결하여 code_challenge_method를 유지하고 토큰 요청 시 지정한 방법으로 code_challenge와 맞댄 값을 생성한다.

 

 

■ code_verifier

code_challenge의 원래 값.

클라이언트 : Token 요청 시 인가 서버로 송신한다.

인가 서버 : code_challenge_method가 "S256"일 경우, code_challenge와 같은 키로 해시화하여 code_challenge와 비교하여 인증한다.

challenge_method가 "plain"일 경우 해시화하지 않고 code_challenge와 비교하여 인증한다.

 

 

'WEB > 보안' 카테고리의 다른 글

XSS(Cross Site Script) 체크 리스트  (0) 2023.03.14