Skip To Content

SimpleSAMLphp 구성

Portal for ArcGIS에서 엔터프라이즈 로그인 시 SimpleSAMLphp 1.10 이상 버전을 ID 공급자(IDP)로 구성할 수 있습니다. 구성 절차는 Portal for ArcGIS에 엔터프라이즈 IDP 등록 및 엔터프라이즈 IDP에 Portal for ArcGIS 등록의 두 가지 주요 단계로 구성됩니다.

필수 정보

Portal for ArcGIS 사용자가 엔터프라이즈 로그인을 사용하여 로그인할 때에는 IDP로부터 특정 속성 정보를 받아야 합니다. NameID 속성은 Portal for ArcGIS 작업과 페더레이션하기 위해 SAML 응답에서 IDP가 보내야 하는 필수 속성입니다. Portal for ArcGIS에서는 NameID 값을 사용하여 기명 사용자를 식별하므로 사용자를 고유하게 식별하는 상수 값을 사용하는 것이 좋습니다. IDP의 사용자가 로그인하면 Portal for ArcGIS에서 해당 사용자 저장소에 사용자 이름이 NameID인 새 사용자를 생성합니다. NameID에서 보내는 값에 사용할 수 있는 문자는 영숫자, _(밑줄), .(점), 그리고 @ 기호입니다. 다른 모든 문자는 Portal for ArcGIS에서 생성한 사용자 이름에 밑줄을 포함하도록 이스케이프됩니다.

Portal for ArcGIS 은 엔터프라이즈 IDP에서 엔터프라이즈 로그인의 givenNameemail address 속성 내부 흐름을 지원합니다. 사용자가 엔터프라이즈 로그인을 사용하여 로그인하고 Portal for ArcGISgivennameemail 또는 mail(이)라는 이름의 속성을 받을 경우(어떤 속성이든) Portal for ArcGIS은 IDP에게 받은 값으로 사용자 계정의 전체 이름과 이메일 주소를 채웁니다. 사용자가 알림을 받을 수 있도록 엔터프라이즈 IDP의 email address를 전달하는 것이 좋습니다.

