Skip To Content

SimpleSAMLphp 구성

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

선택적으로 ID 저장소의 엔터프라이즈 그룹에 대한 메타데이터를 포털에 제공할 수 있습니다. 이를 통해 포털에서 ID 저장소의 기존 엔터프라이즈 그룹을 활용하는 그룹을 생성할 수 있습니다. 구성원이 포털에 로그인한 경우 콘텐츠, 항목, 데이터에 대한 접근 권한은 엔터프라이즈 그룹에 정의된 멤버십 규칙에 따라 제어됩니다. 필요한 엔터프라이즈 그룹 메타데이터를 제공하지 않은 경우에도 그룹을 생성할 수 있습니다. 그러나 이 경우 멤버십 규칙이 ID 저장소가 아니라 Portal for ArcGIS에 의해 제어됩니다.

필수 정보

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

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

Portal for ArcGIS에 SimpleSAMLphp를 엔터프라이즈 ID 공급자로 등록

  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는 엔터프라이즈 ID 공급자에서 엔터프라이즈 로그인 givenNameemail address 속성의 플로-인을 지원합니다. 사용자가 엔터프라이즈 로그인을 사용하여 로그인하고 Portal for ArcGISgivenname, email 또는 mail이라는 이름의 속성을 받을 경우(어떤 속성이든) Portal for ArcGIS는 ID 공급자에게 받은 값으로 사용자 계정의 전체 이름과 이메일 주소를 채웁니다.

      엔터프라이즈 ID 공급자의 이메일 주소를 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에서 uid을(를) NameID(으)로 Portal 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 ID 공급자를 등록합니다.
    1. 포털 웹 사이트에 내 기관의 관리자로 로그인하여 내 기관 > 설정 편집 > 보안을 클릭합니다.
    2. 엔터프라이즈 로그인 섹션에서 ID 공급자 설정 버튼을 클릭하고 창이 나타나면 기관의 이름을 입력합니다(예: City of Redlands). 사용자가 포털 웹 사이트에 접근하는 경우 이 텍스트가 SAML 로그인 옵션의 일부로 나타납니다(예: City of Redlands 계정 사용).
      참고 사항:

      포털에 대해 하나의 엔터프라이즈 ID 공급자만 등록할 수 있습니다.

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

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

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

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

      참고 사항:

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

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

      매개변수 - URL 또는 파일에 접근할 수 없는 경우 이 옵션을 선택합니다. 값을 수동으로 입력하고 요청된 매개변수, 즉 로그인 URL과 인증서를 제공합니다. SimpleSAMLphp 관리자에게 이러한 매개변수를 확인할 수 있습니다.

  4. 다음과 같은 고급 설정을 적절히 구성합니다.
    • 어설션 암호화 - 이 옵션을 선택하면 SAML 어설션 응답을 암호화하도록 SimpleSAMLphp가 구성됩니다.
    • 서명한 요청 활성화 - 이 옵션을 선택하면 SimpleSAMLphp로 보낸 SAML 인증 요청이 Portal for ArcGIS에 의해 서명됩니다.
    • 엔터티 ID - 새 엔터티 ID를 사용하여 포털을 SimpleSAMLphp에 고유하게 식별하려면 이 값을 업데이트합니다.
    • ID 공급자에 로그아웃 전파 - 이 옵션을 선택하면 Portal for ArcGIS로그아웃 URL을 사용하여 사용자를 SimpleSAMLphp에서 로그아웃시킵니다. 로그아웃 URL 설정에서 사용할 URL을 입력합니다. ID 공급자의 로그아웃 URL이 서명되어야 하는 경우 서명한 요청 활성화를 선택해야 합니다.
    • 로그아웃 URL - 현재 로그인되어 있는 사용자를 로그아웃시키는 데 사용할 ID 공급자 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)의 새 인증서를 생성한 다음 포털을 다시 시작합니다.

  5. 선택적으로 ID 저장소의 엔터프라이즈 그룹에 대한 메타데이터를 포털에 제공합니다.
    1. ArcGIS Portal Directory에 내 기관의 관리자로 로그인합니다. URL은 https://webadaptorhost.domain.com/webadaptorname/portaladmin 형식입니다.
    2. 보안 > 구성 > ID 저장소 업데이트를 클릭합니다.
    3. 그룹 구성 JSON을 그룹 저장소 구성(JSON 형식) 텍스트 상자에 입력합니다.
      • 다음 텍스트를 복사하여 사이트에 특정한 정보를 포함하도록 변경합니다.

        {
          "type": "LDAP",  "properties": {
            "userPassword": "secret",    "isPasswordEncrypted": "false",    "user": "uid=admin,ou=system",    "ldapURLForUsers": "ldaps://bar2:10636/ou=users,ou=ags,dc=example,dc=com",    "ldapURLForRoles": "ldaps://bar2:10636/dc=example,dc=com",    "usernameAttribute": "cn",    "caseSensitive": "false",    "userSearchAttribute": "cn",    "memberAttributeInRoles": "member",    "rolenameAttribute":"cn"
          }
        }

        대부분의 경우 user, userPassword, ldapURLForUsers, ldapURLForRoles 매개변수 값만 변경하면 됩니다. LDAP의 URL은 LDAP 관리자가 제공해야 합니다.

        위의 예시에서 LDAP URL은 특정 OU(ou=사용자) 내의 사용자를 나타냅니다. 사용자가 여러 OU에 존재할 경우 LDAP URL은 상위 레벨 OU(또는 필요한 경우 루트 레벨)를 가리킬 수 있습니다. 이 경우 URL은 다음과 같습니다.

        "ldapURLForUsers": "ldaps://bar2:10636/dc=example,dc=com",

        user 매개변수에 사용하는 계정은 기관에서 그룹의 이름을 조회할 권한이 필요합니다. 비밀번호를 일반 텍스트로 입력한 경우에도 포털의 구성 디렉터리에 저장되거나 나타날 때는 암호화됩니다.

        LDAP가 대소문자를 구분하도록 구성된 경우 caseSensitive 매개변수를 false로 설정합니다.

    4. 사용자 저장소 구성을 위한 JSON 입력을 마쳤으면 구성 업데이트를 클릭하여 변경 내용을 저장하고 포털을 다시 시작합니다.

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를 엔터프라이즈 ID 공급자로 등록할 때 어설션 암호화 고급 설정을 선택한 경우 1단계에서 추가한 서비스 공급자의 구성 끝 부분에 아래의 속성을 추가합니다.
    /*
      Whether assertions sent to this SP should be encrypted. The default value is FALSE.  */
      'assertion.encryption' => true,
    );