Konfigurowanie usługi IdP Shibboleth na potrzeby logowania SSO do rozwiązań Adobe

Dotyczy przedsiębiorstw.

Przegląd

Administrator może skonfigurować w serwisie Adobe Admin Console domeny, które będą umożliwiać pojedyncze logowanie (SSO) z użyciem identyfikatora Federated ID. Po zweryfikowaniu domeny katalog ją zawierający zostanie skonfigurowany tak, aby umożliwić użytkownikom logowanie się do usługi Creative Cloud. Użytkownicy mogą korzystać z usługi IdP (dostawcy tożsamości), aby logować się z użyciem adresów e-mail należących do tej domeny. Proces ten jest obsługiwany przez usługę programową uruchomioną w sieci korporacyjnej i dostępną z Internetu albo przez usługę w chmurze udostępnianą przez firmę zewnętrzną, która umożliwia weryfikację danych logowania użytkownika przez bezpieczne połączenie nawiązywane z użyciem protokołu SAML.

Jedną z takich usług IdP (dostawców tożsamości) jest usługa Shibboleth. Aby korzystać z usługi Shibboleth, potrzebny jest dostępny z Internetu serwer mający dostęp do usług katalogowych w sieci korporacyjnej. W tym dokumencie opisano proces konfigurowania serwisu Admin Console i serwera Shibboleth w sposób umożliwiający pojedyncze logowanie do aplikacji Adobe Creative Cloud i powiązanych z nimi serwisów internetowych.

Dostęp do usługi IdP jest zwykle realizowany z użyciem osobnej sieci skonfigurowanej w sposób dopuszczający tylko ściśle określone rodzaje komunikacji między serwerami a siecią wewnętrzną i zewnętrzną — jest to tzw. strefa zdemilitaryzowana (DMZ). Opis topologii takiej sieci oraz konfiguracji systemu operacyjnego takiego serwera wykracza poza zakres tego dokumentu.

Wymagania wstępne

Zanim będzie można skonfigurować domenę na potrzeby logowania SSO z użyciem Shibboleth jako usługi IdP, muszą zostać spełnione następujące wymagania:

  • Musi być zainstalowana i skonfigurowana najnowsza wersja oprogramowania Shibboleth.
  • Wszystkie konta Active Directory, które zostaną powiązane z kontem Creative Cloud dla przedsiębiorstw, muszą mieć w katalogu Active Directory zdefiniowane adresy e-mail.
Uwaga:

Opisane w tym dokumencie kroki konfigurowania usługi Shibboleth IdP na potrzeby logowania SSO do rozwiązań Adobe zostały przetestowane w wersji 3.

Konfigurowanie logowania SSO z użyciem usługi Shibboleth

Aby skonfigurować logowanie SSO w swojej domenie, wykonaj następujące czynności:

  1. Zaloguj się w serwisie Admin Console i rozpocznij tworzenie katalogu Federated ID. Jako usługę IdP wybierz opcję Inni dostawcy SAML. Skopiuj wartości Adres URL usługi ACS (ACS URL) oraz Identyfikator podmiotu (Entity ID) z ekranu Dodaj profil SAML.
  2. Skonfiguruj usługę Shibboleth, podając wartości ACS URL oraz Entity ID. Następnie pobierz plik metadanych Shibboleth.
  3. Wróć do serwisu Adobe Admin Console i prześlij plik metadanych usługi Shibboleth na ekranie Dodaj profil SAML, a następnie kliknij przycisk Gotowe.

Konfigurowanie usługi Shibboleth