에 엔터프라이즈 IDP로 SimpleSAMLphp 등록 Portal for ArcGIS

  1. SimpleSAMLphp IdP에서 인증 소스를 구성합니다.
    1. 인증 소스를 생성합니다.

      SimpleSAMLphp는 LDAP 서버, SQL Server 사용자, Active Directory 도메인 등 여러 인증 소스에서의 사용자 인증을 지원합니다. 아래 예에서는 SimpleSAMLphp IdP에서 Apache Directory Server를 인증 소스로 구성하는 방법을 보여 줍니다.

      <SimpleSAML_HOME>/config/authsources.php 파일에서 인증 소스를 구성할 수 있습니다. LDAP 서버를 구성하려면 config/authsources.php 파일을 열고 LDAP 기반의 인증 소스를 다음과 같은 형식으로 추가합니다.

      'example-ldapApacheDS' => array(
      		'ldap:LDAP',
      		/* The hostname of the LDAP server. */
      		'hostname' => 'host:port',
      		/* Whether SSL/TLS should be used when contacting the LDAP server. */
      		'enable_tls' => TRUE,
      		/*
      		 * Which attributes should be retrieved from the LDAP server.
      		 * This can be an array of attribute names, or NULL, in which case
      		 * all attributes are fetched.
      		 */
      		'attributes' => NULL,
      		/*
      		 * The pattern that should be used to create the users DN given the username.
      		 * %username% in this pattern will be replaced with the user's username.
      		 *
      		 * This option is not used if the search.enable option is set to TRUE.
      		 */
      		'dnpattern' => 'uid=%username%,ou=users,ou=system',
      		/*
      		 * As an alternative to specifying a pattern for the users DN, it is possible to
      		 * search for the username in a set of attributes. This is enabled by this option.
      		 */
      		'search.enable' => FALSE,
      		/*
      		 * The DN that will be used as a base for the search.
      		 * This can be a single string, in which case only that DN is searched, or an
      		 * array of strings, in which case they will be searched in the order given.
      		 */
      		'search.base' => 'ou=users,ou=system',
      		/*
      		 * The attribute(s) the username should match against.
      		 *
      		 * This is an array with one or more attribute names. Any of the attributes in
      		 * the array may match the value the username.
      		 */
      		'search.attributes' => array('uid', 'mail'),
      		/*
      		 * The username & password the simpleSAMLphp should bind to before searching. If
      		 * this is left as NULL, no bind will be performed before searching.
      		 */
      		'search.username' => 'uid=admin,ou=system',
      		'search.password' => 'password',
      	),

      Portal for ArcGIS 은 엔터프라이즈 IDP에서 엔터프라이즈 로그인의 givenNameemail address 속성 내부 흐름을 지원합니다. 사용자가 엔터프라이즈 로그인을 사용하여 로그인하고 Portal for ArcGISgivennameemail 또는 mail이라는 이름의 속성을 받을 경우(어떤 속성이든) Portal for ArcGIS은 IDP에게 받은 값으로 사용자 계정의 전체 이름과 이메일 주소를 채웁니다.

      엔터프라이즈 IDP의 이메일 주소를 Portal for ArcGIS으로 전달하는 것이 좋습니다. 그러면 나중에 사용자가 관리자로 승격되었을 때 유용합니다. 계정에 이메일 주소를 넣으면 사용자가 관리 활동에 대한 알림을 수신하고 다른 사용자에게 기관 가입을 권유하는 초대를 보낼 수 있습니다.

    2. 위에서 생성한 인증 소스를 SimpleSAMLphp IdP에서 인증 모듈로 구성합니다. metadata/ saml20-idp-hosted.php 파일을 열고 사용할 인증 소스를 추가합니다.
      /*
      	 * Authentication source to use. Must be one that is configured in	 * 'config/authsources.php'.	 */
      	'auth' => 'example-ldapApacheDS',
  2. SimpleSAMLphp IDP에서 지원하는 이름 식별자 형식을 구성합니다. < SimpleSAML_HOME >/metadata/saml20-idp-hosted.php 파일을 열고 아래 코드 조각을 추가합니다. 아래 예시에서는 사용자 인증 후 SimpleSAMLphp IdP에서 uidNameIDPortal for ArcGIS에 전달합니다.
    'NameIDFormat' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent',		'authproc' => array(
    			  3 => array(
    			  'class' => 'saml:AttributeNameID',			  'attribute' => 'uid',	              'Format' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent',				  ),
    			),
  3. Portal for ArcGIS 기관의 SimpleSAMLphp IDP를 등록합니다.
    1. 포털 웹 사이트에 내 기관의 관리자로 로그인하여 기관 > 설정 편집 > 보안을 클릭합니다.
    2. 엔터프라이즈 로그인 섹션에서 단일 아이덴티티 공급자 옵션을 선택하고 엔터프라이즈 로그인 설정 버튼을 클릭한 다음, 창이 나타나면 기관의 이름을 입력합니다(예시: City of Redlands). 사용자가 포털 웹 사이트에 접근하는 경우 이 텍스트가 SAML 로그인 옵션의 일부로 나타납니다(예시: City of Redlands 계정 사용).
      참고 사항:

      포털에 대해 하나의 엔터프라이즈 IDP 또는 하나의 IDP 페더레이션만 등록할 수 있습니다.

    3. 사용자가 자동으로 또는 관리자가 계정을 포털에 추가한 후 기관에 가입할 수 있는지 여부를 선택합니다. 첫 번째 옵션을 선택하면 사용자가 관리자의 개입 없이 엔터프라이즈 로그인으로 기관에 로그인할 수 있습니다. 사용자의 계정은 처음 로그인할 때 기관에 자동으로 기관에 등록됩니다. 두 번째 옵션을 이용하려면 관리자가 커맨드 라인 유틸리티 또는 Python 스크립트 샘플을 사용하여 필요한 계정을 기관에 등록해야 합니다. 계정이 등록되고 나면 사용자는 기관에 로그인할 수 있게 됩니다.
      팁:

      하나 이상의 엔터프라이즈 계정을 포털의 관리자로 지정하고 초기 관리자 계정을 삭제하거나 수준을 내리는 것이 좋습니다. 또한 사용자가 자신의 계정을 생성하지 못하도록 포털 웹 사이트에서 계정 생성 버튼 및 등록 페이지(signup.html)를 비활성화하는 것이 좋습니다. 자세한 지침은 포털에서 SAML을 준수하는 ID 공급자 구성을 참고하세요.

    4. 다음 세 가지 옵션 중 하나를 사용하여 IDP에 대한 메타데이터 정보를 제공합니다.

      URL - SimpleSAMLphp 페더레이션 메타데이터의 URL에 접근할 수 있으면 이 옵션을 선택합니다. 이는 일반적으로 https://<simpleSAML-server>/<saml-app-name>/saml2/idp/metadata.php입니다.

      참고 사항:

      엔터프라이즈 IDP가 자체 서명된 인증서를 포함하면 메타데이터의 HTTPS URL을 지정하려는 경우 오류가 발생할 수 있습니다. Portal for ArcGIS에서 IDP의 자체 서명된 인증서를 확인할 수 없기 때문에 이 오류가 발생합니다. 또는 URL에서 HTTP를 사용하거나, 아래의 다른 옵션 중 하나를 사용하거나, 신뢰할 수 있는 인증서로 IDP를 구성합니다.

      파일 - URL에 접근할 수 없으면 이 옵션을 선택합니다. URL의 메타데이터를 XML 파일로 저장하고 파일 옵션을 사용하여 Portal for ArcGIS에 업로드합니다.

      매개변수 - URL 또는 페더레이션 메타데이터 파일에 접근할 수 없는 경우 이 옵션을 선택합니다. 값을 수동으로 입력하고 요청을 받은 매개변수인 로그인 URL과 인증서를 BASE 64 형식으로 인코딩하여 제공합니다. SimpleSAMLphp 관리자에게 이러한 매개변수를 확인할 수 있습니다.

  4. 다음과 같은 고급 설정을 적절히 구성합니다.
    • 어설션 암호화 - 이 옵션을 선택하면 SAML 어설션 응답을 암호화하도록 SimpleSAMLphp가 구성됩니다.
    • 서명한 요청 활성화 - 이 옵션을 선택하면 SimpleSAMLphp로 보낸 SAML 인증 요청이 Portal for ArcGIS에 의해 서명됩니다.
    • 엔터티 ID - 새 엔터티 ID를 사용하여 포털을 SimpleSAMLphp에 고유하게 식별하려면 이 값을 업데이트합니다.
    • ID 공급자에 로그아웃 전파 - 이 옵션을 선택하면 Portal for ArcGIS로그아웃 URL을 사용하여 사용자를 SimpleSAMLphp에서 로그아웃시킵니다. 로그아웃 URL 설정에서 사용할 URL을 입력합니다. IDP의 로그아웃 URL이 서명되어야 하는 경우 서명한 요청 활성화를 선택해야 합니다.
    • 로그인 시 프로필 업데이트 - 이 옵션을 선택하면 Portal for ArcGIS에서 사용자의 givenNameemail address속성이 업데이트됩니다(마지막 로그인 이후 이러한 속성이 변경된 경우).
    • SAML 기반 그룹 멤버십 활성화 - 이 옵션을 선택하면 그룹 생성 프로세스 중에 기관 구성원이 지정된 SAML 기반 엔터프라이즈 그룹을 Portal for ArcGIS 그룹에 연결할 수 있습니다.
    • 로그아웃 URL - 현재 로그인되어 있는 사용자를 로그아웃시키는 데 사용할 IDP URL입니다. 로그아웃 URL은 일반적으로 https://idphost.domain.com/simplesaml/saml2/idp/SingleLogoutService.php입니다. 이 URL은 IDP 메타데이터 파일의 SingleLogoutService 요소 내에서 정의됩니다. 메타데이터 파일 URL은 일반적으로 http://[simpleSAML-server]/simplesaml/saml2/idp/metadata.php입니다.

    어설션 암호화서명한 요청 활성화 설정에는 포털 KeyStore의 samlcert 인증서가 사용됩니다. 새 인증서를 사용하려면 samlcert 인증서를 삭제하고 포털로 인증서 가져오기의 단계에 따라 동일한 별칭(samlcert)의 새 인증서를 생성한 다음 포털을 다시 시작합니다.

