SAML 프로토콜을 사용한 Drupal Headless SSO로 무한한 가능성의 잠금 해제
회사 개요
miniOrange의 Headless SSO 보안 솔루션은 헤드리스 애플리케이션, Drupal 백엔드, ID 공급자(IdP) 간에 원활한 Single Sign-On(SSO)을 수행합니다. 이 인증 프로세스에서 사용자는 먼저 인증을 위해 ID 공급자 로그인 페이지로 리디렉션됩니다. 인증이 성공하면 프런트엔드 애플리케이션으로 다시 리디렉션됩니다. 이 단계에서 JSON 웹 토큰(JWT)이 생성되어 사용자의 신원을 안전하게 검증하고 프런트엔드 사이트로 전송합니다. (선택 사항: 이 토큰은 Drupal에서 추가 정보를 가져오는 동안 API 검증에 사용할 수 있습니다.) 계속해서 이 문서는 헤드리스 Drupal 설정을 위한 SSO를 구성하는 단계를 강조합니다.
사전 조건
- miniOrange SAML SP 모듈 :이 모듈 Drupal 사이트와 SAML 공급자 간 SSO를 활성화합니다.
- REST & JSON API 인증 모듈 :
- SSO가 수행된 후 모듈 JWT를 생성하고 이 토큰을 프런트엔드 애플리케이션으로 전송하는 데 도움이 됩니다.
- 이 토큰은 Drupal에 대한 API 요청과 함께 헤더에서 사용하여 추가 API를 인증/검증할 수 있습니다. REST & JSON API 인증 모듈은 API 호출을 허용하기 전에 JWT를 검증하여 안전한 액세스를 보장합니다.
백엔드 구성
- miniOrange SAML 모듈: 이것을 참조하십시오 설치 가이드 Drupal 사이트와 원하는 SAML ID 공급자 사이에 SSO를 설정합니다.
- REST & JSON API 인증 모듈:
- JWT를 사용하여 Drupal API를 인증하려면 다음과 같이 모듈에서 JWT 기반 인증 방법을 구성하십시오. 설정 가이드.
- 프런트엔드에 로그인 URL을 구성하세요:
- 로그인 URL을 얻으려면 miniorange_saml 모듈로 이동한 다음 탐색하세요. 서비스 제공업체 설정 탭. SSO 링크를 복사하여 프런트엔드 로그인 페이지에 통합합니다.
- 프런트엔드 엔드포인트를 구성합니다.
- REST & JSON API 인증 모듈은 로그인한 사용자에 해당하는 JWT를 생성합니다. 모듈에서 이 JWT를 가져오려면 아래 단계에 따라 API 인증 모듈에서 리디렉션 URL을 구성합니다.
- 로 이동 고급 설정 탭 REST & JSON API 인증 기준 치수.
- . 헤드리스 SSO에 대한 토큰 엔드포인트 구성 섹션에서 코드와 릴레이 상태 매개변수를 사용하여 Single Sign-On(SSO) 프로세스 후 브라우저가 리디렉션할 프런트엔드 애플리케이션의 엔드포인트를 입력합니다. 그런 다음 토큰 엔드포인트 구성 저장 버튼을 클릭합니다.
- 프런트엔드의 로그아웃 리디렉션 URL을 구성합니다.
- 사용자가 Drupal 사이트에서 로그아웃하면 프런트엔드 측으로 다시 이동하게 됩니다. 프런트엔드 애플리케이션의 이 엔드포인트를 설정하려면 로그인 탭으로 이동하세요. 미니오렌지_샘플 기준 치수.
- . '로그아웃 후 기본 리디렉션 URL' 텍스트 필드에 사용자가 로그아웃한 후 리디렉션되어야 하는 프런트엔드 측의 엔드포인트를 입력합니다.
프런트엔드 장면 발견
이 섹션에서는 사용자가 프런트엔드 측에서 해야 할 모든 것을 강조합니다. 또한 사용자가 프런트엔드에서 목격할 수 있는 가능한 변경 사항에 대해서도 설명합니다. 시작해 보겠습니다.
- 로그인 흐름:
- SSO URL을 사용하여 프런트엔드 애플리케이션에서 로그인을 시작합니다.
- 사용자는 구성된 IdP로 리디렉션됩니다.
- 사용자의 자격 증명을 입력하여 인증하세요.
- 인증이 성공적으로 완료되면 사용자는 코드와 릴레이 상태가 URL의 쿼리 매개변수로 포함된 상태로 프런트엔드로 다시 리디렉션됩니다.
- 이전 단계에서 얻은 코드를 사용하여 Drupal의 토큰 엔드포인트에 요청을 합니다. 이를 위해 아래에 언급된 단계를 따르세요.
- 토큰 엔드포인트를 찾으세요 헤드리스 SSO를 위한 토큰 엔드포인트 구성 자세한 내용. 이에 대해서는 아래 이미지를 참조하세요.
- 수신된 코드로 POST 요청을 만드는 예:
- 사용자가 프런트 엔드에서 코드 '(received_code)'를 받았다고 가정해 보겠습니다.
- 이제 이 코드를 사용하여 POST 요청을 만들려면 아래 형식을 사용하세요.
참고 : 릴레이 상태는 로그인이 시작되는 매개변수입니다. 대상 매개변수가 현재 로그인 URL인 경우 릴레이 상태는 대상 매개변수의 값이 됩니다.
우편 배달부 형식:
HTTP: POST /drupal10_1_1/web/getToken HTTP/1.1 호스트: localhost 콘텐츠 유형: application/x-www-form-urlencoded 콘텐츠 길이: 35 코드=MjEOxuSuQyd1vUE7Ft5K5fT8Syh25c CURL: curl --location 'http://localhost/drupal10_1_1/web/getToken' \ --header '콘텐츠 유형: application/x-www-form-urlencoded' \ --data-urlencode '코드=MjEOxuSuQyd1vUE7Ft5K5fT8Syh25c'
- 프런트엔드 애플리케이션에서 로그아웃을 시작합니다. (URL 사용) {drupal-base-url}/사용자/로그아웃)
- 단일 로그아웃의 구성을 확인하세요.
- 이렇게 하면 사용자는 Drupal 사이트와 IdP에서 모두 로그아웃됩니다.
- Drupal 사이트에서 로그아웃한 후 사용자는 다음으로 리디렉션됩니다. 구성된 엔드포인트.
참고 : 헤더에 JWT 토큰을 포함하는 API 요청의 형식을 보려면 여기를 참조하세요. 설정 가이드.
관련 기사
당신의 응답을 주셔서 감사합니다. 곧 다시 연락드리겠습니다.
문제가 발생했습니다. 문의사항을 다시 제출해 주세요.

문의하기