WebLogic Server のセキュリティ

     前  次    新しいウィンドウで目次を開く     
ここから内容の開始

Microsoft のクライアントに対するシングル サインオンのコンフィグレーション

以下の節では、SPNEGO (Simple and Protected Negotiate) メカニズムと Kerberos プロトコルに基づく Windows 認証と WebLogic ネゴシエート ID アサーション プロバイダを使用して、Microsoft クライアントでのシングル サインオン (SSO) を設定する方法について説明します。

 


Microsoft のクライアントに対するシングル サインオンの概要

Microsoft クライアントでシングル サインオン (Single sign-on : SSO) を利用すると、WebLogic Server のドメインで動作する Web アプリケーションまたは Web サービスと、Microsoft ドメイン内の .NET Web サービス クライアントまたはブラウザ クライアント (Internet Explorer など) の間でクロス プラットフォーム認証を実行できます。Microsoft のクライアントでは、SPNEGO (Simple and Protected Negotiate) メカニズムに基づいた Windows 認証を使用する必要があります。

プラットフォームを越えた認証は、元々 Windows システム間で行われている Kerberos プロトコルを使用した認証サービスをエミュレートすることで実現されます。クロスプラットフォーム認証を適切に実行するには、非 Windows のサーバ (ここでは WebLogic Server) 側で SPNEGO トークンを解析し、認証に使用される Kerberos トークンを展開する必要があります。

 


Microsoft のクライアントを含む SSO に必要なシステム要件

Microsoft のクライアントに対して SSO を使用する場合、以下の要件があります。

ホスト コンピュータ側の要件は以下のとおりです。

クライアント システム側の要件は以下のとおりです。

 


Microsoft のクライアントに対するシングル サインオン : 主な手順

Microsoft のクライアントに SSO をコンフィグレーションするには、Microsoft Active Directory、クライアント、および WebLogic Server ドメインでの設定手続きが必要です。この手順についてこれ以降の節で説明します。

Microsoft のクライアントに対する SSO は次のようにコンフィグレーションします。

  1. Kerberos を使用するようにネットワーク ドメインをコンフィグレーションします。「Kerberos を使用するためのネットワーク ドメインのコンフィグレーション」を参照してください。
  2. WebLogic Server 用に Kerberos ID を作成します。
    1. WebLogic Server の動作するホスト用に Active Directory のユーザ アカウントを作成します。
    2. 作成したアカウント用にサービス プリンシパル名を作成します。
    3. 作成したアカウント用にユーザ マッピングと keytab ファイルを作成します。
    4. WebLogic Server 用の Kerberos ID の作成」を参照してください。

  3. Microsoft のクライアント (Web サービスまたはブラウザ) を選択し、統合 Windows 認証を使用するようにコンフィグレーションします。「Microsoft のクライアントで統合 Windows 認証を使用するためのコンフィグレーション」を参照してください。
  4. WebLogic Server ドメインで Kerberos 認証を使用するように設定します。
    1. Microsoft ドメインの Active Directory サーバおよび手順 2 で作成した keytab ファイルを指し示す JAAS ログイン ファイルを作成します。「JAAS ログイン ファイルの作成」を参照してください。
    2. WebLogic Server のセキュリティ レルムにネゴシエート ID アサーション プロバイダをコンフィグレーションします。「ネゴシエート ID アサーション プロバイダのコンフィグレーション」を参照してください。
  5. WebLogic Server を特定の起動引数を使用して起動します。「WebLogic Server での Kerberos 認証における起動引数の使用」を参照してください。

これらの手順について以下の節で詳細に説明します。

 


Kerberos を使用するためのネットワーク ドメインのコンフィグレーション

Windows ドメイン コントローラは、Kerberos キー配布センター (KDC) として機能し、Active Directory サービスおよび Kerberos サービスを使用します。どのドメイン コントローラでも、Active Directory サービスおよび Kerberos サービスは自動的に実行されます。

Windows ドメイン コントローラで Kerberos をコンフィグレーションするには、Kerberos レルムと使用可能な KDC サーバを特定するように、KDC にアクセスする各マシンをコンフィグレーションする必要があります。Windows マシンの場合、C:\winnt フォルダの krb5.ini ファイルを変更します。UNIX マシンの場合、krb5.conf ファイル (デフォルトの場所は /etc/krb5/) を変更します。次に例を示します。