Po pobraniu z serwisu Adobe Admin Console pliku XML z metadanymi SAML wykonaj następujące kroki, aby zaktualizować pliki konfiguracyjne Shibboleth.

  1. Skopiuj pobrany plik metadanych do następującej lokalizacji i zmień jest nazwę na adobe-sp-metadata.xml:

    %{idp.home}/metadata/

  2. Zaktualizuj ten plik, aby do systemów Adobe były zwracane odpowiednie informacje.

    Zastąp następujące wiersze w pliku:

    <md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:persistent</md:NameIDFormat>

    <md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</md:NameIDFormat>

    Poniższymi wierszami:

    <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</md:NameIDFormat>

    Zastąp także wiersz:

    <md:SPSSODescriptor AuthnRequestsSigned="true" WantAssertionsSigned="true" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">

    Poniższym wierszem:

    <md:SPSSODescriptor AuthnRequestsSigned="false" WantAssertionsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">

  3. Edytuj plik metadata-providers.xml.

    Zaktualizuj plik %{idp.home}/conf/metadata-providers.xml, wprowadzając w nim lokalizację pliku metadanych adobe-sp-metadata.xml (wiersz 29 na poniższej ilustracji), utworzonego wcześniej w kroku 1.

    <!--
    <MetadataProvider id=&quot;HTTPMetadata&quot;
    xsi:type=&quot;FileBackedHTTPMetadataProvider&quot;
    backingFile=&quot;%{idp.home}/metadata/localCopyFromXYZHTTP.xml&quot;
    metadataURL=&quot;http://WHATEVER&quot;>
    <MetadataFilter xsi:type=&quot;SignatureValidation&quot; requireSignedRoot=&quot;true&quot;>
    <PublicKey>
    MIIBI.....
    </PublicKey>
    </MetadataFilter>
    <MetadataFilter xsi:type=&quot;RequiredValidUntil&quot; maxValidityInterval=&quot;P30D&quot;/>
    <MetadataFilter xsi:type=&quot;EntityRoleWhiteList&quot;>
    <RetainedRole>md:SPSSODescriptor</RetainedRole>
    </MetadataFilter>
    </MetadataProvider>
    -->
    <!--
    Przykładowy plik dostawcy metadanych. Skorzystaj z tej metody, jeśli chcesz załadować metadane
    z pliku lokalnego. Takie rozwiązanie można zastosować, jeśli korzystasz z lokalnych usługodawców, którzy nie są objęci federacją, ale którym chcesz zaoferować usługę.
    Jeśli nie użyjesz filtru SignatureValidation, to musisz samodzielnie zadbać o to, aby zawartość pliku była godna zaufania.
    -->
    <MetadataProvider id=&quot;LocalMetadata&quot; xsi:type=&quot;FilesystemMetadataProvider&quot; metadataFile=&quot;%{idp.home}/metadata/adobe-sp-metadata.xml&quot;/>
    <!-- <MetadataProvider id=&quot;HTTPMetadata&quot; xsi:type=&quot;FileBackedHTTPMetadataProvider&quot; backingFile=&quot;%{idp.home}/metadata/localCopyFromXYZHTTP.xml&quot; metadataURL=&quot;http://WHATEVER&quot;> <MetadataFilter xsi:type=&quot;SignatureValidation&quot; requireSignedRoot=&quot;true&quot;> <PublicKey> MIIBI..... </PublicKey> </MetadataFilter> <MetadataFilter xsi:type=&quot;RequiredValidUntil&quot; maxValidityInterval=&quot;P30D&quot;/> <MetadataFilter xsi:type=&quot;EntityRoleWhiteList&quot;> <RetainedRole>md:SPSSODescriptor</RetainedRole> </MetadataFilter> </MetadataProvider> --> <!-- Przykładowy plik dostawcy metadanych. Skorzystaj z tej metody, jeśli chcesz załadować metadane z pliku lokalnego. Takie rozwiązanie można zastosować, jeśli korzystasz z lokalnych usługodawców, którzy nie są objęci federacją, ale którym chcesz zaoferować usługę. Jeśli nie użyjesz filtru SignatureValidation, to musisz samodzielnie zadbać o to, aby zawartość pliku była godna zaufania. --> <MetadataProvider id=&quot;LocalMetadata&quot; xsi:type=&quot;FilesystemMetadataProvider&quot; metadataFile=&quot;%{idp.home}/metadata/adobe-sp-metadata.xml&quot;/>
        <!--
        <MetadataProvider id=&quot;HTTPMetadata&quot;
                          xsi:type=&quot;FileBackedHTTPMetadataProvider&quot;
                          backingFile=&quot;%{idp.home}/metadata/localCopyFromXYZHTTP.xml&quot;
                          metadataURL=&quot;http://WHATEVER&quot;> 
            
            <MetadataFilter xsi:type=&quot;SignatureValidation&quot; requireSignedRoot=&quot;true&quot;>
                <PublicKey>
                    MIIBI.....
                </PublicKey>
            </MetadataFilter>
            <MetadataFilter xsi:type=&quot;RequiredValidUntil&quot; maxValidityInterval=&quot;P30D&quot;/>
            <MetadataFilter xsi:type=&quot;EntityRoleWhiteList&quot;>
                <RetainedRole>md:SPSSODescriptor</RetainedRole>
            </MetadataFilter>
        </MetadataProvider>
        -->   
    
        <!--
        Przykładowy plik dostawcy metadanych.  Skorzystaj z tej metody, jeśli chcesz załadować metadane
        z pliku lokalnego.  Takie rozwiązanie można zastosować, jeśli korzystasz z lokalnych usługodawców, którzy nie są objęci federacją, ale którym chcesz zaoferować usługę.
        
        Jeśli nie użyjesz filtru SignatureValidation, to musisz samodzielnie zadbać o to, aby zawartość pliku była godna zaufania.
        -->
        
        
        <MetadataProvider id=&quot;LocalMetadata&quot;  xsi:type=&quot;FilesystemMetadataProvider&quot; metadataFile=&quot;%{idp.home}/metadata/adobe-sp-metadata.xml&quot;/>

