
OAuthProvider::is2LeggedEndpoint 메서드는 OAuth Provider의 2-legged endpoint와 3-legged endpoint를 구분하는 역할을 합니다.
2-legged endpoint는 client_id와 client_secret가 필요한 endpoint를 말하며, 3-legged endpoint는 client_id와 client_secret가 아닌 authorization_code를 사용하여 인증하는 endpoint를 말합니다.
이 메서드는 endpoint의 URL, HTTP 메서드, 요청 헤더, 요청 바디를 검사하여 2-legged endpoint인지 3-legged endpoint인지 판단합니다.
2-legged endpoint와 3-legged endpoint를 구분하는 기준은 다음과 같습니다.
- 2-legged endpoint: client_id와 client_secret가 필요한 endpoint
- 3-legged endpoint: client_id와 client_secret가 아닌 authorization_code를 사용하여 인증하는 endpoint
OAuthProvider::is2LeggedEndpoint 메서드는 다음과 같은 로직을 수행합니다.
1. endpoint의 URL을 검사하여 client_id와 client_secret가 필요한지 확인합니다.
2. endpoint의 HTTP 메서드를 검사하여 POST, PUT, DELETE 등이 아닌 GET, HEAD, OPTIONS 등이 있는지 확인합니다.
3. endpoint의 요청 헤더를 검사하여 client_id와 client_secret가 포함되어 있는지 확인합니다.
4. endpoint의 요청 바디를 검사하여 authorization_code가 포함되어 있는지 확인합니다.
위의 메서드는 다음 경우에 2-legged endpoint로 판단합니다.
- endpoint의 URL에 client_id와 client_secret가 포함되어 있는 경우
- endpoint의 HTTP 메서드가 POST, PUT, DELETE 등인 경우
- endpoint의 요청 헤더에 client_id와 client_secret가 포함되어 있는 경우
위의 메서드는 다음 경우에 3-legged endpoint로 판단합니다.
- endpoint의 URL에 client_id와 client_secret가 포함되어 있지 않은 경우
- endpoint의 HTTP 메서드가 GET, HEAD, OPTIONS 등인 경우
- endpoint의 요청 헤더에 client_id와 client_secret가 포함되어 있지 않은 경우
위의 메서드는 다음 경우에 2-legged endpoint와 3-legged endpoint이 동시에 판단합니다.
- endpoint의 URL에 client_id와 client_secret가 포함되어 있는 경우, 하지만 endpoint의 HTTP 메서드가 GET, HEAD, OPTIONS 등인 경우
- endpoint의 요청 헤더에 client_id와 client_secret가 포함되어 있는 경우, 하지만 endpoint의 요청 바디에 authorization_code가 포함되어 있는 경우
위의 메서드는 다음 경우에 2-legged endpoint와 3-legged endpoint이 동시에 판단되지 않습니다.
- endpoint의 URL에 client_id와 client_secret가 포함되어 있지 않은 경우, 하지만 endpoint의 HTTP 메서드가 POST, PUT, DELETE 등인 경우
- endpoint의 요청 헤더에 client_id와 client_secret가 포함되어 있지 않은 경우, 하지만 endpoint의 요청 바디에 authorization_code가 포함되어 있는 경우
위의 메서드는 다음 경우에 2-legged endpoint와 3-legged endpoint이 동시에 판단되지 않는 이유는 다음과 같습니다.
- 2-legged endpoint와 3-legged endpoint는 서로 다른 인증 방식을 사용하기 때문에, 동시에 판단될 수 없습니다.
- 2-legged endpoint는 client_id와 client_secret를 사용하여 인증하는 반면, 3-legged endpoint는 authorization_code를 사용하여 인증하기 때문에, 동시에 판단될 수 없습니다.
2025-06-24 13:27