コード リスト 6-1 サンプル krb5.ini ファイル
[libdefaults]
default_realm = MYDOM.COM (デフォルト レルムを指定する。使用する Kerberos レルムにこの値を設定する)
default_tkt_enctypes = des-cbc-crc
default_tgs_enctypes = des-cbc-crc
ticket_lifetime = 600
[realms]
MYDOM.COM = {
kdc = <IP address for MachineA> (KDC が実行されているホスト)
(Unix システムの場合、<IP-address>:88 のようにポート 88 を指定する必要がある)
admin_server = MachineA
default_domain = MYDOM.COM
}
[domain_realm]
.mydom.com = MYDOM.COM
[appdefaults]
autologin = true
forward = true
forwardable = true
encrypt = true

 


WebLogic Server 用の Kerberos ID の作成

Active Directory では、Kerberos 認証の主要なコンポーネントであるサービス プリンシパル名 (service principal names : SPN) がサポートされています。SPN は、サーバ上で動作しているサービスに対するユニークな ID です。Kerberos 認証を使用するすべてのサービスは各自の SPN のセットを保持する必要があり、それによってクライアント側でのネットワーク上のサービスの識別が可能になります。SPN は通常、name@YOUR.REALM のようになっています。Kerberos レルムの WebLogic Server を表す SPN を定義する必要があります。サービスに SPN が設定されていないと、クライアントではそのサービスの場所を特定できません。つまり、SPN が正しく設定されていなければ Kerberos 認証は不可能だということになります。一連の SPN を格納するメカニズムとして keytab ファイルがあります。keytab ファイルは WebLogic Server ドメインにコピーして、ログイン プロセスで使用します。このコンフィグレーション手順では、WebLogic Server 用の SPN、ユーザ マッピング、および keytab ファイルの作成方法について説明します。

このコンフィグレーション手順では、以下の Active Directory ユーティリティを使用します。

注意 : setspn および ktpass Active Directory ユーティリティは Microsoft の製品です。そのため、BEA システムズではこのユーティリティに関する詳細なドキュメントを提供していません。詳細については、Microsoft の適切なドキュメントを参照してください。

WebLogic Server 用の Kerberos ID を作成するには以下の手順を行います。

  1. Active Directory サーバに WebLogic Server が動作するホスト コンピュータのユーザ アカウントを作成します ([新規作成|コンピュータ] ではなく、[新規作成|ユーザー] を選択します)。
  2. ユーザ アカウントを作成する際には、シンプルなコンピュータ名を使用してください。たとえば、ホスト名が myhost.example.com の場合、Active Directory のユーザは myhost のような名前にします。

    ユーザ アカウントの作成時に定義したパスワードは記録しておきます。このパスワードは手順 3 で必要になります。[ユーザは次回ログオン時にパスワードの変更が必要] オプションなどのパスワード オプションはオンにしないでください

  3. Kerberos プロトコルに準拠するように新しく作成したユーザ アカウントをコンフィグレーションします。ユーザ アカウントの暗号タイプは DES にする必要があり、アカウントは Kerberos 事前認証を必要とします。
    1. 左ペインの [Users] ツリーでユーザ アカウント名を右クリックして、[プロパティ] を選択します。
    2. [アカウント] タブを選択して、[このアカウントに DES 暗号化を使う] チェック ボックスをチェックします。その他のボックス (特に [Kerberos 事前認証を必要としない] ボックス) がチェックされていないことを確認します。
    3. 暗号タイプを設定すると、パスワードが破損するおそれがあります。そのため、ユーザ パスワードをリセットする必要があります。ユーザ アカウントの名前を右クリックして [パスワードのリセット] を選択し、上記で指定したパスワードと同じパスワードを再入力してください。
  4. setspn ユーティリティを使用して、手順 1 で作成したユーザ アカウントに対して一連の SPN (Service Principal Name) を作成します。以下のコマンドを入力します。
  5. setspn -a host/myhost.example.com myhost
    setspn -a HTTP/myhost.example.com myhost
  6. 次のコマンドを使用して、ユーザ アカウントに関連付けられている SPN を確認します。
  7. setspn -L account name

    この手順は重要です。同じサービスが Active Directory サーバの異なるアカウントにリンクされていると、クライアントはサーバに Kerberos チケットを送信しません。

  8. ktpass ユーティリティを使用してユーザ マッピングを作成します。
  9. Windows
    ktpass -princ host/myhost@Example.CORP -pass password -mapuser myhost -out c:\temp\myhost.host.keytab

  10. keytab ファイルを作成します。Windows では、ktab ユーティリティによってキー テーブルでプリンシパル名とキーのペアが管理されます。このユーティリティを使用して、プリンシパル名とキーのペアを表示、追加、更新、または削除できます。UNIX では、ktpass ユーティリティの使用が適しています。
  11. Windows の場合

    1. WebLogic Server が動作しているホスト上で ktab ユーティリティを実行して、keytab ファイルを作成します。
    2. ktab -k keytab-filename -a myhost@Example.CORP
    3. keytab ファイルを WebLogic Server ドメインの起動ディレクトリにコピーします。
    4. UNIX の場合

    5. 次のようなコマンドで、ktpass ユーティリティを使用してユーザ マッピングを作成します。password は手順 1 で作成したユーザ アカウントのパスワードです。
    6. ktpass -princ HTTP/myhost@Example.CORP -pass password -mapuser myhost 
      -out c:\temp\myhost.HTTP.keytab
    7. 手順 a で作成した keytab ファイルを WebLogic Server ドメインの起動ディレクトリにコピーします。
    8. root としてログインしてから ktutil ユーティリティを使用して以下のように単一の keytab に結合します。
    9. ktutil: "rkt myhost.host.keytab"
      ktutil: "rkt myhost.HTTP.keytab"
      ktutil: "wkt mykeytab"
      ktutil: "q"
  12. kinit ユーティリティを実行して Kerberos 認証が正しく機能するかどうかを検証します。
  13. kinit -k -t keytab-file account-name

    出力は次のようになるはずです。

    New ticket is stored in cache file C:\Documents and 
    Settings\Username\krb5cc_MachineB

 


