すべてのプロダクト
Search
ドキュメントセンター

CloudSSO:Shibboleth から CloudSSO への SSO の構成

最終更新日:Jan 18, 2025

このトピックでは、Shibboleth から CloudSSO へのシングルサインオン (SSO) を構成する方法について説明します。

準備

Shibboleth、Apache Tomcat、および Lightweight Directory Access Protocol (LDAP) 認証サーバーをインストールします。

説明

このトピックで説明されている Shibboleth の構成は、あくまで提案であり、Shibboleth から Alibaba Cloud へのエンドツーエンドの SSO プロセスを理解するためだけに使用されます。Alibaba Cloud は、Shibboleth の構成に関するコンサルティングサービスは提供していません。

手順 1: Alibaba Cloud の SAML SP メタデータファイルをダウンロードする

  1. CloudSSO コンソール にログインします。

  2. 左側のナビゲーションウィンドウで、[設定] をクリックします。

  3. [SSO ログイン] セクションで、Security Assertion Markup Language (SAML) サービスプロバイダー (SP) メタデータファイルをダウンロードし、/opt/shibboleth-idp/metadata/aliyun-cloudsso-metadata.xml として保存します。

    後で使用するために、SP の Entity ID を保存します。

手順 2: Shibboleth に Alibaba Cloud を登録する

手順 1: Alibaba Cloud の SAML SP メタデータファイルをダウンロードする で取得したメタデータファイルを /opt/shibboleth-idp/conf/metadata-providers.xml ファイルで構成して、Alibaba Cloud を Shibboleth に登録します。

<!--
    <MetadataProvider id="LocalMetadata"  xsi:type="FilesystemMetadataProvider" metadataFile="PATH_TO_YOUR_METADATA"/>
-->

<!-- ファイル内の前の行に表示されているコードを見つけ、次の行に表示されているコードに置き換えます。 -->

<MetadataProvider id="AliyunMetadata"  xsi:type="FilesystemMetadataProvider" metadataFile="%{idp.home}/metadata/aliyun-cloudsso-metadata.xml"/>

手順 3: Shibboleth によって返されるユーザー属性を構成する

  1. /opt/shibboleth/conf/services.xml ファイルを変更します。

    元の構成ファイルには attribute-resolver.xml フィールドが含まれており、完全な構成情報は提供されていません。完全な構成情報を提供するには、このフィールドを attribute-resolver-full.xml フィールドに置き換える必要があります。

    <value>%{idp.home}/conf/attribute-resolver.xml</value>
    <!-- ファイル内の前の行に表示されているコードを見つけ、次の行に表示されているコードに置き換えます。 -->
    <value>%{idp.home}/conf/attribute-resolver-full.xml</value>
  2. /opt/shibboleth/conf/attribute-resolver-full.xml ファイルを変更します。

    1. /opt/shibboleth/conf/attribute-resolver-full.xml ファイルで、Shibboleth によって返されるユーザー属性を構成します。この例では、mail フィールドがユーザー属性として使用されます。

      <!-- ========================================== -->
      <!--      Attribute Definitions                 -->
      <!-- ========================================== -->
      
      <!-- Schema: Core schema attributes-->
      
      <!-- ファイル内の前の行に表示されているコードを見つけ、次の行に表示されているコードを追加します。 -->
      
      <AttributeDefinition xsi:type="Simple" id="mail">
          <InputDataConnector ref="myLDAP" attributeNames="mail" />
          <AttributeEncoder xsi:type="SAML1String" name="urn:mace:dir:attribute-def:mail" encodeType="false" />
          <AttributeEncoder xsi:type="SAML2String" name="urn:oid:0.9.2342.19200300.100.1.3" friendlyName="mail" encodeType="false" />
      </AttributeDefinition>
    2. LDAP サーバーへの接続を確立するために、/opt/shibboleth/conf/attribute-resolver-full.xml ファイル内の /opt/shibboleth/conf/ldap.properties に含まれる構成情報を読み取ります。

      <!-- Example LDAP Connector -->
      <!--
      	<DataConnector id="myLDAP" xsi:type="LDAPDirectory"
      		ldapURL="%{idp.attribute.resolver.LDAP.ldapURL}"
      		baseDN="%{idp.attribute.resolver.LDAP.baseDN}"
      		principal="%{idp.attribute.resolver.LDAP.bindDN}"
      		principalCredential="%{idp.attribute.resolver.LDAP.bindDNCredential}"
      		useStartTLS="%{idp.attribute.resolver.LDAP.useStartTLS:true}"
      		...
      	</DataConnector>
      -->
      
      <!-- ファイル内の前の行に表示されているコードを見つけ、次の行に表示されているコードに置き換えます。 -->
      
      <DataConnector id="myLDAP" xsi:type="LDAPDirectory"
      			   ldapURL="%{idp.attribute.resolver.LDAP.ldapURL}"
      			   baseDN="%{idp.attribute.resolver.LDAP.baseDN}"
      			   principal="%{idp.attribute.resolver.LDAP.bindDN}"
      			   principalCredential="%{idp.attribute.resolver.LDAP.bindDNCredential}"
      			   useStartTLS="%{idp.attribute.resolver.LDAP.useStartTLS}"
      			   connectTimeout="%{idp.attribute.resolver.LDAP.connectTimeout}"
      			   responseTimeout="%{idp.attribute.resolver.LDAP.responseTimeout}">
      	<FilterTemplate>
      		<![CDATA[
      				%{idp.attribute.resolver.LDAP.searchFilter}
      			]]>
      	</FilterTemplate>
      </DataConnector>
  3. /opt/shibboleth/conf/attribute-filter.xml ファイルに属性フィルターを追加します。

    PolicyRequirementRule タグの value 属性を、手順 1: Alibaba Cloud の SAML SP メタデータファイルをダウンロードする で取得した Entity ID に置き換えます。

    <AttributeFilterPolicyGroup id="ShibbolethFilterPolicy"
    							xmlns="urn:mace:shibboleth:2.0:afp"
    							xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    							xsi:schemaLocation="urn:mace:shibboleth:2.0:afp http://shibboleth.net/schema/idp/shibboleth-afp.xsd">
    	
    <!-- ファイル内の前の行に表示されているコードを見つけ、次の行に表示されているコードを追加します。 -->
    	
    <AttributeFilterPolicy id="aliyun">
    	<PolicyRequirementRule xsi:type="Requester" value="[entityID]" />
    	<AttributeRule attributeID="mail">
    		<PermitValueRule xsi:type="ANY" />
    	</AttributeRule>
    </AttributeFilterPolicy>