Rozwiązywanie problemów z konfiguracją Shibboleth

Jeśli nie możesz się zalogować w serwisie adobe.com, sprawdź następujące pliki konfiguracyjne usługi Shibboleth w poszukiwaniu problemów:

1. attribute-resolver.xml

Plik filtra atrybutów, zaktualizowany podczas konfigurowania usługi Shibboleth. Znajdują się w nim definicje atrybutów podawanych dostawcy usług Adobe. Konieczne jest jednak odwzorowanie tych atrybutów na odpowiednie atrybuty zdefiniowane w katalogu LDAP / Active Directory organizacji.

Zmodyfikuj plik attribute-resolver.xml znajdujący się w następującej lokalizacji:

%{idp.home}/conf/attribute-resolver.xml

Dla każdego z następujących atrybutów podaj identyfikator atrybutu źródłowego zdefiniowany w organizacji:

  • FirstName (wiersz 1 poniżej)
  • LastName (wiersz 7 poniżej)
  • Email (wiersz 13 poniżej)
<resolver:AttributeDefinition xsi:type=&quot;ad:Simple&quot; id=&quot;NameID&quot; sourceAttributeID=&quot;mail&quot;>
<resolver:Dependency ref=&quot;myLDAP&quot; />
<resolver:AttributeEncoder xsi:type=&quot;SAML2StringNameID&quot;
xmlns=&quot;urn:mace:shibboleth:2.0:attribute:encoder&quot;
nameFormat=&quot;urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress&quot; />
</resolver:AttributeDefinition>
<resolver:AttributeDefinition xsi:type=&quot;ad:Simple&quot; id=&quot;Email&quot;
sourceAttributeID=&quot;mail&quot;>
<resolver:Dependency ref=&quot;myLDAP&quot; />
<resolver:AttributeEncoder xsi:type=&quot;enc:SAML2String&quot; name=&quot;Email&quot; />
</resolver:AttributeDefinition>
<resolver:AttributeDefinition xsi:type=&quot;ad:Simple&quot; id=&quot;FirstName&quot;
sourceAttributeID=&quot;givenName&quot;>
<resolver:Dependency ref=&quot;myLDAP&quot; />
<resolver:AttributeEncoder xsi:type=&quot;enc:SAML2String&quot; name=&quot;FirstName&quot; />
</resolver:AttributeDefinition>
<resolver:AttributeDefinition xsi:type=&quot;ad:Simple&quot; id=&quot;LastName&quot;
sourceAttributeID=&quot;sn&quot;>
<resolver:Dependency ref=&quot;myLDAP&quot; />
<resolver:AttributeEncoder xsi:type=&quot;enc:SAML2String&quot; name=&quot;LastName&quot; /></resolver:AttributeDefinition>
<resolver:AttributeDefinition xsi:type=&quot;ad:Simple&quot; id=&quot;NameID&quot; sourceAttributeID=&quot;mail&quot;> <resolver:Dependency ref=&quot;myLDAP&quot; /> <resolver:AttributeEncoder xsi:type=&quot;SAML2StringNameID&quot; xmlns=&quot;urn:mace:shibboleth:2.0:attribute:encoder&quot; nameFormat=&quot;urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress&quot; /> </resolver:AttributeDefinition> <resolver:AttributeDefinition xsi:type=&quot;ad:Simple&quot; id=&quot;Email&quot; sourceAttributeID=&quot;mail&quot;> <resolver:Dependency ref=&quot;myLDAP&quot; /> <resolver:AttributeEncoder xsi:type=&quot;enc:SAML2String&quot; name=&quot;Email&quot; /> </resolver:AttributeDefinition> <resolver:AttributeDefinition xsi:type=&quot;ad:Simple&quot; id=&quot;FirstName&quot; sourceAttributeID=&quot;givenName&quot;> <resolver:Dependency ref=&quot;myLDAP&quot; /> <resolver:AttributeEncoder xsi:type=&quot;enc:SAML2String&quot; name=&quot;FirstName&quot; /> </resolver:AttributeDefinition> <resolver:AttributeDefinition xsi:type=&quot;ad:Simple&quot; id=&quot;LastName&quot; sourceAttributeID=&quot;sn&quot;> <resolver:Dependency ref=&quot;myLDAP&quot; /> <resolver:AttributeEncoder xsi:type=&quot;enc:SAML2String&quot; name=&quot;LastName&quot; /></resolver:AttributeDefinition>
<resolver:AttributeDefinition xsi:type=&quot;ad:Simple&quot; id=&quot;NameID&quot; sourceAttributeID=&quot;mail&quot;> 
      <resolver:Dependency ref=&quot;myLDAP&quot; /> 
      <resolver:AttributeEncoder xsi:type=&quot;SAML2StringNameID&quot; 
       xmlns=&quot;urn:mace:shibboleth:2.0:attribute:encoder&quot; 
        nameFormat=&quot;urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress&quot; /> 
      </resolver:AttributeDefinition> 
      <resolver:AttributeDefinition xsi:type=&quot;ad:Simple&quot; id=&quot;Email&quot; 
        sourceAttributeID=&quot;mail&quot;> 
        <resolver:Dependency ref=&quot;myLDAP&quot; /> 
        <resolver:AttributeEncoder xsi:type=&quot;enc:SAML2String&quot; name=&quot;Email&quot; /> 
      </resolver:AttributeDefinition> 
      <resolver:AttributeDefinition xsi:type=&quot;ad:Simple&quot; id=&quot;FirstName&quot; 
        sourceAttributeID=&quot;givenName&quot;> 
        <resolver:Dependency ref=&quot;myLDAP&quot; /> 
        <resolver:AttributeEncoder xsi:type=&quot;enc:SAML2String&quot; name=&quot;FirstName&quot; /> 
     </resolver:AttributeDefinition> 
     <resolver:AttributeDefinition xsi:type=&quot;ad:Simple&quot; id=&quot;LastName&quot; 
        sourceAttributeID=&quot;sn&quot;> 
     <resolver:Dependency ref=&quot;myLDAP&quot; /> 
    <resolver:AttributeEncoder xsi:type=&quot;enc:SAML2String&quot; name=&quot;LastName&quot; /></resolver:AttributeDefinition>