Microsoft のクライアントで統合 Windows 認証を使用するためのコンフィグレーション

シングル サインオンを利用する Microsoft のクライアントでは、必ず統合 Windows 認証を使用するようにコンフィグレーションします。以下の節では、.NET Web サーバおよび Internet Explorer ブラウザ クライアントで統合 Windows 認証を使用するようにコンフィグレーションする方法を説明します。

.NET Web サービスのコンフィグレーション

.NET Web サービスで Windows 認証を使用するようにするには、次のようにコンフィグレーションします。

  1. Web サービスの web.config ファイルで、IIS および ASP.NET の認証モードを以下のように Windows に設定します。
  2. <authentication mode="Windows" />

    通常、これはデフォルトの設定です。

  3. Web サービス クライアントがプロキシ Web サービス オブジェクトに渡されるために必要な文を追加して、SOAP を介して資格が送られるようにします。
  4. たとえば、プロキシ オブジェクト conv で表される Web サービスに対する Web サービス クライアントの場合、以下のような構文になります。

    /*
    * Web サービスに明示的に資格を渡す
    */
    conv.Credentials =
    System.Net.CredentialCache.DefaultCredentials;

Internet Explorer ブラウザのコンフィグレーション

Internet Explorer ブラウザで Windows 認証を使用するようにコンフィグレーションするには、Internet Explorer で以下の手順を実行します。

ローカル イントラネット ドメインのコンフィグレーション

  1. Internet Explorer で、[ツール|インターネット オプション] の順に選択します。
  2. [セキュリティ] タブを選択します。
  3. [イントラネット] を選択し、[サイト] をクリックします。
  4. [イントラネット] ポップアップ ウィンドウで [プロキシ サーバーを使用しないサイトをすべて含める] オプションおよび [ほかのゾーンにないローカル (イントラネット) のサイトをすべて含める] オプションがチェックされていることを確認します。
  5. [詳細設定] をクリックします。
  6. [イントラネット] ダイアログ ボックスで、SSO コンフィグレーションに参加する WebLogic Server インスタンスに対して使用されるすべての関連ドメインの名前 (例 : myhost.example.com) を追加し、[OK] をクリックします。

イントラネット認証のコンフィグレーション

  1. [ツール|インターネット オプション] を選択します。
  2. [セキュリティ] タブを選択します。
  3. [イントラネット] を選択し、[レベルのカスタマイズ...] をクリックします。
  4. [セキュリティの設定] ダイアログ ボックスでスクロールして [ユーザー認証] セクションを見つけます。
  5. [イントラネット ゾーンでのみ自動的にログインする] オプションを選択します。このオプションを選択すると、ログオン用の資格を再入力する必要がなくなります。これがこのソリューションの重要な部分です。
  6. [完了] をクリックします。

