Configuring Single Sign-On
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、 こちら までご連絡ください。

Kerberosによる認証

Liferay DXPのLDAPサポートとKerberosプロトコルをサポートするWebサーバーを使用することで、Kerberosを使用してMicrosoft Windows™アカウントをLiferay DXPで認証できます。

セキュリティ上の脆弱性があるため、この構成はNTLMよりも推奨されます。

前提条件

Windows™サーバー上でKerberosとActive Directoryを設定する方法を説明することはこの記事の範囲外ですが、Liferay認証を設定するための最低限の前提条件について説明します。

  1. Active DirectoryとDNSが設定されたWindows™サーバー。これにより、ADサーバーとLiferay DXPがネットワーク上で相互に名前解決できるようになります。 つまり、名前で相互にpingできる必要があります。

  2. AD Liferay DXPの管理ユーザーがADへのバインドに使用できる。

  3. Liferay DXP サーバーが AD にバインドする必要がある暗号化情報を含む、 ktpass コマンドでエクスポートされた Kerberos キー タブ ファイル。

  4. Apache、NGNIX、IISなどのKerberosをサポートするLiferay DXPの手前にあるWebサーバー。 Webサーバーは、Liferay DXP構成でトークンとして使用されるヘッダーの挿入もサポートしている必要があります(以下を参照)。

  5. 他のサーバーも名前で解決できるLiferay DXPのインストール。 Active Directoryサーバーと同じサーバー上で実行しないでください。

これらの前提条件がすべて整ったら、Kerberos認証を構成する準備が整います。

Kerberos認証のしくみ

前提条件から、SSOがKerberosとどのように連携するかについて、いくつかの重要な部分があると推測できます。

Kerberos認証では、Liferay DXPサーバーの手前にWebサーバーが必要です。

まず、適切に構成されたWebブラウザが、暗号化されたWindowsユーザーデータを使用してネゴシエート要求を送信します。 これを構成するには、ブラウザがサイトを信頼済みサイトとして認識する必要があります(以下で説明します)。 WebサーバーのKerberosモジュールは、keytabファイルを使用して、Kerberosプロトコルを介してADにバインドし、ユーザー情報を確認します。 これが機能する場合、ADサーバーは有効な応答で接続を確認します。

選択するWebサーバーは、Kerberosプロトコルと、Liferay DXPが後で読み取ることができる要求へのカスタムヘッダーの挿入の両方をサポートしている必要があります。 Webサーバーが要求をLiferay DXPに転送すると、Liferay DXPはヘッダーを読み取ってユーザーデータを取得し、ユーザーを認証します。

次に、これらすべてを実際に動作させる方法を学びましょう。

Kerberos認証の構成

構成するコンポーネントは4つあります。

  1. Active Directoryからのユーザーkeytab

  2. アプリケーションサーバーの手前にあるWebサーバー

  3. Liferay DXP

  4. お使いのWindows™クライアント。

ステップ1:ユーザーKeytabの作成

  1. Liferay DXPがActive Directoryにバインドできるようにユーザーを作成します。

  2. ktpassを使用してKerberos keytabファイルを生成します。

    ktpass -princ HTTP/[web server host name]@[domain] -mapuser [user name]@[domain] -crypto ALL -ptype KRB5_NT_PRINCIPAL -pass [password] -out c:\kerberos.keytab
    

    以下に例を示します。

    ktpass -princ HTTP/mywebserver.intdomain.local@INTDOMAIN.LOCAL -mapuser Marta@INTDOMAIN.LOCAL -crypto ALL -ptype KRB5_NT_PRINCIPAL -pass password-for-Marta -out c:\kerberos.keytab
    
  3. ADドメイン・コントローラーとWebサーバーがDNS構成またはhostsファイルを介してネットワーク上で相互に認識できることを確認します。

ステップ2:Webサーバーの構成