2. relying-party.xml

Zaktualizuj plik relying-party.xml znajdujący się w następującej lokalizacji, aby był w nim używany format saml-nameid wymagany przez dostawcę usług Adobe:

%{idp.home}/conf/relying-party.xml

Zaktualizuj atrybut p:nameIDFormatPrecedence (w wierszu 7 poniżej), tak aby zawierał również parametr emailAddress.

<bean parent=&quot;RelyingPartyByName&quot; c:relyingPartyIds=&quot;[entityId&quot;>
<property name=&quot;profileConfigurations&quot;>
<list>
<bean parent=&quot;Shibboleth.SSO&quot; p:postAuthenticationFlows=&quot;attribute-release&quot; />
<ref bean=&quot;SAML1.AttributeQuery&quot; />
<ref bean=&quot;SAML1.ArtifactResolution&quot; />
<bean parent=&quot;SAML2.SSO&quot; p:nameIDFormatPrecedence=&quot;urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress&quot; p:postAuthenticationFlows=&quot;attribute-release&quot; p:encryptAssertions=&quot;false&quot; />
<ref bean=&quot;SAML2.ECP&quot; />
<ref bean=&quot;SAML2.Logout&quot; />
<ref bean=&quot;SAML2.AttributeQuery&quot; />
<ref bean=&quot;SAML2.ArtifactResolution&quot; />
<ref bean=&quot;Liberty.SSOS&quot; />
</list>
</property>
</bean>
<bean parent=&quot;RelyingPartyByName&quot; c:relyingPartyIds=&quot;[entityId&quot;> <property name=&quot;profileConfigurations&quot;> <list> <bean parent=&quot;Shibboleth.SSO&quot; p:postAuthenticationFlows=&quot;attribute-release&quot; /> <ref bean=&quot;SAML1.AttributeQuery&quot; /> <ref bean=&quot;SAML1.ArtifactResolution&quot; /> <bean parent=&quot;SAML2.SSO&quot; p:nameIDFormatPrecedence=&quot;urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress&quot; p:postAuthenticationFlows=&quot;attribute-release&quot; p:encryptAssertions=&quot;false&quot; /> <ref bean=&quot;SAML2.ECP&quot; /> <ref bean=&quot;SAML2.Logout&quot; /> <ref bean=&quot;SAML2.AttributeQuery&quot; /> <ref bean=&quot;SAML2.ArtifactResolution&quot; /> <ref bean=&quot;Liberty.SSOS&quot; /> </list> </property> </bean>
<bean parent=&quot;RelyingPartyByName&quot; c:relyingPartyIds=&quot;[entityId&quot;> 
 <property name=&quot;profileConfigurations&quot;> 
  <list> 
   <bean parent=&quot;Shibboleth.SSO&quot; p:postAuthenticationFlows=&quot;attribute-release&quot; /> 
   <ref bean=&quot;SAML1.AttributeQuery&quot; /> 
   <ref bean=&quot;SAML1.ArtifactResolution&quot; /> 
   <bean parent=&quot;SAML2.SSO&quot; p:nameIDFormatPrecedence=&quot;urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress&quot; p:postAuthenticationFlows=&quot;attribute-release&quot; p:encryptAssertions=&quot;false&quot; /> 
   <ref bean=&quot;SAML2.ECP&quot; /> 
   <ref bean=&quot;SAML2.Logout&quot; /> 
   <ref bean=&quot;SAML2.AttributeQuery&quot; /> 
   <ref bean=&quot;SAML2.ArtifactResolution&quot; /> 
   <ref bean=&quot;Liberty.SSOS&quot; /> 
  </list> 
 </property> 
</bean>

Aby wyłączyć szyfrowanie asercji, zamień także następujące informacje w sekcji DefaultRelyingParty każdego z typów SAML2:

Zastąp następujący wiersz:

encryptAssertions="conditional"

Poniższymi wierszami:

encryptAssertions=”never"

3. saml-nameid.xml

Zaktualizuj plik saml-nameid.xml znajdujący się w następującej lokalizacji:

%{idp.home}/conf/saml-nameid.xml

Zmień wartość atrybutu p:attributeSourceIds (w wierszu 3 poniżej) na "#{ {'Email'} }".

<bean parent=&quot;shibboleth.SAML2AttributeSourcedGenerator&quot;
p:format=&quot;urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress&quot;
p:attributeSourceIds=&quot;#{ {'Email'} }&quot; />
<bean parent=&quot;shibboleth.SAML2AttributeSourcedGenerator&quot; p:format=&quot;urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress&quot; p:attributeSourceIds=&quot;#{ {'Email'} }&quot; />
        <bean parent=&quot;shibboleth.SAML2AttributeSourcedGenerator&quot;
            p:format=&quot;urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress&quot;
            p:attributeSourceIds=&quot;#{ {'Email'} }&quot; />

Przesyłanie pliku metadanych usługi IdP do serwisu Adobe Admin Console

Aby zaktualizować plik metadanych usługi Shibboleth:

  1. Wróć do serwisu Adobe Admin Console.

  2. Prześlij plik metadanych usługi Shibboleth na ekranie Dodaj profil SAML.

    Po skonfigurowaniu tej usługi plik metadanych (idp-metadata.xml) będzie dostępny w następującej lokalizacji na serwerze Shibboleth:

    <shibboleth>/metadata

  3. Kliknij opcję Gotowe.

Więcej informacji: Tworzenie katalogów w serwisie Admin Console.

Testowanie pojedynczego logowania

Przetestuj dostęp użytkowników, logując się w serwisie Adobe lub programie Creative Cloud Desktop z użyciem konta użytkownika zdefiniowanego zarówno we własnym systemie zarządzania identyfikatorami, jak i w serwisie Adobe Admin Console.

Jeśli wystąpią problemy, zapoznaj się z dokumentacją dotyczącą ich rozwiązywania.

Jeśli potrzebna jest dalsza pomoc w konfigurowaniu logowania SSO, przejdź do sekcji Pomoc techniczna w serwisie Adobe Admin Console i utwórz zgłoszenie pomocy.

Pomoc dostępna szybciej i łatwiej

Nowy użytkownik?