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

Resource Access Management:Shibboleth によるユーザーベース SSO の設定

最終更新日:Jul 18, 2026

この例では、Shibboleth と Alibaba Cloud 間でユーザーベース シングルサインオン (SSO) をエンドツーエンドで構成する手順を説明します。

前提条件

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

  2. LDAP サーバーを構成します。

    この例では、DN uid=admin,ou=system およびパスワード secret を持つ管理者アカウントを LDAP に追加します。

    また、DN cn=Test User,ou=users,dc=wimpi,dc=net およびパスワード secret を持つテストアカウントを LDAP に追加します。次の図はアカウントの詳細を示しています。

    image.png

    ユーザー情報フィールドは以下のとおりです。

    • mail:Alibaba Cloud の RAM ユーザーのログイン名に対応します。

    • memberof:Alibaba Cloud の RAM ロール名に対応します。

    • samaccountname:Shibboleth へのログインに使用するユーザー名です。

    • userpassword:ログインパスワードです。

  3. Shibboleth を LDAP サーバーに接続するように構成します。

    /opt/shibboleth-idp/conf/ldap.properties ファイルで以下の設定を変更します。

    # LDAP 認証モード
    idp.authn.LDAP.authenticator = bindSearchAuthenticator
    
    # LDAP サーバーアドレス
    idp.authn.LDAP.ldapURL = ldaps://[LDAP-server-address]:389
    
    # TLS および SSL を無効化
    idp.authn.LDAP.useStartTLS = false
    idp.authn.LDAP.useSSL = false
    
    # 基本検索ディレクトリ
    idp.authn.LDAP.baseDN = dc=wimpi,dc=net
    idp.authn.LDAP.subtreeSearch = true
    # ログイン一致ルール。samaccountname は LDAP ログインに使用されるユーザー データ内のフィールドです。
    idp.authn.LDAP.userFilter= (samaccountname={user})
    
    # 管理者アカウントおよびパスワード
    idp.authn.LDAP.bindDN = uid=admin,ou=system
    idp.authn.LDAP.bindDNCredential = secret
    
    idp.attribute.resolver.LDAP.searchFilter =(samaccountname=$resolutionContext.principal)
説明

このトピックで紹介する Shibboleth の構成はデモンストレーション用であり、Alibaba Cloud との SSO 構成のエンドツーエンドのプロセスを示すものです。Alibaba Cloud は Shibboleth 構成に関するコンサルティングサービスを提供していません。

ステップ 1:Alibaba Cloud から SAML SP メタデータを取得する

  1. RAM 管理者として RAM コンソール にログインします。

  2. 左側のナビゲーションウィンドウで、統合管理 > SSO 管理 を選択します。

  3. ユーザーベースの SSO ログイン方式 タブをクリックします。SAML サービスプロバイダーメタデータ URL セクションで、ご利用の Alibaba Cloud アカウントのメタデータ URL をコピーします。

  4. コピーした URL を新しいブラウザウィンドウで開き、ページを XML ファイルとして /opt/shibboleth-idp/metadata/aliyun-ram-user-metadata.xml に保存します。

    説明

    EntityDescriptor 要素の entityID 属性値を記録してください。この値は、後続の Shibboleth 構成で必要になります。

ステップ 2: Shibboleth に Alibaba Cloud を登録する

ステップ 1:Alibaba Cloud から SAML SP メタデータを取得する で取得したメタデータファイルを指すように、/opt/shibboleth-idp/conf/metadata-providers.xml ファイルを構成します。これにより、Alibaba Cloud が Shibboleth のサービスプロバイダ (SP) として登録されます。

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

<!-- 上記のコメントアウトされたコードブロックを見つけ、以下のコードに置き換えます。 -->

<MetadataProvider id="AliyunMetadata"  xsi:type="FilesystemMetadataProvider" metadataFile="%{idp.home}/metadata/aliyun-ram-user-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. ユーザー情報で返す属性を定義します。この例では、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. 同じファイル内で、/opt/shibboleth/conf/ldap.properties の設定を使用して LDAP 接続を構成します。

      <!-- 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}"
      		...omitted...
      	</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 メタデータを取得する で取得した Alibaba Cloud の entityID に置き換えます。

    <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 ファイルを変更して、Alibaba Cloud の NameID を構成します。

    bean 要素の relyingPartyIds 属性を、ステップ 1:Alibaba Cloud から SAML SP メタデータを取得する で取得した Alibaba Cloud の entityID に置き換えます。

    <!--
    	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 の生成方法を構成します。

    <!-- 下記の 2 つのコードブロックを見つけ、コメントを解除して構成を適用します。 -->
    
    <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. 構成を適用するために Tomcat を再起動します。

  2. https://<your-server-address>/idp/shibboleth にアクセスし、メタデータファイルをローカルコンピューターに保存します。