手順 4: SAML レスポンスの NameID 属性を構成する

  1. /opt/shibboleth/conf/relying-party.xml ファイルの NameID 属性を構成します。

    bean タグの relyingPartyIds 属性を、手順 1: Alibaba Cloud の SAML SP メタデータファイルをダウンロードする で取得した Entity ID に置き換えます。

    <!--
    	Override example that identifies a single RP by name and configures it
    	for SAML 2 SSO without encryption. This is a common "vendor" scenario.
    -->
    <!--
    <bean parent="RelyingPartyByName" c:relyingPartyIds="https://sp.example.org">
    	<property name="profileConfigurations">
    		<list>
    			<bean parent="SAML2.SSO" p:encryptAssertions="false" />
    		</list>
    	</property>
    </bean>
    -->
    
    <!-- ファイル内の前の行に表示されているコードを見つけ、次の行に表示されているコードに置き換えます。 -->
    
    <bean parent="RelyingPartyByName" c:relyingPartyIds="[entityID]">
        <property name="profileConfigurations">
            <list>
                <bean parent="SAML2.SSO" p:encryptAssertions="false" p:nameIDFormatPrecedence="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress" />
            </list>
        </property>
    </bean>
  2. /opt/shibboleth/conf/saml-nameid.xml ファイルで NameID 属性の生成方法を構成します。

    <!-- 次のコードを見つけます。構成を有効にするには、コードをコメントアウトします。-->
    
    <bean parent="shibboleth.SAML2AttributeSourcedGenerator"
        p:omitQualifiers="true"
        p:format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"
        p:attributeSourceIds="#{ {'mail'} }" />
    
    <bean parent="shibboleth.SAML1AttributeSourcedGenerator"
        p:omitQualifiers="true"
        p:format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"
        p:attributeSourceIds="#{ {'mail'} }" />
  3. /opt/shibboleth/conf/saml-nameid.properties で NameID 属性に関する情報を構成します。

    idp.nameid.saml2.default = urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
    idp.persistentId.useUnfilteredAttributes = true
    idp.persistentId.encoding = BASE32

手順 5: Shibboleth で SAML IdP のメタデータファイルを取得する

  1. 上記の構成を有効にするには、Apache Tomcat を再起動します。

  2. https://<LDAP サーバーの IP アドレス>/idp/shibboleth にアクセスし、メタデータファイルをコンピューターに保存します。

手順 6: CloudSSO コンソールで SSO を有効にする

  1. CloudSSO コンソールの左側のナビゲーションウィンドウで、[設定] をクリックします。

  2. [設定] ページの [SSO ログイン] セクションで、[idp の構成] をクリックします。

  3. [idp の構成] ダイアログボックスで、[メタデータファイルのアップロード] を選択します。

  4. 手順 5: Shibboleth で SAML IdP のメタデータファイルを取得する で取得したメタデータファイルをアップロードするには、[ファイルのアップロード] をクリックします。

  5. SSO スイッチをオンにして、SSO を有効にします。

    説明

    SSO が有効になると、ユーザー名とパスワードによるログインは自動的に無効になります。SSO はすべてのユーザーに適用されます。SSO を有効にすると、すべてのユーザーは SSO ログイン方法を使用する必要があります。

