검색 결과 :

×

사용자가 OAuth SSO를 통해 Joomla 사이트에 로그인하면, ID 공급자는 브라우저를 통해 인증 코드를 전송합니다. 그러면 애플리케이션은 해당 코드를 액세스 토큰으로 교환합니다. 대부분의 경우 이 과정은 잘 작동하지만, 한 가지 문제가 있습니다. 누군가 인증 코드가 애플리케이션에 도달하기 전에 이를 가로챌 경우, 해당 코드를 이용하여 액세스 토큰을 직접 획득할 수 있다는 것입니다.

PKCE(Proof Key for Code Exchange)는 이러한 문제를 방지합니다. 로그인 시작 전에 애플리케이션은 임의의 비밀 키를 생성하고, 해당 키의 해시 버전을 ID 공급자에게 전송한 다음, 코드를 토큰으로 교환할 때 원본 키를 보유하고 있음을 증명합니다. 인증 코드가 가로채지더라도 이 증명이 없으면 무용지물입니다. 왜냐하면 원본 코드는 오직 원래 애플리케이션만 보유하고 있기 때문입니다.

miniOrange Joomla OAuth 클라이언트 확장 프로그램은 PKCE를 기본적으로 지원합니다. 이를 활성화하면 사용자의 로그인 방식을 변경하지 않고도 기존 SSO 설정에 보안 계층을 추가할 수 있습니다.

Joomla 웹사이트에서 PKCE로 보호되는 OAuth SSO를 활성화하려면 다음이 필요합니다.

유스케이스 카드 로고

Joomla용 miniOrange OAuth 클라이언트 확장 프로그램

확장 프로그램 다운로드

OAuth SSO를 실행하는 대부분의 Joomla 사이트는 PKCE 없이 기본 인증 코드 흐름을 사용합니다. 이는 많은 시나리오에서 문제가 없지만, 이해해야 할 몇 가지 실제적인 위험을 내포하고 있습니다.

인증 코드는 URL 매개변수로 브라우저를 통해 전달되므로 브라우저 기록, 서버 로그 및 리퍼러 헤더에 남을 수 있습니다. 즉, 인증 코드가 노출되는 순간이 아주 짧더라도 존재합니다. 단일 페이지 애플리케이션이나 브라우저 기반 SSO(Single Sign-On) 흐름과 같이 클라이언트 비밀 키를 안전하게 저장할 수 없는 애플리케이션의 경우, 인증 코드는 사용자의 계정을 공격자가 탈취하는 것을 막는 유일한 방어 수단이 됩니다.

최신 보안 모범 사례를 반영하는 OAuth 2.1은 모든 인증 코드 흐름에 PKCE(Process Key Code Enhancement)를 필수로 요구합니다. SOC 2 또는 ISO 27001과 같은 표준 준수를 목표로 하는 조직은 이러한 기능을 갖추도록 요구하는 경우가 점점 늘어나고 있습니다.

PKCE가 없으면 토큰 교환을 완료한 클라이언트가 로그인 시도를 한 클라이언트와 동일하다는 암호화 증명이 불가능합니다. 이러한 허점 때문에 완벽한 보안 감사 결과를 도출하기가 더욱 어려워집니다.

miniOrange OAuth 클라이언트 확장 프로그램을 통해 PKCE를 설정하는 것은 간단합니다. 구성 방법은 다음과 같습니다.


1. 확장 프로그램에서 PKCE 활성화: miniOrange 확장 프로그램의 OAuth 공급자 설정에서 PKCE를 활성화하는 옵션을 찾을 수 있습니다. 이 옵션을 활성화하면 확장 프로그램이 모든 작업을 자동으로 처리합니다. 로그인할 때마다 임의의 코드 검증자를 생성하고, 이를 기반으로 해시된 챌린지를 만들어 인증 요청의 일부로 ID 공급자에게 전송합니다. 토큰 교환이 이루어지면 원래 검증자가 인증 코드와 함께 전송되어 ID 공급자가 두 값이 일치하는지 확인할 수 있습니다.


2. 코드 인증 방식 선택: 확장 프로그램은 S256과 일반 방식 두 가지를 지원합니다. S256 방식은 인증 코드를 SHA-256 해시 함수로 처리한 후 인증 코드를 전송하므로 원본 비밀 키가 전송되지 않습니다. 일반 방식은 인증 코드를 인증 코드로 직접 전송하므로 보안성이 떨어집니다. Joomla 웹사이트를 운영하는 경우 S256 방식이 적합하며, 대부분의 최신 ID 제공업체에서 이를 지원합니다.


3. ID 공급자 구성 업데이트: ID 공급자 측에서는 애플리케이션 등록을 업데이트하여 PKCE를 필수로 설정해야 합니다. 일반적으로 이는 애플리케이션을 공개 클라이언트로 표시하거나 앱 설정에서 PKCE 적용을 활성화하는 것을 의미합니다. 정확한 단계는 공급자마다 다릅니다. 공급자 수준에서 PKCE를 필수로 설정하는 것이 중요한 이유는 유효한 코드 검증자 없이 토큰 교환을 시도하는 경우, 인증 코드가 캡처되었더라도 거부되기 때문입니다.


4. 흐름 테스트: PKCE를 사용한 로그인이 성공적으로 완료되면 사용자 관점에서 일반 SSO 로그인과 동일하게 보입니다. 제대로 작동하는지 확인하려면 인증 요청 URL에 code_challenge 및 code_challenge_method 매개변수가 포함되어 있는지 확인하십시오. 보안 보장을 테스트하려면 캡처된 인증 코드를 코드 검증자 없이 다시 전송해 보십시오. 그러면 ID 공급자가 토큰 교환을 오류와 함께 거부해야 합니다.

PKCE는 Joomla의 OAuth SSO에 사용할 수 있는 가장 실용적인 보안 업그레이드 중 하나입니다. 사용자에게 불편함을 주지 않으면서 실제 문제를 해결하기 때문입니다. 로그인 환경은 완전히 동일하게 유지되지만, 인증 코드는 가로채는 사람에게는 아무런 가치가 없게 됩니다. PKCE가 OAuth 배포의 표준으로 자리 잡으면서, miniOrange OAuth Client 확장 프로그램을 통해 PKCE를 활성화하면 Joomla SSO 설정을 최신 모범 사례에 맞추고 보안 검토 시 방어력을 높일 수 있습니다.

  1. Joomla!의 구획화를 통한 액세스 보안 - OAuth 프로토콜
  2. Joomla에서 SAML과 OAuth: 어떤 것을 선택해야 할까요?
  3. 저희 문서를 확인해 보세요.

최대한 빨리 연락드리겠습니다

모형

 당신의 응답을 주셔서 감사합니다. 곧 다시 연락드리겠습니다.

문제가 발생했습니다. 문의사항을 다시 제출해 주세요.

차례

안녕하세요!

도움이 필요하다? 우리는 바로 여기에 있습니다!

SUPPORT