ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebLogic Serverの保護
11g リリース1(10.3.4)
B61617-02
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

6 Microsoftのクライアントに対するシングル・サインオンの構成

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

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

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

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

WindowsおよびKerberosの詳細は、http://technet.microsoft.com/en-us/library/bb742431.aspxを参照してください。

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

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

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

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

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

MicrosoftのクライアントにSSOを構成するには、Microsoft Active Directory、クライアント、およびWebLogicドメインでの設定手続きが必要です。この手順についてこれ以降の項で説明します。

Microsoftのクライアントに対するSSOは次のように構成します。

  1. Kerberosを使用するようにネットワーク・ドメインを構成します。「Kerberosを使用するためのネットワーク・ドメインの構成」を参照してください。

  2. WebLogic Server用にKerberos IDを作成します。

    1. WebLogic Serverの動作するホスト用にActive Directoryのユーザー・アカウントを作成します。

    2. 作成したアカウント用にサービス・プリンシパル名を作成します。

    3. 作成したアカウント用にユーザー・マッピングとキータブ・ファイルを作成します。

    「WebLogic Server用のKerberos IDの作成」を参照してください。

  3. Microsoftのクライアント(Webサービスまたはブラウザ)を選択し、統合Windows認証を使用するように構成します。「Microsoftのクライアントで統合Windows認証を使用するための構成」を参照してください。

  4. WebLogicドメインでKerberos認証を使用するように設定します。

    1. MicrosoftドメインのActive Directoryサーバーおよびステップ1で作成したキータブ・ファイルを指し示すJAASログイン・ファイルを作成します。「JAASログイン・ファイルの作成」を参照してください。

    2. WebLogic Serverのセキュリティ・レルムにネゴシエーションIDアサーション・プロバイダを構成します。「ネゴシエーションIDアサーション・プロバイダの構成」を参照してください。

  5. WebLogic Serverを特定の起動引数を使用して起動します。「WebLogic ServerでのKerberos認証における起動引数の使用」を参照してください。

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

Kerberosを使用するためのネットワーク・ドメインの構成

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

Java GSSでは、Kerberos構成ファイルが必要になります。Kerberos構成ファイルのデフォルトのファイル名と格納場所は、使用しているオペレーティング・システムによって異なります。Java GSSでは、次の順序でデフォルトの構成ファイルが検索されます。

  1. Javaプロパティjava.security.krb5.confで参照されているファイル

  2. ${java.home}/lib/security/krb5.conf.

  3. Microsoft Windowsプラットフォームの場合は%windir%\krb5.ini

  4. Solarisプラットフォームの場合は/etc/krb5/krb5.conf

  5. Unixプラットフォームの場合は/etc/krb5.conf

Windowsドメイン・コントローラでKerberosを構成するには、Kerberosレルムと使用可能なKDCサーバーを特定するように、KDCにアクセスする各マシンを構成する必要があります。例:

例6-1 サンプルkrb5.iniファイル

[libdefaults]
default_realm = MYDOM.COM (Identifies the default realm. Set its value to your Kerberos realm)
default_tkt_enctypes = des-cbc-crc
default_tgs_enctypes = des-cbc-crc
ticket_lifetime = 600

[realms]