SimpleSAMLphp에 신뢰할 수 있는 서비스 공급자로 Portal for ArcGIS 등록

  1. <SimpleSAMLphp_HOME>/metatadata/saml20-sp-remote.php 파일을 구성하여 SimpleSAML에서 Portal for ArcGIS을 신뢰할 수 있는 서비스 공급자로 구성합니다.
    1. Portal for ArcGIS 기관의 메타데이터 XML 파일을 가져옵니다.

      메타데이터 파일을 가져오려면 내 기관의 관리자로 로그인하여 기관 페이지를 엽니다. 설정 편집 버튼, 보안 탭을 차례로 클릭하고 엔터프라이즈 로그인 섹션에서 서비스 공급자 가져오기 버튼을 클릭합니다.

    2. 이전의 하위 단계에서 가져온 XML 파일을 PHP 형식으로 변환합니다.

      SimpleSAMLphp에서는 서비스 공급자의 메타데이터 정보가 PHP 형식으로 제공되어야 합니다. SimpleSAMLphp에는 simpleSAMLphp 설치에서 기본 설정에 따라 https://<simpleSAML-server>/<saml-app-name>/admin/metadata-converter.php(으)로 제공되는 XML-PHP 메타데이터 변환기가 내장되어 있습니다. 이 변환기를 사용하여 XML을 PHP로 변환합니다.

    3. metatadata/saml20-sp-remote.php 파일을 열고 위의 1.b 단계에서 생성한 PHP 형식으로 서비스 공급자의 구성을 추가합니다.

      다음은 메타데이터 파일에 추가된 서비스 공급자의 구성에 대한 예입니다.

      /* The following is a Portal for ArcGIS organization service provider */
      $metadata['webadaptorhost.domain.com.webadaptorname'] = array (  'entityid' => ' webadaptorhost.domain.com.webadaptorname',  'name' =>
        array (    'en' => 'portal ',  ),  'description' =>
        array (    'en' => 'portal ',  ),  'OrganizationName' =>
        array (    'en' => 'portal ',  ),  'OrganizationDisplayName' =>
        array (    'en' => 'portal ',  ),  'url' =>
        array (    'en' => 'https://webadaptorhost.domain.com/webadaptorname',  ),  'OrganizationURL' =>
        array (    'en' => 'https://webadaptorhost.domain.com/webadaptorname',  ),  'contacts' =>
        array (  ),  'metadata-set' => 'saml20-sp-remote',  'AssertionConsumerService' =>
        array (    0 =>
          array (      'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',      'Location' => 'https://webadaptorhost.domain.com/webadaptorname/sharing/rest/oauth2/saml/signin',      'index' => 1,    ),    1 =>
          array (      'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',      'Location' => 'https://webadaptorhost.domain.com/webadaptorname/sharing/rest/oauth2/saml/signin',      'index' => 2,    ),  ),  'SingleLogoutService' =>
        array (  ),
      );
  2. 사용자 인증 후 SimpleSAMLphp IdP에서 Portal for ArcGISNameID(으)로 전달하는 속성을 구성합니다. 이렇게 하려면 이전 단계에서 추가한 서비스 공급자 구성의 끝부분에 속성을 추가합니다.

    아래 예에서는 사용자 인증 후 SimpleSAMLphp IdP에서 uid을(를) NameID(으)로 Portal for ArcGIS에 전달합니다. (이때 webadaptorhost.domain.com.webadaptorname을(를) 포털의 URL로 바꿉니다.)

    'NameIDFormat'               => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent', 'simplesaml.nameidattribute' => 'uid',
    /* The following indicates whether or not to send all the attributes received from the authentication source to the service provider.  If true, it will send, otherwise it will not send all the attributes*/
      'simplesaml.attributes'      => true,
    );
  3. SimpleSAMLphp를 엔터프라이즈 IDP로 등록할 때 어설션 암호화 고급 설정을 선택한 경우 1단계에서 추가한 서비스 공급자의 구성 끝 부분에 아래의 속성을 추가합니다.
    /*
      Whether assertions sent to this SP should be encrypted. The default value is FALSE.  */
      'assertion.encryption' => true,
    );