Kerberos認証はWebサーバーレベルで設定されます。 Liferay DXPはリクエストヘッダーから認証済みユーザーを読み取り、Kerberos認証を直接管理しません。

  1. ウェブサーバーでKerberos認証を設定してください。 Linux では、 krb5 をインストールし、Active Directory レルムに一致するように構成します。 例えば、

    [libdefaults]
       default_realm = INTDOMAIN.LOCAL
    
    [domain_realm]
       mywebserver.intdomain.local = INTDOMAIN.LOCAL intdomain.local = INTDOMAIN.LOCAL .intdomain.local = INTDOMAIN.LOCAL
    
    [realms]
    INTDOMAIN.LOCAL = { admin_server = winserver.intdomain.local kdc = winserver.intdomain.local
    }
    
  2. ADサーバーで生成したkeytabファイルをWebサーバーにコピーします。

  3. ウェブサーバーを設定して、Kerberosを使用してユーザーを認証し、認証されたユーザーをリクエストヘッダーに含めて転送するようにしてください。

    mod_auth_kerb は非推奨であり、最新の Linux ディストリビューションでは利用できません。 mod_auth_gssapi またはウェブサーバーでサポートされている別の Kerberos モジュールを使用してください。

    例えば、Apache HTTP Server を mod_auth_gssapi とともに使用すると次のようになります。

    LoadModule headers_module /usr/lib/apache2/modules/mod_headers.so
    LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
    LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
    LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so
    LoadModule proxy_ajp_module /usr/lib/apache2/modules/mod_proxy_ajp.so
    LoadModule auth_gssapi_module /usr/lib/apache2/modules/mod_auth_gssapi.so
    
    <VirtualHost *:10080>
      ProxyRequests Off
      ProxyPreserveHost On
      ProxyPass / ajp://localhost:8009/
      ProxyPassReverse / ajp://localhost:8009/
      ServerName mywebserver.intdomain.local
    
      <Location />
        AuthType GSSAPI
        AuthName "Kerberos Login"
        GssapiCredStore keytab:/etc/apache2/kerberos.keytab
        GssapiLocalName On
    
        Require valid-user
    
        RequestHeader unset X-User-Global-ID
        RewriteEngine On
        RewriteCond %{LA-U:REMOTE_USER} (.+)
        RewriteRule /.* - [E=RU:%1,L]
        RequestHeader set X-User-Global-ID %{RU}e
      </Location>
    </VirtualHost>
    
    Listen 10080
    
    
    

ヘッダー名が、Liferay DXP のトークンベース SSO 用に設定された値と一致していることを確認してください。

ステップ3:LDAPを介してLiferay DXPをActive Directoryに接続する

  1. 最後に、LDAPプロトコルを介してActive DirectoryにアクセスするようにLiferay DXPを構成します。 認証方法をスクリーン名に変更するには、「構成」→「インスタンス設定」→「認証」→「一般」でスクリーン名を選択します。

  2. Liferay DXP を LDAP 経由で AD に接続するには、 設定インスタンス設定認証LDAP に移動して、LDAP サーバーを追加します。 インストールに適切な情報を提供します。

    設定説明
    ベースプロバイダURL適切なポート上のADサーバー。
    ベースDNドメイン構成。 上記の例では DC=INTDOMAIN.DC=LOCAL
    プリンシパル/認証情報keytabファイルにエクスポートされたユーザーの資格情報を入力します。
    認証検索絞り込みユーザーオブジェクトを返す適切な検索フィルターを指定します。 例:(&(objectCategory=person)(sAMAccountName=*))
    UUIDsAMAccountNameなど、ユーザーを一意に識別するものを指定します。
    スクリーン名sAMAccountNameなど、Liferay DXPの画面名フィールドにマップする必要があるフィールドを指定します。
    パスワードuserPasswordなど、ユーザーのパスワードを含むフィールドを指定します。
  3. 接続をテストし、構成を保存して有効にします。

  4. 最後に、[構成] → [システム設定] → [セキュリティ] → [SSO] → [トークンベースのSSO] で、シングルサインオン用のトークンを設定します。 ユーザートークン名が、Webサーバーで設定したトークンと正確に一致していることを確認します。 有効LDAP からインポート ボックスをクリックし、 保存 をクリックします。

    [Instance Settings]メニューでSSOを有効にする。

サーバーを構成しました。 あとはクライアントを設定するだけです。

ステップ4:クライアントの設定

コンピュータをドメインにログインさせ、Liferay DXPサーバーを信頼できるインターネットサイトとして構成します。

  1. コンピューターをドメインに参加させます。 上記の例に従って、コンピューターをINTDOMAIN.LOCALドメインのメンバーにします。

  2. そのドメインのユーザーとしてログインします。

  3. Internet Explorer、Edge、およびChromeは、信頼済みサイトの設定にWindows™の設定を使用します。 これらのブラウザを使用している場合は、「インターネットオプション」→「セキュリティ」→「ローカルイントラネットサイト」に移動し、Liferay DXPサーバーのURLを追加してください。 たとえば、http://mywebserver.intdomain.local:10080を追加します。

  4. Firefoxは、アドレスバーにabout:configと入力して設定できます。 以下の2つの設定を検索し、Liferay DXPサーバーのURLを両方の値として追加します。

    • network.negotiate-auth.delegation-uris
    • network.negotiate-auth.trusted-uris

これらを設定した後、WebサーバーのURLからLiferay DXPにアクセスして設定をテストします。 すでにクライアントマシンにログインしているため、ユーザ/パスワードのプロンプトが表示されることなく自動的にLiferay DXPにログインします。

Liferay DXPでKerberosを構成できました。