Skip To Content

Shibboleth 구성

Shibboleth 3.2x를 Portal for ArcGIS의 엔터프라이즈 로그인 ID 공급자로 구성할 수 있습니다. 구성 절차는 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에 Shibboleth를 엔터프라이즈 ID 공급자로 등록

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

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

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

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

  4. 다음 두 가지 옵션 중 하나를 사용하여 ID 공급자에 대한 메타데이터 정보를 제공합니다.
    • File - 기본 설정에 따라 Shibboleth에서는 SHIBBOLETH_HOME/metadata에 IdP 메타데이터 파일을 제공합니다. 메타데이터 파일에 접근할 수 있으면 엔터프라이즈 ID 공급자의 메타데이터에 대해 파일 옵션을 선택하고 SHIBBOLETH_HOME/metadata/idp-metadata.xml 파일로 이동합니다.
    • 매개변수 - 파일에 접근할 수 없는 경우 이 옵션을 선택합니다. 값을 수동으로 입력하고 요청된 매개변수, 즉 로그인 URL과 인증서를 제공합니다. Shibboleth 관리자에게 이러한 매개변수를 확인할 수 있습니다.
  5. 다음과 같은 고급 설정을 적절히 구성합니다.
    • 어설션 암호화 - 이 옵션을 선택하면 SAML 어설션 응답을 암호화하도록 Shibboleth가 구성됩니다.
    • 서명한 요청 활성화 - 이 옵션을 선택하면 Shibboleth로 보내진 SAML 인증 요청이 Portal for ArcGIS에 의해 서명됩니다.
    • 엔터티 ID - 새 엔터티 ID를 사용하여 포털을 Shibboleth에 고유하게 식별하려면 이 값을 업데이트합니다.

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

    참고 사항:

    현재 ID 공급자에 로그아웃 전파로그아웃 URL은 지원되지 않습니다.

  6. 선택적으로 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 입력을 마쳤으면 구성 업데이트를 클릭하여 변경 내용을 저장하고 포털을 다시 시작합니다.

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

  1. Shibboleth에서 신뢰 당사자로 Portal for ArcGIS를 구성합니다.
    1. 포털의 메타데이터 파일을 가져와 XML 파일로 저장합니다.

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

    2. SHIBBOLETH_HOME/conf/metadata-providers.xml 파일에서 새 MetadataProvider 요소를 정의하여 Portal for ArcGIS를 Shibboleth의 신뢰할 수 있는 서비스 공급자로 구성합니다.

      아래 코드 조각을 루트 MetadataProvider 요소 내에 추가합니다. 기관의 메타데이터 XML 파일(위의 1.a 단계에서 저장)에 대한 경로를 제공합니다.

      <MetadataProvider id="EsriSP" xsi:type="FilesystemMetadataProvider"
      xmlns="urn:mace:shibboleth:2.0:metadata" 
      	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      	xsi:schemaLocation="urn:mace:shibboleth:2.0:metadata http://shibboleth.net/schema/idp/shibboleth-metadata.xsd"
      	failFastInitialization="true"
      	metadataFile=" <PATH_TO_THE_SAVED_METADATA>/esri-sp-metadata.xml" />
  2. 사용자 인증을 구성합니다. 다음 예에서 SHIBBOLETH_HOME/conf/ldap.properties: 파일의 필요 등록정보를 업데이트하여 LDAP Directory Server를 사용자 저장소로 구성합니다.

    idp.authn.LDAP.authenticator = bindSearchAuthenticator

    idp.authn.LDAP.ldapURL = ldaps://myldap.example.org:port

    idp.authn.LDAP.baseDN = ou=People,dc=example,dc=org

    idp.authn.LDAP.userFilter= (uid={user})

    idp.authn.LDAP.bindDN = cn=readonlyuser,dc=example,dc=org

    idp.authn.LDAP.bindDNCredential = userpassword

  3. Shibboleth에서 반환하도록 사용자 속성을 구성합니다.
    1. SHIBBOLETH_HOME/conf/attribute-resolver.xml을(를) 편집합니다. 의견을 추가하거나 기존의 모든 예제 속성 정의 및 데이터 커넥터를 삭제합니다.
    2. SHIBBOLETH_HOME/conf/attribute-resolver-full.xml 파일에서 SHIBBOLETH_HOME/conf/attribute-resolver.xml 파일로 mailgivenName에 대한 정의를 복사합니다. 그런 다음 이름 ID로 사용되는 속성에 다음과 같은 항목을 추가합니다.

      <resolver:AttributeDefinition xsi:type="ad:Simple" id="<NameID attribute>" sourceAttributeID ="<NameID attribute>">
      			<resolver:Dependency ref="myLDAP" />
      			<resolver:AttributeEncoder xsi:type="SAML2StringNameID" xmlns="urn:mace:shibboleth:2.0:attribute:encoder"
      					nameFormat="urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified" />
      		</resolver:AttributeDefinition>

    3. SHIBBOLETH_HOME/conf/attribute-resolver-ldap.xml에서 SHIBBOLETH_HOME/conf/attribute-resolver.xml(으)로 LDAP 데이터 커넥터를 복사합니다.
    4. 서비스 공급자로 릴리스하기 위해 속성을 구성합니다. SHIBBOLETH_HOME/conf/attribute-filter.xml 파일을 편집하고 다음을 추가합니다.
    참고 사항:

    mygis.maps.arcgis.com을(를) 기관의 엔터티 ID로 바꿉니다.

    <AttributeFilterPolicy id="ArcGIS">
            <PolicyRequirementRule xsi:type="Requester" value="mygis.maps.arcgis.com" />
    			<AttributeRule attributeID="<NameID Attribute>">
    				<PermitValueRule xsi:type="ANY" />
    			</AttributeRule>
    			<AttributeRule attributeID="givenName">
    				<PermitValueRule xsi:type="ANY" />
    			</AttributeRule>
    			<AttributeRule attributeID="mail">
    				<PermitValueRule xsi:type="ANY" />
    			</AttributeRule>
    		</AttributeFilterPolicy>
  4. SHIBBOLETH_HOME/conf/relying-party.xml 파일을 편집합니다.
    1. 아래 XML 코드를 복사하고 shibboleth.RelyingPartyOverrides 요소 내부에 붙여넣어 Shibboleth ID 공급자에 대한 기본 구성을 무시할 수 있습니다.
      <util:list id="shibboleth.RelyingPartyOverrides">
      <bean parent="RelyingPartyByName" c:relyingPartyIds="mygis.maps.arcgis.com">
      <property name="profileConfigurations">
       <list>
        <bean parent="SAML2.SSO"    p:nameIDFormatPrecedence="urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified" />
       </list>
      </property>
      </bean>
          </util:list>
      참고 사항:

      mygis.maps.arcgis.com을(를) 기관의 엔터티 ID로 바꿉니다.

      nameIDFormatPrecedence 매개변수는 ID 공급자에게 ArcGIS OnlinePortal for ArcGIS에 필요한 unspecified 형식으로 SAML 이름 ID 속성을 보내도록 지시합니다.

    2. encryptAssertions 매개변수를 false(으)로 설정하여 Shibboleth ID 공급자에서 어설션 암호화를 해제합니다.
      <bean parent="RelyingPartyByName" c:relyingPartyIds="mygis.maps.arcgis.com">
      		<property name="profileConfigurations">
      			<list>
      				<bean parent="SAML2.SSO" 					p:nameIDFormatPrecedence="urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified" 
      					p:encryptAssertions="false" />
      			</list>
      		</property>
      		</bean>
  5. SHIBBOLETH_HOME/conf/saml-nameid.xml 파일을 편집하고 이 섹션을
    <!--
    <bean parent="shibboleth.SAML2AttributeSourcedGenerator"
       p:format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"
       p:attributeSourceIds="#{ {'mail'} }" />
    -->

    다음으로 바꿉니다.

    <bean parent="shibboleth.SAML2AttributeSourcedGenerator"
                p:format="urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified"
                p:attributeSourceIds="#{ {'your-name-id-attribute'} }" />

  6. Shibboleth daemon(Linux) 또는 서비스(Windows)를 다시 시작합니다.