このトピックでは、Shibboleth から CloudSSO へのシングルサインオン (SSO) を構成する方法について説明します。
準備
Shibboleth、Apache Tomcat、および Lightweight Directory Access Protocol (LDAP) 認証サーバーをインストールします。
このトピックで説明されている Shibboleth の構成は、あくまで提案であり、Shibboleth から Alibaba Cloud へのエンドツーエンドの SSO プロセスを理解するためだけに使用されます。Alibaba Cloud は、Shibboleth の構成に関するコンサルティングサービスは提供していません。
手順 1: Alibaba Cloud の SAML SP メタデータファイルをダウンロードする
CloudSSO コンソール にログインします。
左側のナビゲーションウィンドウで、[設定] をクリックします。
[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 によって返されるユーザー属性を構成する
/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>
/opt/shibboleth/conf/attribute-resolver-full.xml
ファイルを変更します。/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>
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>
/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 属性を構成する
/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>
/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'} }" />
/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 のメタデータファイルを取得する
上記の構成を有効にするには、Apache Tomcat を再起動します。
https://<LDAP サーバーの IP アドレス>/idp/shibboleth
にアクセスし、メタデータファイルをコンピューターに保存します。
手順 6: CloudSSO コンソールで SSO を有効にする
CloudSSO コンソールの左側のナビゲーションウィンドウで、[設定] をクリックします。
[設定] ページの [SSO ログイン] セクションで、[idp の構成] をクリックします。
[idp の構成] ダイアログボックスで、[メタデータファイルのアップロード] を選択します。
手順 5: Shibboleth で SAML IdP のメタデータファイルを取得する で取得したメタデータファイルをアップロードするには、[ファイルのアップロード] をクリックします。
SSO スイッチをオンにして、SSO を有効にします。
説明SSO が有効になると、ユーザー名とパスワードによるログインは自動的に無効になります。SSO はすべてのユーザーに適用されます。SSO を有効にすると、すべてのユーザーは SSO ログイン方法を使用する必要があります。
手順 7: CloudSSO コンソールで CloudSSO ユーザーを作成する
CloudSSO コンソールで、Shibboleth のユーザーと同じ名前の CloudSSO ユーザーを作成します。
CloudSSO コンソールの左側のナビゲーションウィンドウで、 を選択します。
[ユーザー] ページで、[ユーザーの作成] をクリックします。
[ユーザーの作成] パネルで、[ユーザー名] を構成します。
この例では、ユーザー名
testUser@testdomain.alicloud.com
が使用されます。[ステータス] をオンにします。
[閉じる] をクリックします。
(オプション) 手順 8: CloudSSO ユーザーに権限を付与する
CloudSSO ユーザーが SSO メソッドを使用してユーザーポータルにログインした後、リソースディレクトリの指定されたメンバー内の特定のリソースにアクセスできるようにするには、アクセス権限を定義するアクセス構成を作成する必要があります。次に、メンバーのアクセス権限をユーザーに割り当てる必要があります。
CloudSSO コンソールでアクセス構成を作成し、ポリシーを指定します。
詳細については、「アクセス構成を作成する」をご参照ください。
リソースディレクトリのアカウントに対するアクセス権限を CloudSSO ユーザーに割り当てます。
詳細については、「リソースディレクトリのアカウントに対するアクセス権限を割り当てる」をご参照ください。
構成結果を確認する
上記の構成が完了したら、Alibaba Cloud または Shibboleth から SSO を開始できます。
Alibaba Cloud から SSO を開始する
CloudSSO コンソール にログインします。[概要] ページに移動し、ユーザーポータルにログインするために使用する URL をコピーします。
ブラウザを開き、コピーした URL を貼り付けて、Enter キーを押します。
[リダイレクト] をクリックします。Shibboleth のログインページにリダイレクトされます。
Shibboleth のログインページで、ユーザー名 testUser とそのパスワードを入力し、[ログイン] をクリックします。
ログインに成功すると、ユーザーポータルにリダイレクトされます。
権限を持つ Alibaba Cloud リソースにアクセスします。
Shibboleth から SSO を開始する
https://<LDAP サーバーの IP アドレス>/idp/profile/SAML2/Unsolicited/SSO?providerId=<entityID>
にアクセスします。<entityID>
を、手順 1: Alibaba Cloud の SAML SP メタデータファイルをダウンロードする で取得したEntity ID
に置き換えます。Shibboleth のログインページで、ユーザー名 testUser とそのパスワードを入力し、[ログイン] をクリックします。
ログインに成功すると、ユーザーポータルにリダイレクトされます。
権限を持つ 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 に再度アップロードします。