ステップ 6:Alibaba Cloud でユーザーベース SSO を有効化する

  1. RAM コンソールの左側のナビゲーションウィンドウで、統合管理 > SSO 管理 を選択します。

  2. ユーザーベースの SSO ログイン方式 タブをクリックします。SSO 機能ステータス セクションで、有効 をクリックします。

    説明

    ユーザーベース SSO はグローバル機能です。有効化すると、すべての RAM ユーザーが SSO を使用してログインする必要があります。SSO を RAM ユーザーとして構成している場合は、必要な RAM ユーザーを作成するまでこの機能を無効にしておいてください。これにより、誤った構成によるロックアウトを防ぐことができます。または、Alibaba Cloud アカウントを使用して SSO を構成してください。

  3. メタデータファイル セクションで、メタデータドキュメントをアップロード をクリックし、ステップ 5:Shibboleth から SAML IdP メタデータを取得する で取得した IdP メタデータファイルをアップロードします。

  4. 補助ドメイン名 セクションで、編集する をクリックし、補助ドメイン名を有効にして、Shibboleth のユーザーのメールアドレスのサフィックスに設定します。

    この例では、値は testdomain.alicloud.com です。

ステップ 7:Alibaba Cloud に RAM ユーザーを作成する

  1. RAM コンソールの左側のナビゲーションウィンドウで、アイデンティティ > ユーザー を選択します。

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

  3. ユーザーの作成 ページで、ログイン名 および 表示名 を入力します。

    説明

    RAM ユーザーのログイン名プレフィックスが、Shibboleth のユーザーのメールアドレスプレフィックスと一致することを確認してください。この例では、プレフィックスは testUser です。

  4. アクセスモード セクションで、コンソールへのアクセス を選択し、ログインパスワードおよびその他のパラメーターを設定します。

  5. OK をクリックします。

結果の確認

構成が完了したら、Alibaba Cloud または Shibboleth のいずれからでも SSO ログインを開始できます。

Alibaba Cloud から SSO を開始する

  1. RAM コンソール の 概要 ページで、RAM ユーザーのログイン URL をコピーします。

  2. 右上隅のプロフィール画像にカーソルを合わせて Log Out をクリックするか、コピーした RAM ユーザーのログイン URL を新しいブラウザウィンドウで開きます。

  3. Log on with an enterprise IdP account をクリックします。Shibboleth のログインページにリダイレクトされます。

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

    SSO を通じて自動的にログインされ、Alibaba Cloud コンソールのホームページにリダイレクトされます。

Shibboleth から SSO を開始する

  1. https://<your-server-address>/idp/profile/SAML2/Unsolicited/SSO?providerId=<entityID> にアクセスします。

    URL 内の <entityID> は、ステップ 1:Alibaba Cloud から SAML SP メタデータを取得する で取得した Alibaba Cloud の entityID です。

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

    SSO を通じて自動的にログインされ、Alibaba Cloud コンソールのホームページにリダイレクトされます。

よくある質問

検証中に問題が発生した場合は、/opt/shibboleth-idp/logs/idp-process.log の詳細を確認してください。一般的な問題は以下のとおりです。

正しい認証情報でのログインエラー

/opt/shibboleth-idp/logs/idp-process.log のエラーメッセージを確認します。ValidateUsernamePassword に関連するエラーが表示される場合は、LDAP 接続設定およびデプロイメントを確認してください。必要なコードがすべてコメント解除されており、余分なスペースが含まれていないことを確認します。

ログイン後の応答なし、エラー 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 が正しく設定されていることを確認してください。

アクセス時https://<your server address>/idp/profile/SAML2/Unsolicited/SSO?providerId=<entityID> で Unsupported Request が表示される

entityId が正しく構成されていることを確認してください。entityId は、metadata フォルダー内のメタデータ、attribute-filter.xml、および relying-party.xml で一貫している必要があります。

ログイン後に Alibaba Cloud にリダイレクトした際のエラー: The response signature is invalid。

Alibaba Cloud で Shibboleth のメタデータファイルを再度アップロードしてください。