MYDOM.COM = {
kdc = <IP address for MachineA> (host running the KDC)
(For Unix systems, you need to specify port 88, as in <IP-address>: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を格納するメカニズムとしてキータブ・ファイルがあります。キータブ・ファイルはWebLogicドメインにコピーして、ログイン・プロセスで使用します。この構成手順では、WebLogic Server用のSPN、ユーザー・マッピング、およびキータブ・ファイルの作成方法について説明します。

この構成手順では、次のActive Directoryユーティリティを使用します。

Kerberos IDの作成プロセスは次のとおりです。

ステップ1: ホスト・コンピュータのユーザー・アカウントの作成

Active DirectoryサーバーにWebLogic Serverが動作するホスト・コンピュータのユーザー・アカウントを作成します(「新規作成」>「コンピュータ」ではなく、「新規作成」>「ユーザー」を選択します)。

ユーザー・アカウントを作成する際には、シンプルなコンピュータ名を使用してください。たとえば、ホスト名がmyhost.example.comの場合、Active Directoryのユーザーはmyhostのような名前にします。

ユーザー・アカウントの作成時に定義したパスワードを書き留めておいてください。「ステップ3: サービス・プリンシパル名の定義とサービスのキータブの作成」で説明する手順にこのパスワードが必要になります。「ユーザーは次回ログオン時にパスワードの変更が必要」オプションやその他のパスワード・オプションを選択しないでください。

ステップ2: Kerberosに準拠するユーザー・アカウントの構成

Kerberosプロトコルに準拠するように新しく作成したユーザー・アカウントを構成します。ユーザー・アカウントの暗号タイプはDESにする必要があり、アカウントはKerberos事前認証を必要とします。


注意:

Windows 2003およびIBM JDK 6でWebLogic Serverを実行している場合、ユーザー・アカウントの暗号タイプはRC4-HMACにします。

  1. 左ペインの「ユーザー」ツリーでユーザー・アカウント名を右クリックして、「プロパティ」を選択します。

  2. 「アカウント」タブを選択して、このアカウントにDES暗号化を使うチェック・ボックスを選択します。その他のボックス(特にKerberos事前認証を必要としないボックス)が選択されていないことを確認します。

  3. 「OK」をクリックします。


警告:

暗号タイプを設定すると、パスワードが破損するおそれがあります。そのため、ユーザー・パスワードをリセットする必要があります。ユーザー・アカウントの名前を右クリックして「パスワードの再設定」を選択し、「ステップ1: ホスト・コンピュータのユーザー・アカウントの作成」で作成したパスワードと同じパスワードを再入力してください。

ステップ3: サービス・プリンシパル名の定義とサービスのキータブの作成

「WebLogic ServerのKerberos IDの作成」で示すように、SPNは、サービスのインスタンスを識別する一意の名前で、サービス・インスタンスが実行するログオン・アカウントに関連付けられます。SPNは、特定のサービスをホストするクライアントとサーバー間の相互認証のプロセスで使用されます。接続しようとするサービスのSPNに基づきクライアントがコンピュータ・アカウントを検出します。そのため、特定のプロジェクトでは、WebLogicクライアントから呼び出されるサービスと、WebLogic Serverに定義したアカウントを結び付ける必要があります。たとえば、WebLogicブラウザ・クライアントで呼び出されるサービスHTTP/myhost.example.comは、myhostアカウントと結び付ける必要があります。

Windowsアカウント名はKerberosプリンシパル名としてのマルチパートではありません。このため、名前HTTP/hostname.dns.comを使用してアカウントを直接作成することはできません。このようなプリンシパル・インスタンスは、サービス・プリンシパル名マッピングによって作成されます。この場合、アカウントは意味のある名前hostnameで作成され、サービス・プリンシパル名マッピングはHTTP/hostname.dns.comに対して追加されます。

SPNを定義してサービスのキータブを作成する固有の手順は、WebLogic Serverが実行している基盤のプラットフォームによって異なります。これらについては次の項で説明します。

WindowsシステムでのSPNの定義とキータブの作成

WebLogic ServerがWindowsシステムで実行する場合、次の手順を実行します。

  1. setspnユーティリティを使用して、ステップ1で作成されたWebLogic ServerアカウントのHTTPサービスのSPNを作成します。例:

    setspn -A HTTP/myhost.example.com myhost
    
  2. setspn -Lコマンドを入力して、ユーザー・アカウントに関連付けられるSPNを特定します。例:

    setspn -L myhost
    

    ヒント:

    前述の手順は重要です。同じサービスがActive Directoryサーバーの異なるアカウントに結び付けられている場合、クライアントはサーバーにKerberosチケットを送信しません。

  3. ktabユーティリティを使用して、WebLogic Serverマシンにエクスポートされるキータブを作成します。ktabユーティリティを実行するコマンドの構文は次のとおりです(Kerberosレルム名はすべて大文字で入力してください)。

    ktab -k keytab-file-name -a account-name@REALM.NAME
    

    例:

    ktab -k mykeytab -a myhost@MYDOM.COM
    

    パスワードが求められた場合、ステップ1で作成したパスワードを入力します。

  4. キータブ・ファイルを安全な場所に保存し、そのファイルをWebLogic Serverインスタンスのドメイン・ディレクトリ(myhostなど)にエクスポートします。

UNIXシステムでのSPNの定義とキータブの作成

WebLogic ServerがUNIXシステムで実行する場合、ktpassコマンドライン・ツールを使用して、WebLogic ServerアカウントのHTTPサービスのSPNとキータブ・ファイルを作成します。このツールを使用すると、管理者はWindows Server Active Directoryのセキュリティ・プリンシパルとしてWindows Server以外のKerberosサービスを構成できます。

ktpassコマンドは、Active Directoryでサービスのサーバー・プリンシパル名を構成し、サービスの共有秘密鍵を含むKerberosキータブ・ファイルを生成します。ツールを使用すると、Kerberos認証をサポートするUNIXベースのサービスでは、Windows Server Kerberos KDCサービスで提供される相互運用機能を使用できます。

ktpassコマンドの構文は次のようになります。

ktpass -princ HTTP/hostname@REALM-NAME -mapuser account-name -pass password -out keytab-file-name

例:

ktpass -princ HTTP/myhost.example.com@MYDOM.COM -mapuser myhost -pass welcome1 -out mykeytab

注意:

ktpassコマンドは、Active Directoryサーバーでプリンシパル名を、account-nameからHTTP/account-nameに変更します。その結果、HTTP/account-nameというプリンシパルに対してキータブ・ファイルが生成されます。ただし、名前が変更されない場合があります。変更されない場合、Active Directoryサーバーで名前を手動で変更する必要があります。変更を行わない場合、生成したキータブは適切に機能しません。

ユーザー・ログオン名を手動で変更するには、次の操作を行います。

  1. ユーザー・ノードを右クリックして 「プロパティ」を選択し、「アカウント」タブをクリックします。

  2. WebLogicドメイン・ディレクトリのWebLogic ServerをホストするUNIXマシンに、生成されたキータブ・ファイルをエクスポートします。


ステップ4: 正しい設定の検証

kinitユーティリティを使用して、Kerberosが正しく設定されていることと、プリンシパルおよびキータブが有効であることを検証します。

JREで提供されるkinitユーティリティを使用して、Kerberosチケット許可チケットを取得およびキャッシュできます。kinitユーティリティを実行するには、次のコマンドを入力します。

kinit -k -t keytab-file account-name

出力は次のようになります。

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

Microsoftのクライアントで統合Windows認証を使用するための構成

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

.NET Webサービスの構成

.NET WebサービスでWindows認証を使用するようにするには、次のように構成します。

  1. Webサービスのweb.configファイルで、IISおよびASP.NETの認証モードを次のようにWindowsに設定します。

    <authentication mode="Windows" />
    

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

  2. Webサービス・クライアントがプロキシWebサービス・オブジェクトに渡されるために必要な文を追加して、SOAPを介して資格証明が送られるようにします。

    たとえば、プロキシ・オブジェクトconvで表されるWebサービスに対するWebサービス・クライアントの場合、次のような構文になります。

    /*
    * Explicitly pass credentials to the Web Service
    */
    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. 「OK」をクリックします。

プロキシ設定の検証

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

  1. 「ツール」>「インターネット・オプション」を選択します。

  2. 「接続」タブを選択し、「LANの設定」をクリックします。

  3. プロキシ・サーバーのアドレスとポート番号が正しいかどうかを検証します。

  4. 「詳細設定」をクリックします。

  5. 「プロキシの設定」ダイアログ・ボックスで、「例外」フィールドに目的とするドメイン名がすべて入力されていることを確認します。

  6. 「OK」をクリックして「プロキシの設定」ダイアログ・ボックスを閉じます。

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

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

  1. Internet Explorerで、「ツール」>「インターネット・オプション」の順に選択します。

  2. 「詳細設定」タブを選択します。

  3. スクロールして「セキュリティ」セクションを見つけます。

  4. 「統合Windows認証を使用する」オプションがチェックされていることを確認します。

  5. このオプションがチェックされていなかった場合、コンピュータを再起動します。

Mozilla Firefoxブラウザの構成

Windows統合認証を使用するようにFirefoxブラウザを構成するには、次の手順に従います。

  1. Firefoxを起動します。

  2. ロケーション・バーにabout:configと入力します。

  3. フィルタ文字列としてnetwork.negotiateと入力します。

  4. 各プリファレンスを表6-1のように設定します。

    表6-1 FirefoxでWindows統合認証を使用するために必要なプリファレンス

    プリファレンス名 ステータス タイプ
    network.negotiate-auth.allow-proxies
    
    default
    
    boolean
    
    true
    
    network.negotiate-auth.delegation-uris
    
    user set
    
    string
    
    http://,https://
    
    network.negotiate-auth.gsslib
    
    default
    
    string
    

    <blank>脚注1

    network.negotiate-auth.trusted-uris
    
    user set
    
    string
    
    http://,https://
    
    network.negotiate-auth.using-native-gsslib
    
    default
    
    boolean
    
    true
    

    脚注1network.negotiate-auth.gsslibプリファレンスの値は空白にしてください。

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

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


注意:

JDK 5.0およびJDK 1.4の場合、JAASログイン・エントリ名は、com.sun.security.jgss.initiateおよびcom.sun.security.jgss.acceptになります。

JDK 6.0の場合、JAASログイン・エントリ名は、com.sun.security.jgss.krb5.initiateおよびcom.sun.security.jgss.krb5.acceptに変更されました。


例6-2に、Kerberos認証用のJAASログイン・ファイルのサンプルを示します。重要な部分は太字で示されています。

例6-2 Kerberos認証用のJAASログイン・ファイルのサンプル

com.sun.security.jgss.krb5.initiate {

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

com.sun.security.jgss.krb5.accept {

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

};

プリンシパル・オプションには、サービスを実行しているアカウントのuserPrincipalNameの属性を指定します(間違ったユーザー・プリンシパル名を指定すると、「Unable to obtain password from user」などのエラーが発生します)。

keytabオプションに指定するキータブ・ファイルは、WebLogic Serverプロセスからアクセスできるファイルでなければなりません。適切な権限が設定されていることを確認してください。WebLogic Serverで使用されている検索パスが不明な場合は、ファイルへの絶対パスを指定します。パスは二重引用符で囲み、パス内のバックスラッシュ(\)は二重バックスラッシュ(\\)またはフォワード・スラッシュ(/)で置き換えてください。

IDアサーション・プロバイダの構成

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

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

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

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

説明:

Java GSSメッセージはトラブルシューティングで非常に役立つことが多いため、初期設定の段階で- Dsun.security.krb5.debug=trueを追加しておくとよいでしょう。

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

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