この記事はレガシー記事です。 Liferay製品の旧バージョンにも適用されます。 記事のメンテナンスは終了していますが、情報はまだ通用する可能性があります。
Liferayの観点では、SAML 2.0はEEプラグインとして提供されています。 このプラグインは、IDプロバイダーとサービスプロバイダーの2つの動作モードをサポートしています。 このプラグインはOpenSAMLをベースに構築されており、プラットフォームに依存せず、多くのSaasアプリケーションでサポートされています。 認証情報には、java keystoreが使用されます。
対象製品
Liferay Portal 6.1 EE GA2
SAMLユースケース#1 - Quick Start SAML Integration with Salesforce.com - 【LiferayをIdP、SFDCをSPとして】
解像度
I. SAMLをセットアップする
keytool -genkeypair -alias [name of the key] -keyalg RSA -keysize 2048 -keypass [password to the key] -storepass [password to the key store] -keystore data/keystore.jkskeytool -export -alias [name of the key] -file liferaysamlidpdemo.crt -keystore keystore.jksSAMLユースケース#2 - LiferayをIdPとして2つのSPにつなぐ
ほとんどのプロパティは、SPごとに設定可能です。 (セールスフォースで述べたような) メタデータパスのプロパティには、カンマ(,)で区切って、さらにSPを追加することができます。 ファイルシステムのパスやURLも使用可能です。
SAMLユースケース#3 - Liferayの2つのインスタンス - 一方はIdPとして、もう一方はSPとして。
このユースケースは、2つのLiferayインスタンスをセットアップし、一方をIdPとして、もう一方をSPとしてセットアップする方法を詳細に説明します。 Liferayの1つのインスタンスでIdPとSPの両方の役割を果たすように設定することは、現在できません。
1. 最初のインスタンスをIdP として構成する(例としてユースケース#1を参照)。
2. 2番目のインスタンスをSPとして構成する:
以下は、2ndインスタンスをSPとして設定する場合の設定例です:
## SAMLsaml.enabled=truesaml.role=spsaml.entity.id=liferaysamlspdemosaml.metadata.paths=http://localhost:8080/c/portal/saml/metadata# Keystoresaml.keystore.type=jkssaml.keystore.path=${liferay.home}/data/keystore.jkssaml.keystore.password=liferaysaml.keystore.credential.password[liferaysamlspdemo]=liferay#Service Providersaml.sp.default.idp.entity.id=psosamldemosaml.sp.sign.authn.request=truesaml.sp.assertion.signature.required=falsesaml.sp.clock.skew=3000saml.sp.user.attribute.mappings=screenName=screenName\neSAMLユースケース#4「メールアドレス以外のLiferayユーザーフィールドでSSO IDを構成する
1. 今回のユースケースでは、Salesforceのidとしてメールアドレスを、Google AppのidとしてscreenNameを設定する予定です。
これはSP固有の設定で実行されます:
saml.idp.metadata.name.id.format[https://saml.salesforce.com]=urn:oasis:names:tc:SAML;1.1:nameid-format:unspecifiedのような設定です。
2. saml.idp.metadata.name.id.attribute プロパティを設定し、nameid に使用するものを設定します。
これはどのようなユーザー属性でも可能であり、expandoが前に付いている場合はexpando値でも可能です:
3.
expando:myCustomAttributeNameこのようにカスタムフィールドを作成したら、そのフィールドにアクセスできます。
saml.idp.metadata.name.id.attribute[https://saml.salesforce.com]=expando.myCustomAttributeName
何も指定しない場合、emailAddressはデフォルトのUser属性となります。
4. ための構成であると仮定する:
Google Apps
entityidはgoogle.com
idにscreenNameを使用
saml.idp.metadata.name.id.attribute[google.com]=screenNameのようになります。
追加情報
1. IdPがメタデータのダウンロードに対応していない場合はどうすればよいですか? Liferay SPは証明書(Salesforceと同様)のインストールをサポートしていますか?
SAML Metadata XMLを提供する必要があります。 URLまたはファイルを通して提供することができます。 IdPがSAMLメタデータをサポートしていない場合、XMLファイルを手動で作成する必要があります。
2. SalesforceにSSOした際に、自動的にユーザーをプロビジョニングするためには、どのような変更が必要ですか? 以下のリンクからSalesforceの設定を済ませたのですが、https://login.salesforce.com/help/doc/en/sso_saml.htm
現時点では、参考となる設定はございません。 自動プロビジョニングのテストは、Liferay SAML SP経由でのみ行われています。
saml.idp.metadata.attributes.enabled[liferaysamlspdemo]=true
saml.idp.metadata.attribute.names[liferaysamlspdemo]=screenName,firstName,lastName,emailAddress,uuid
liferaysamlspdemo は SP のエンティティ ID です。
3. LiferayをIdPとして使用する場合、カスタマイズしたSAMLアサーション属性値としてLiferayのexpando属性値を追加することはできますか? SAMLアサーション属性「Customer Type」を追加し、この契約者をSPにプロビジョニングする際に、「Customer Type」属性にエキスパンド値を割り当てることは可能でしょうか。
可能です。 この方法は実行可能です。
4. メタデータにアクセスしようとすると、ログにNullPointerExceptionが表示され、ページでエラーが発生するのですが...。