シングルサインオンPHP構成
構成情報を変更しても、構成キャッシュを再ロードしない限り、その構成情報がSwarmで使用されることはありません。構成キャッシュを再ロードすると、変更した構成情報がSwarmで強制的に使用されます。 Swarm構成キャッシュを再ロードするには、admin ユーザまたはsuper ユーザでなくてはなりません。 [ユーザID]ドロップダウンメニューに移動して[システム情報]を選択し、[キャッシュ情報]タブをクリックしてから[構成の再ロード]ボタンをクリックします。
Helix認証サービス
Helix認証サービスは、Perforce用の優先SSOソリューションです。 Helix認証サービスは、Swarmのサービスプロバイダ(SP)に対するSAML IDプロバイダ(IdP)として機能します。管理者がHelix認証サービスで設定したプロトコルを使用して、外部IdPによる認証機能が有効になります。
このセクションでは、Swarmconfig.phpファイル内で、Helix認証サービス用に設定されたHelixサーバを使用してSwarmの認証を有効にするSAML 2.0の設定方法について説明します。 SWARM_ROOT/data/config.php
ファイル内のSAML PHP構成ブロックを使用して、Swarmに対するHelix認証サービスとサービスプロバイダ(SP)の接続の詳細を設定します。 これにより、SwarmからHelix認証サービスへの接続と、Helix認証サービスからSwarmへの接続が可能になり、IdPログインプロセスを使用してSwarmにログインできるようになります。
SwarmをHelix認証サービス用に設定する
- Helix認証サービスの概要については、Helix認証サービスを参照してください。
- Helix認証サービスの設定方法については、Helix認証サービスのプロジェクト文書領域のHelix認証サービス管理者ガイドを参照してください。
- Helix認証サービスを使用するようにSwarmを設定する方法については、 Swarm SAML 2.0の設定を参照してください。
- Helix認証サービス用にSwarmを設定する詳しい方法については、「Swarm Helix認証サービスの構成」を参照してください。
Helix SAML
Helix認証サービスは、Perforceの優先SSOソリューションです。上記のHelix認証サービスを参照してください。
Helix SAMLでは、Helix Coreサーバに対して、AML 2.0を使用した認証がサポートされます。 このセクションでは、Swarmconfig.phpファイル内で、Helix SAML用に設定されたHelixサーバを使用してSwarmの認証を有効にするSAML 2.0の設定方法について説明します。 swarm_root/data/config.phpファイルの構成ブロックを使用して、SwarmのIDプロバイダ(IdP)とサービスプロバイダ(SP)の接続の詳細を設定します。 これにより、SwarmからユーザのIdP、ユーザのIdPからSwarmへの接続が可能となり、ユーザはIdPのログインプロセスを使用してSwarmにログインできるようになります。
- SwarmでHelix SAMLを使用する場合:
- Helixサーババージョン2018.2以降が必要です。
- Helix SAML用のHelixサーバトリガを作成します。 Helix SAML用のHelixサーバトリガの開発手順については、『Helix Coreサーバ管理者ガイド』の「トリガを起動して外部認証を使用する」を参照してください。
- sso_enabled構成可能変数を使用して、SwarmでHelix SAMLを有効にします。詳細については、「Swarmの構成」を参照してください。
- Swarm管理者ユーザがチケットベースの認証を使用するように設定する方法については、「Swarmの構成」を参照してください。
- このページに記載されているように、Helix SAML用にSwarmを設定します。
Swarm SAML 2.0の設定
このセクションでは、Helix認証サービスまたはHelix SAMLに対して有効になっているHelixサーバにSwarmを接続するために入力する必要がある最低限の設定について説明します。 samlの構成ブロックをSWARM_ROOT/data/config.php
ファイルの最後に追加する必要があります。以下に例を示します。
saml構成ブロックの内容は、使用中のSAMLの構成に応じて異なります。Helixサーバ SAMLの構成で必要な場合、他の構成可能変数をSAML PHPブロックに追加することができます。 例えば、SP (Swarm)用のx509certとprivateKeyがcertsフォルダ内に存在する場合、samlブロックのsp項目でx509certとprivateKeyを指定する必要はありません。 ただし、samlブロックのidp項目で、必ずidpのx509certを指定する必要があります。
SAML 2.0の概要については、https://github.com/onelogin/php-samlを参照してください。
SAML PHPの構成例、構成可能変数について詳しくは、以下の下線が付いているリンクに従います。
以下に示す例の構文は正しいものですが、動作しない構成値も含まれています。 samlブロックをテスト環境や本番環境で使用する前に、SAMLの構成に合わせて、現在の構成を適切に調整してください。
<?php
// the saml block should be a peer of 'p4' located at the end of
// the Swarm configuration block in the config.php file
'saml' => array(
// If your Helix Server trigger expects a message header so that it can
// easily recognize SAML response messages, add the header text
'header' => 'saml-response: ', // leave empty for no message header ''
// Service Provider Data that we are deploying
'sp' => array(
// Identifier of the SP entity (must be a URI)
'entityId' => '<urn:my_swarm:sp>',
// Specifies info about where and how the AuthnResponse message MUST be
// returned to the requester, in this case our SP.
'assertionConsumerService' => array(
// URL Location where the Response from the IdP will be returned, this is the Swarm URL and port
'url' => '<[http[s]://]<swarm-host>[:<port>]>',
),
// Usually x509cert and privateKey of the SP (Swarm) are provided by files placed in
// the certs folder. These files must be named sp.crt and sp.key.
// Optional: you can also provide them with the following parameters
'x509cert' => '<my_sp_swarm_full_cert_string_including_the_BEGIN_CERTIFICATE_and_END_CERTIFICATE_parts>',
'privateKey' => '<my_sp_swarm_private_key>',
),
// Identity Provider Data that we want to connect to with our SP (Swarm)
'idp' => array(
// Identifier of the IdP entity (must be a URI)
'entityId' => '<my_entityid_provided_by_the_idp>',
// SSO endpoint info of the IdP. (Authentication Request protocol)
'singleSignOnService' => array(
// URL Target of the IdP where the SP (Swarm) will send the Authentication Request Message
'url' => '<full_idp_URL_path_to_send_authentication_request_message_to>',
),
// The x509cert of the idp is provided by the following x509cert parameter.
// Do not add the privateKey parameter.
// You must use the x509cert parameter, you must not add the cert file the certs folder.
'x509cert' => '<my_idp_full_cert_string_including_the_BEGIN_CERTIFICATE_and_END_CERTIFICATE_parts>',
),
),
Swarmの構成ファイルには、PHPの標準的な終了タグである「?>」は含まれていません。 Swarmの出力に不要な空白が挿入されるのを防ぐため、意図的にこの終了タグを除外しています。意図しない空白が挿入されると、HTTPヘッダを制御するSwarmの機能が正しく動作しなくなります。 空白が入った結果として生じる動作やエラーメッセージはしばしば誤解を招くことがあるため、意図しない空白に起因する問題のデバックは難しくなる場合があります。
header
Helixサーバ Helix SAMLトリガの一部では、SAMLの応答メッセージにヘッダ(プレフィックス)を追加することによって、Helixサーバが簡単にメッセージを特定できるようにする必要があります。 ヘッダはheaderの値に設定されています。
ヘッダが不要な場合は、headerを空''に設定します。
<?php
'saml' => array(
// If your Helix Server trigger expects a message header so that it can
// easily recognize SAML response messages, add the header text
'header' => 'saml-response: ', // leave empty for no message header ''
),
デフォルト値は'saml-response: 'です。
sp
sp(サービスプロバイダ)セクションでは、IdP(IDプロバイダ)のコールバック先と識別子情報について定義します。 これにより、IdPはSwarmへの接続方法を識別します。
- entityId: IdPが認識するSwarmの識別子です。 エンティティIDを設定して、同じ値をIdPの構成ツールで使用します。 SwarmがIdPに接続すると、エンティティIDを使用してユーザの接続を検証します。 これはURIである必要があります。
- assertionConsumerService url: SwarmのURLとポート番号を入力します。 これによって、SwarmインスタンスがIdPの応答先のURLとして設定されます。 ポート番号を入力しない場合、ポート番号80が使用されます。
- x509certおよびprivateKey: Swarmインスタンスのセキュリティ接続の詳細を入力します。
localhostをurlに使用しないでください。
<?php
'saml' => array(
// Service Provider Data that we are deploying
'sp' => array(
// Identifier of the SP entity (must be a URI)
'entityId' => '<urn:my_swarm:sp>',
// Specifies info about where and how the AuthnResponse message MUST be
// returned to the requester, in this case our SP.
'assertionConsumerService' => array(
// URL Location where the Response from the IdP will be returned, this is the Swarm URL and port
'url' => '<[http[s]://]<swarm-host>[:<port>]>',
),
// Usually x509cert and privateKey of the SP (Swarm) are provided by files placed in
// the certs folder. These files must be named sp.crt and sp.key.
// Optional: you can also provide them with the following parameters
'x509cert' => '<my_sp_swarm_full_cert_string_including_the_BEGIN_CERTIFICATE_and_END_CERTIFICATE_parts>',
'privateKey' => '<my_sp_swarm_private_key>',
),
),
idp
Helix認証サービスは、Swarmのサービスプロバイダ(SP)に対するSAML IDプロバイダ(IdP)として機能します。管理者がHelix認証サービス用に選択したプロトコルを使用して、外部IdPによる認証機能が有効になります。 idp (IDプロバイダ)セクションで、IdPの接続情報とセキュリティ情報を定義します。これにより、Helix SAMLが使用されている場合に、Helix認証サービスまたはIdPへの接続方法をSwarmで判断できるようになります。
- entityId:
- Helix認証サービス: Helix認証サービスで設定されているエンティティIDを入力します。 これにより、SwarmがHelix認証サービスに接続できるようになります。 これはURIである必要があります。
- Helix SAML: IdPによって指定されるエンティティIDを入力します。 これにより、SwarmがIdPに接続できるようになります。 これはURIである必要があります。
- singleSignOnService url:
- Helix認証サービス: Swarmによる認証要求の送信先となるURLを入力します。 このURLは、Helix認証サービスで設定されています。
- Helix SAML: Swarmによる認証要求の送信先となるURLを入力します。 これはIdPによって提供されます。
- x509cert:
- Helix認証サービス : Helix認証サービスのセキュリティ接続証明書を入力します。
- Helix SAML : IdPのセキュリティ接続証明書を入力します。
<?php
'saml' => array(
// Identity Provider Data that we want to connect to with our SP (Swarm)
'idp' => array(
// Identifier of the IdP entity (must be a URI)
'entityId' => '<my_entityid_provided_by_the_idp>',
// SSO endpoint info of the IdP. (Authentication Request protocol)
'singleSignOnService' => array(
// URL Target of the IdP where the SP (Swarm) will send the Authentication Request Message
'url' => '<full_idp_URL_path_to_send_authentication_request_message_to>',
),
// The x509cert of the idp is provided by the following x509cert parameter.
// Do not add the privateKey parameter.
// You must use the x509cert parameter, you must not add the cert file the certs folder.
'x509cert' => '<my_idp_full_cert_string_including_the_BEGIN_CERTIFICATE_and_END_CERTIFICATE_parts>',
),
),