手順 7: CloudSSO コンソールで CloudSSO ユーザーを作成する

CloudSSO コンソールで、Shibboleth のユーザーと同じ名前の CloudSSO ユーザーを作成します。

  1. CloudSSO コンソールの左側のナビゲーションウィンドウで、[ユーザー管理] > [ユーザー] を選択します。

  2. [ユーザー] ページで、[ユーザーの作成] をクリックします。

  3. [ユーザーの作成] パネルで、[ユーザー名] を構成します。

    この例では、ユーザー名 testUser@testdomain.alicloud.com が使用されます。

  4. [ステータス] をオンにします。

  5. [閉じる] をクリックします。

(オプション) 手順 8: CloudSSO ユーザーに権限を付与する

CloudSSO ユーザーが SSO メソッドを使用してユーザーポータルにログインした後、リソースディレクトリの指定されたメンバー内の特定のリソースにアクセスできるようにするには、アクセス権限を定義するアクセス構成を作成する必要があります。次に、メンバーのアクセス権限をユーザーに割り当てる必要があります。

  1. CloudSSO コンソールでアクセス構成を作成し、ポリシーを指定します。

    詳細については、「アクセス構成を作成する」をご参照ください。

  2. リソースディレクトリのアカウントに対するアクセス権限を CloudSSO ユーザーに割り当てます。

構成結果を確認する

上記の構成が完了したら、Alibaba Cloud または Shibboleth から SSO を開始できます。

  • Alibaba Cloud から SSO を開始する

    1. CloudSSO コンソール にログインします。[概要] ページに移動し、ユーザーポータルにログインするために使用する URL をコピーします。

    2. ブラウザを開き、コピーした URL を貼り付けて、Enter キーを押します。

    3. [リダイレクト] をクリックします。Shibboleth のログインページにリダイレクトされます。云SSO登录跳转

    4. Shibboleth のログインページで、ユーザー名 testUser とそのパスワードを入力し、[ログイン] をクリックします。

      ログインに成功すると、ユーザーポータルにリダイレクトされます。

    5. 権限を持つ Alibaba Cloud リソースにアクセスします。

  • Shibboleth から SSO を開始する

    1. https://<LDAP サーバーの IP アドレス>/idp/profile/SAML2/Unsolicited/SSO?providerId=<entityID> にアクセスします。

      <entityID> を、手順 1: Alibaba Cloud の SAML SP メタデータファイルをダウンロードする で取得した Entity ID に置き換えます。

    2. Shibboleth のログインページで、ユーザー名 testUser とそのパスワードを入力し、[ログイン] をクリックします。

      ログインに成功すると、ユーザーポータルにリダイレクトされます。

    3. 権限を持つ Alibaba Cloud リソースにアクセスします。

FAQ

構成結果の確認中に問題が発生した場合、/opt/shibboleth-idp/logs/idp-process.log ファイルを使用して問題を特定できます。次のセクションでは、よくある質問への回答を提供します。

有効なユーザー名とパスワードを使用して Shibboleth にログインしようとすると例外が発生した場合はどうすればよいですか?

/opt/shibboleth-idp/logs/idp-process.log ファイルのエラーメッセージを確認します。ValidateUsernamePassword エラーメッセージが表示された場合は、LDAP サーバーの接続構成とデプロイメントを確認します。コメントアウトする必要があるコードがコメントアウトされており、余分なスペースがないことを確認します。

Shibboleth にログインしようとするとシステムが応答せず、unable to connect to the ldap エラーメッセージが表示された場合はどうすればよいですか?

ldap.properties ファイルと attribute-resolver-full.xml ファイルの LDAP サーバーの接続構成が正しいかどうかを確認します。

Alibaba Cloud にリダイレクトされたときに The NameID is missing エラーメッセージが表示された場合はどうすればよいですか?

メール手順 3: Shibboleth によって返されるユーザー属性を構成するmail フィールドが属性として正しくマッピングされているかどうかを確認します。手順 4: SAML レスポンスの NameID 属性を構成する で NameID 属性が正しく構成されているかどうかを確認します。

どうすればよいですか?サポートされていないリクエスト にアクセスしようとすると エラーメッセージが表示された場合はどうすればよいですか?

entityId フィールドが正しく指定されているかどうかを確認します。metadata ファイル、attribute-filter.xml ファイル、および relying-party.xml ファイルの entityId フィールドの値が同じであることを確認します。

Alibaba Cloud にリダイレクトされたときに The response signature is invalid エラーメッセージが表示された場合はどうすればよいですか?

Shibboleth のメタデータファイルを Alibaba Cloud に再度アップロードします。