プロキシ設定の検証

プロキシ サーバを有効にしている場合には、以下の手順を実行します。

  1. [ツール|インターネット オプション] を選択します。
  2. [接続] タブを選択し、[LAN の設定] をクリックします。
  3. プロキシ サーバのアドレスとポート番号が正しいかどうかを検証します。
  4. [詳細設定] をクリックします。
  5. [プロキシの設定] ダイアログ ボックスで、[例外] フィールドに目的とするドメイン名がすべて入力されていることを確認します。
  6. [OK] をクリックして [プロキシの設定] ダイアログ ボックスを閉じます。

Internet Explorer 6.0 用の統合認証の設定

Internet Explorer 6.0 を実行している場合、上記の設定に加えて次の設定も必要になります。

  1. Internet Explorer で、[ツール|インターネット オプション] の順に選択します。
  2. [詳細設定] タブを選択します。
  3. スクロールして [セキュリティ] セクションを見つけます。
  4. [統合 Windows 認証を使用する (再起動が必要)] オプションがチェックされていることを確認します。
  5. このオプションがチェックされていなかった場合、コンピュータを再起動します。

 


JAAS ログイン ファイルの作成

Windows または UNIX のプラットフォームで WebLogic Server を実行している場合、JAAS ログイン ファイルが必要です。JAAS ログイン ファイルでの指定によって WebLogic Security フレームワークで Kerberos 認証が使用されるようになります。また、JAAS ログイン ファイルには WebLogic Server の Kerberos ID 情報の格納された keytab ファイルの場所も定義します。このファイルの場所は、WebLogic Server の java.security.auth.login.config 起動引数で指定します。「WebLogic Server での Kerberos 認証における起動引数の使用」を参照してください。

コード リスト 6-2 に、Kerberos 認証用の JAAS ログイン ファイルのサンプルを示します。

コード リスト 6-2 Kerberos 認証用の JAAS ログイン ファイルのサンプル
com.sun.security.jgss.initiate {

     com.sun.security.auth.module.Krb5LoginModule required
     principal="myhost@Example.CORP" useKeyTab=true
     keyTab=mykeytab storeKey=true;
};

com.sun.security.jgss.accept {

     com.sun.security.auth.module.Krb5LoginModule required
     principal="myhost@Example.CORP" useKeyTab=true
     keyTab=mykeytab storeKey=true;

};

 


ID アサーション プロバイダのコンフィグレーション

WebLogic Server には、Microsoft クライアントを使用したシングル サインオン (SSO) をサポートするセキュリティ プロバイダ、ネゴシエート ID アサーション プロバイダがあります。この ID アサーション プロバイダでは、SPNEGO (Simple and Protected Negotiate) のトークンをデコードして Kerberos のトークンを取得し、その Kerberos トークンを検証した後で WebLogic ユーザにマップします。Microsoft クライアントを使用した SSO を有効にするには、WebLogic セキュリティ レルムでネゴシエート ID アサーション プロバイダをコンフィグレーションする必要があります。「ネゴシエート ID アサーション プロバイダのコンフィグレーション」と、Administration Console オンライン ヘルプの「認証および ID アサーション プロバイダのコンフィグレーション」を参照してください。

 


WebLogic Server での Kerberos 認証における起動引数の使用

WebLogic Server で Kerberos 認証を使用するには、WebLogic Server の起動時に以下の起動引数を使用します。

-Djava.security.krb5.realm=Example.CORP
-Djava.security.krb5.kdc=ADhostname
-Djava.security.auth.login.config=krb5Login.conf
-Djavax.security.auth.useSubjectCredsOnly=false
-Dweblogic.security.enableNegotiate=true

各要素の説明は以下のとおりです。

 


Microsoft のクライアントに対する SSO の検証

Microsoft のクライアントを含む SSO が適切にコンフィグレーションされているかどうかを検証するには、使用する Microsoft の Web アプリケーションまたは Web サービスをブラウザ (「Internet Explorer ブラウザのコンフィグレーション」の説明に従ってコンフィグレーションしたもの) で指定します。Windows ドメインにログオンし、そのドメインの Active Directory サーバから Kerberos 資格を取得している場合、ユーザ名とパスワードを指定せずに Web アプリケーションまたは Web サービスにアクセスできるはずです。


  ページの先頭       前  次