SimpleSAMLphp를 ID 공급자로 사용하는 Drupal SAML Single Sign On
회사 개요
miniOrange SAML SP 모듈을 사용한 Drupal SAML 통합은 SimpleSAMLphp와 Drupal 사이트 간의 원활한 SSO(Single Sign-On)를 구축합니다. 사용자는 SimpleSAMLphp 자격 증명을 사용하여 Drupal 사이트에 로그인할 수 있습니다. 이 문서에서는 서비스 제공자(SP)인 Drupal과 ID 제공자(IdP)인 SimpleSAMLphp 간의 SSO 구성 단계를 안내합니다. 이 모듈은 Drupal 7, Drupal 8, Drupal 9, Drupal 10 및 Drupal 11과 호환됩니다.
설치 단계
- 작곡가 사용
- Drush 사용
- 수동 설치
구성 단계
Drupal SAML SP 메타데이터
- We Buy Orders 신청서를 클릭하세요. 구성 → 사람들 → SAML 로그인 구성 에서 행정실 메뉴. (/admin/config/people/miniorange_saml/idp_setup)
- 서비스 제공업체 메타데이터 탭에서 SP 엔터티 ID/발급자 SP ACS URL 그리고 편리하게 보관하세요. 이 SP 메타데이터는 SimpleSAMLphp를 Identity Provider(IdP)로 구성하는 데 필요합니다.
SimpleSAMLphp를 ID 공급자로 구성
-
SimpleSAML 설치 디렉토리에서 config/config.php 파일을 열고 다음 내용을 수정하십시오.
'enable.saml20-idp' ⇒ 참
- 활성화 UserPass 인증 모듈(exampleauth에 포함됨). 이는 이름이 지정된 파일을 생성하여 수행됩니다. 가능 (파일 이름) 모듈/예제인증/.
-
config/authsources.php 파일에 인증 소스를 생성하세요 . 해당 파일에는 아래와 같이 하나의 항목만 포함되어야 합니다.
'__DEFAULT__', /* * 응답에 서명할 때 사용할 개인 키와 인증서. * 이것들은 cert-directory에 저장됩니다. */ 'privatekey' => 'example.org.pem', 'certificate' => 'example.org.crt', /* * 사용자를 인증하는 데 사용해야 하는 인증 소스. 이것은 config/authsources.php의 항목 중 하나와 일치해야 합니다. */ 'auth' => '' 예:- 'example-userpass', // 1단계에서 찾을 수 있습니다. ];
이 구성은 student와 employee라는 비밀번호로 studentpass와 employeepass라는 비밀번호를 가진 두 명의 사용자(student와 employee)를 생성합니다. 사용자 이름과 비밀번호는 배열 인덱스(student-user의 경우 student:studentpass)에 저장됩니다. 각 사용자의 속성은 인덱스에서 참조하는 배열에 구성됩니다. 따라서 student 사용자의 경우 다음과 같습니다.
[ 'uid' => ['학생'], 'eduPersonAffiliation' => ['회원', '학생'], ],
사용자가 로그온하면 IdP가 속성을 반환합니다.
- 다음 방법 중 하나를 사용하여 자체 서명된 인증서를 생성합니다.
-
openssl 명령 사용
openssl req -newkey rsa:3072 -new -x509 -days 3652 -nodes -out example.org.crt -keyout example.org.pem
-
온라인 도구를 사용하여 생성하고 cert 디렉터리에 추가합니다.
확장자는 다음과 같아야합니다example.org.crt //(공개키)example.org.pem //(개인키)
-
참고: SimpleSAMLphp는 RSA 인증서만 지원합니다. DSA 인증서는 지원되지 않습니다.
-
SAML 2.0 IdP는 metadata/saml20-idp-hosted.php 에 저장된 메타데이터를 통해 구성됩니다 . 다음은 최소 구성 예시입니다.
'__DEFAULT__', /* * 응답에 서명할 때 사용할 개인 키와 인증서입니다. * 인증서 디렉토리에 저장됩니다. */ 'privatekey' => 'example.org.pem', 'certificate' => 'example.org.crt', /* * 사용자를 인증하는 데 사용해야 하는 인증 소스입니다. 이는 config/authsources.php의 항목 중 하나와 일치해야 합니다. */ ' auth' => '' 예:- 'example-userpass', // 1단계에서 찾을 수 있습니다. ];
-
구성하려는 ID 공급자는 연결할 서비스 공급자에 대한 정보를 알아야 합니다. 이 정보는 metadata/saml20-sp-remote.php 파일에 저장된 메타데이터를 통해 구성됩니다. 다음은 SimpleSAMLphp SP에 대한 metadata/saml20-sp-remote.php 메타데이터 파일의 최소 예시입니다. ( example.com을 Drupal 도메인 이름 으로 바꾸세요 .)
'https://example.com/samlassertion', 'SingleLogoutService' => 'https://example.com/user/logout', 'NameIDFormat' => 'urn:oasis:names:tc:SAML:1.1:nameid -format:emailAddress', 'simplesaml.nameidattribute' => 'mail', 'simplesaml.attributes' => true, 'attributes' => array('mail', 'givenname', 'sn', 'memberOf'), ];
참고: 엔티티 ID의 URI와 AssertionConsumerService 및 Single Logout Service 엔드포인트의 URL은 서비스 제공업체마다 다릅니다. 원격 SP의 메타데이터가 XML 파일인 경우, SimpleSAMLphp 설치 디렉토리의 /admin/metadata-converter.php에 기본적으로 제공되는 XML-SimpleSAMLphp 메타데이터 변환기를 사용할 수 있습니다.
- SimpleSAMLphp 설치 홈페이지로 이동합니다. (설치 URL은 다음과 같습니다. https://service.example.com/simplesaml/ 여기서 service.example.com은 SimpleSAMLphp 경로로 바꿔야 합니다.)
- 페더레이션 탭으로 이동하여 다음을 클릭합니다. 메타데이터 표시(이 IdP 메타데이터는 Drupal을 SP로 구성하는 데 필요합니다.)
Drupal을 SAML 서비스 공급자로 구성:
- Drupal 사이트로 이동합니다. 다음으로 이동하세요. 서비스 제공업체 설정 모듈의 탭을 클릭하고 IDP 메타데이터 업로드.
- 이전에 SimpleSAML에서 다운로드한 메타데이터 파일을 메타데이터 파일 업로드 텍스트 필드를 클릭하고 파일 업로드 버튼을 클릭합니다.
참고: ID 공급자 이름을 업데이트하려면 다음 단계를 따르세요.
- $XNUMX Million 미만 동작,를 선택 편집.
- SimpleSAMLphp를 입력하세요 ID 제공자 이름 텍스트 필드.
- 아래로 스크롤하여 구성 저장 버튼을 클릭합니다.
- Drupal과 SimpleSAMLphp 간의 연결을 테스트하려면 테스트 링크를 클릭하세요.
- 테스트 구성 팝업에서 SimpleSAMLphp 자격 증명을 사용하여 로그인하세요(활성 세션이 없는 경우). 인증에 성공하면 SimpleSAMLphp에서 수신한 속성 목록이 표시됩니다. 선택한다.
축하합니다! SimpleSAMLphp를 SAML ID 공급자(IdP)로, Drupal을 SAML 서비스 공급자로 성공적으로 구성했습니다.
SAML SSO 로그인은 어떻게 작동하나요?
- 새 브라우저/개인 창을 열고 Drupal 사이트 로그인 페이지로 이동합니다.
- 클릭 ID 공급자를 사용하여 로그인(SimpleSAMLphp) 링크를 클릭하십시오.
- SimpleSAMLphp 로그인 페이지로 리디렉션됩니다. SimpleSAMLphp 자격 증명을 입력합니다. 인증에 성공하면 사용자는 Drupal 사이트로 다시 리디렉션됩니다.
당신의 응답을 주셔서 감사합니다. 곧 다시 연락드리겠습니다.
문제가 발생했습니다. 문의사항을 다시 제출해 주세요.

당사에 문의해 주세요.