次の項では、SPNEGO (Simple and Protected Negotiate)メカニズムとKerberosプロトコルに基づく統合Windows認証をWebLogicネゴシエーションIDアサーション・プロバイダと併用して、Microsoftクライアントでのシングル・サインオン(SSO)を設定する方法について説明します。
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をサポートするホスト・コンピュータは、次のシステム要件を満たす必要があります。
Windows Server 2000、2003または2008 R2がインストールされています。
Active Directoryによる認証サービスが完全に構成されています。Active Directoryの要件は以下のとおりです。
Kerberosサービスをマッピングするためのユーザー・アカウント群。
それらのアカウント用のサービス・プリンシパル名(Service Principal Names : SPNs)。
キータブ・ファイルが作成され、WebLogicドメインの起動ディレクトリにコピーされています。
WebLogic Serverがインストールされ、JDK 1.6.0_24以降で、この章の説明のとおりKerberosを使った認証を行うように適切に構成されています。
WebLogic ServerホストでKerberosサービスにマップされるユーザー・アカウントを暗号化することをお薦めします。ただし、これらのアカウントを暗号化できるようにするには、さらに要件を満たす必要があります。この特定の要件は、表6-1に示すとおり、使用する暗号化アルゴリズムに依存します。
表6-1 暗号化されたユーザー・アカウントを使用するためのクライアント・タイプの要件
暗号化 | サポートされるクライアント・タイプ | Active Directoryプラットフォーム |
---|---|---|
DES |
|
Windows 2003以降 |
AES-128、AES-256およびRC4 |
|
Windows 2008-R2以降 |
脚注1Java SEクライアントでアクセスされるユーザー・アカウントは、DES、AES-128、AES-256およびRC4で暗号化し、Windows 2003プラットフォームで実行されるActive Directoryで定義することもできます。
SSOを使用するMicrosoftクライアントをホストするコンピュータは、次の要件を満たす必要があります。
Windows 2000 Professional SP2以降がインストールされています。
注意: Active Directoryで定義され、AES-128、AES-256またはRC4で暗号化されたユーザー・アカウントにアクセスするInternet Explorer 8.0クライアントおよびFireFox 7.0.1クライアントがWindows 7 Enterpriseプラットフォームで動作することが保証されています。 |
次のいずれかのタイプのクライアントがホストされています。
適切に構成されたInternet Explorerブラウザ。Internet Explorer 6.01以降がサポートされています(「Internet Explorerブラウザの構成」を参照)。
適切に構成されたMozilla Firefoxブラウザ(「Mozilla Firefoxブラウザの構成」を参照)
.NETフレームワーク1.1および適切に構成されたWebサービス・クライアント(「.NET Webサービスの構成」を参照)。
スタンドアロンのJava SEクライアント・アプリケーション(「Java SEクライアント・アプリケーションの構成」を参照)
クライアントはWindows 2000のドメインにログオンしていて、そのドメイン内のActive Directoryサーバーから取得したKerberosの資格証明を保持している必要があります。ローカル・ログインは機能しません。
MicrosoftのクライアントにSSOを構成するには、Microsoft Active Directory、クライアント、およびWebLogicドメインでの設定手続きが必要です。この手順についてこれ以降の項で説明します。
WebLogic Serverを表すプリンシパルをActive Directoryで定義します。Kerberosプロトコルでは、必要なセキュリティ情報の格納にMicrosoftドメインのActive Directoryサーバーを使用します。
Microsoftドメイン内にあるアクセス対象のMicrosoftクライアントでは、統合Windows認証を使用し、使用可能な場合にはKerberosチケットを送信するように設定されている必要があります。
WebLogicドメインのセキュリティ・レルムに、ネゴシエーションIDアサーション・プロバイダを構成します。SSOで使用されるWebアプリケーションまたはWebサービスでは、特定の方式による認証セットが保持されていることが必要です。さらに、WebLogic ServerのKerberos IDの場所を定義するJAASログイン・ファイルも作成する必要があります。
Microsoftのクライアントに対するSSOは次のように構成します。
Kerberosを使用するようにネットワーク・ドメインを構成します。「Kerberosを使用するためのネットワーク・ドメインの構成」を参照してください。
WebLogic Server用にKerberos IDを作成します。
WebLogic Serverの動作するホスト用にActive Directoryのユーザー・アカウントを作成します。
作成したアカウント用にサービス・プリンシパル名(SPN)を作成します。
作成したアカウント用にユーザー・マッピングとキータブ・ファイルを作成します。
「WebLogic Server用のKerberos IDの作成」を参照してください。
Microsoftのクライアント(Webサービスまたはブラウザ)またはJava SEクライアントを選択し、統合Windows認証を使用するように構成します。「Microsoftのクライアントで統合Windows認証を使用するための構成」を参照してください。
WebLogicドメインでKerberos認証を使用するように設定します。
MicrosoftドメインのActive Directoryサーバーおよびステップ1で作成したキータブ・ファイルを指し示すJAASログイン・ファイルを作成します。「JAASログイン・ファイルの作成」を参照してください。
WebLogic Serverのセキュリティ・レルムにネゴシエートIDアサーション・プロバイダを構成します。「ネゴシエートIDアサーション・プロバイダの構成」を参照してください。
WebLogic Serverを特定の起動引数を使用して起動します。「WebLogic ServerでのKerberos認証における起動引数の使用」を参照してください。
これらの手順について以下の節で詳細に説明します。
Windowsドメイン・コントローラは、Kerberosベース・クライアントおよびホスト・システムのKerberosキー配布センター(KDC)・サーバーとして機能します。どのドメイン・コントローラでも、Active DirectoryサービスおよびKerberosサービスは自動的に実行されます。
Java GSSでは、Kerberos構成ファイルが必要になります。Kerberos構成ファイルのデフォルトのファイル名と格納場所は、使用しているオペレーティング・システムによって異なります。Java GSSでは、次の順序でデフォルトの構成ファイルが検索されます。
Javaプロパティjava.security.krb5.conf
で参照されているファイル
${java.home}/lib/security/krb5.conf
.
Microsoft Windowsプラットフォームの場合は%windir%\krb5.ini
Solarisプラットフォームの場合は/etc/krb5/krb5.conf
他の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
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ユーティリティを使用します。
setspn
- Windows 2000リソース・キット
ktpass
- Program Files\Support Tools
内のWindows 2000配布用CD
注意: setspn およびktpass Active DirectoryユーティリティはMicrosoftの製品です。そのため、Oracleではこのユーティリティに関する詳細なドキュメントを提供していません。詳細については、Microsoftの適切なドキュメントを参照してください。 |
Kerberos IDの作成プロセスは次のとおりです。
Active DirectoryサーバーにWebLogic Serverが動作するホスト・コンピュータのユーザー・アカウントを作成します(「新規作成」>「コンピュータ」ではなく、「新規作成」>「ユーザー」を選択します)。
ユーザー・アカウントを作成する際には、シンプルなコンピュータ名を使用してください。たとえば、ホスト名がmyhost.example.com
の場合、Active Directoryのユーザーはmyhost
のような名前にします。
ユーザー・アカウントの作成時に定義したパスワードを書き留めておいてください。「ステップ3: サービス・プリンシパル名の定義とサービスのキータブの作成」で説明する手順にこのパスワードが必要になります。「ユーザーは次回ログオン時にパスワードの変更が必要」オプションやその他のパスワード・オプションを選択しないでください。
Kerberosプロトコルに準拠するように新しく作成したユーザー・アカウントを構成します。ユーザー・アカウントの暗号タイプは少なくともDESにする必要があり、アカウントはKerberos事前認証を必要とします。AES-128、AES-256、RC4など、より強力な暗号タイプがサポートされます。
左ペインの「ユーザー」ツリーでユーザー・アカウント名を右クリックして、「プロパティ」を選択します。
「アカウント」タブを選択してから、次のチェック・ボックスを選択します。
DES暗号化を使用する場合、「このアカウントにDES暗号化を使う」チェック・ボックスを選択します。
注意: DES暗号化ではActive DirectoryがWindows Server 2003以降で動作している必要があります。 |
AES暗号化を使用する場合、「このアカウントでKerberos AES 128ビット暗号化をサポートする」および「このアカウントでKerberos AES 256ビット暗号化をサポートする」のチェック・ボックスを選択し、Kerberos DES暗号化を使うのチェックを解除します。
注意: AES-128およびAES-256の暗号化ではActive DirectoryがWindows Server 2008-R2以降で動作している必要があります。 |
その他のボックス(特にKerberos事前認証を必要としないボックス)が選択されていないことを確認します。
「OK」をクリックします。
警告: 暗号タイプを設定すると、パスワードが破損するおそれがあります。そのため、ユーザー・パスワードをリセットする必要があります。ユーザー・アカウントの名前を右クリックして「パスワードのリセット」を選択し、「ステップ1: ホスト・コンピュータのユーザー・アカウントの作成」で作成したパスワードと同じパスワードを再入力してください。 |
「WebLogic ServerのKerberos IDの作成」で示すように、SPNは、サービスのインスタンスを識別する一意の名前で、サービス・インスタンスが実行するログオン・アカウントに関連付けられます。SPNは、特定のサービスをホストするクライアントとサーバー間の相互認証のプロセスで使用されます。接続しようとするサービスのSPNに基づきクライアントがコンピュータ・アカウントを検出します。そのため、特定のプロジェクトでは、WebLogicクライアントから呼び出されるサービスと、WebLogic Serverに定義したアカウントを結び付ける必要があります。たとえば、WebLogicブラウザ・クライアントで呼び出されるサービスHTTP/myhost.example.com
は、myhost
アカウントと結び付ける必要があります。
Windowsアカウント名はKerberosプリンシパル名としてのマルチパートではありません。このため、名前HTTP/
hostname.dns.com
を使用してアカウントを直接作成することはできません。このようなプリンシパル・インスタンスは、SPNマッピングによって作成されます。この場合、アカウントは意味のある名前hostname
で作成され、SPNマッピングはHTTP/
hostname.dns.com
に対して追加されます。
SPNを定義してサービスのキータブを作成する固有の手順は、WebLogic Serverが実行している基盤のプラットフォームによって異なります。これらについては次の項で説明します。
WebLogic ServerがWindowsシステムで実行する場合、次の手順を実行します。
setspn
ユーティリティを使用して、ステップ1で作成されたWebLogic ServerアカウントのHTTPサービスのSPNを作成します。例:
setspn -A HTTP/myhost.example.com myhost
setspn -L
コマンドを入力して、ユーザー・アカウントに関連付けられるSPNを特定します。例:
setspn -L myhost
ヒント: 前述の手順は重要です。同じサービスがActive Directoryサーバーの異なるアカウントに結び付けられている場合、クライアントはサーバーにKerberosチケットを送信しません。 |
ktab
ユーティリティを使用して、WebLogic Serverマシンにエクスポートされるキータブを作成します。ktab
ユーティリティを実行するコマンドの構文は次のとおりです(Kerberosレルム名はすべて大文字で入力してください)。
ktab -k keytab-file-name -a account-name@REALM.NAME
例:
ktab -k mykeytab -a myhost@MYDOM.COM
パスワードが求められた場合、ステップ1で作成したパスワードを入力します。
キータブ・ファイルを安全な場所に保存し、そのファイルをWebLogic Serverインスタンスのドメイン・ディレクトリ(myhost
など)にエクスポートします。
WebLogic ServerがUNIXシステムで実行する場合、ktpass
コマンドライン・ツールを使用して、WebLogic ServerアカウントのHTTPサービスのサービス・プリンシパル名(SPN)とキータブ・ファイルを作成します。このツールを使用すると、管理者はWindows Server Active Directoryのセキュリティ・プリンシパルとしてWindows Server以外のKerberosサービスを構成できます。
ktpass
コマンドは、Active DirectoryでサービスのSPNを構成し、サービスの共有秘密鍵を含むKerberosキータブ・ファイルを生成します。ツールを使用すると、Kerberos認証をサポートするUNIXベースのサービスでは、Windows Server Kerberos KDCサービスで提供される相互運用機能を使用できます。
ktpass
コマンドの構文は次のようになります。
ktpass -princ HTTP/hostname@REALM-NAME -mapuser account-name -pass password -out keytab-file-name -crypto algorithm -ptype KRB5_NT_PRINCIPAL
前述の構文で、algorithm
は使用する暗号化アルゴリズムを示します。AESを使用する場合、AES128-SHA1
またはAES256-SHA1
を指定します。例:
ktpass -princ HTTP/myhost.example.com@MYDOM.COM -mapuser myhost -pass welcome1 -out mykeytab -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL
注意: UNIXシステムでは、DESまたはAESの暗号化アルゴリズムを使用するSPNの作成は、JDK 1.6.0_24以降でサポートされます。 |
SPNおよびキータブ・ファイルが正しく設定されていることを確認するには、次の操作を行います。
setspn -l
コマンドを使用して、SPNが正常にマップされていることを確認します。
klistコマンドを使用して、AES-128の場合Key type: 17
、AES-256の場合Key type: 18
を表示します。例:
-klist -e -k keytab-file-name
kinitコマンドを使用して、Kerberos設定およびキータブが有効であることを確認します。
注意: ktpass コマンドは、Active Directoryサーバーでプリンシパル名を、account-name からHTTP/ account-name に変更します。その結果、HTTP/ account-name というプリンシパルに対してキータブ・ファイルが生成されます。ただし、名前が変更されない場合があります。変更されない場合、Active Directoryサーバーで名前を手動で変更する必要があります。変更を行わない場合、生成したキータブは適切に機能しません。
ユーザー・ログオン名を手動で変更するには、次の操作を行います。
|
次のユーティリティを使用して、SPNとキータブ・ファイルが正常に設定されていることを確認します。
setspn -l
コマンドを使用して、SPNが正常にマップされていることを確認します。
klist
コマンドを使用して、キー・タイプを確認します。例:
-klist -e -k keytab-file-name
AES 128の場合、このコマンドによりKey type: 17
と表示されます。AES 256の場合、Key type: 18
と表示されます。
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
AES-256では、Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 6が必要です。これは次のURLで入手できます。
http://www.oracle.com/technetwork/java/javase/downloads/index.html
AES暗号化を使用する場合、次の手順に従います。
前述のURLからJCE Unlimited Strength Jurisdiction Policy Filesをダウンロードします。
管轄ポリシー・ファイルを圧縮解除し、抽出します。
含まれているREADME.txt
ファイルで説明されているインストール手順を完了させます。
シングル・サインオンを利用するMicrosoftのクライアントでは、必ず統合Windows認証を使用するように構成します。次の各項では、.NET Webサーバー、Internet Explorerブラウザ・クライアント、Mozilla FirefoxクライアントおよびJava SEクライアントで、統合Windows認証を使用するように構成する方法を説明します。
注意: KerberosチケットがマップされているWebLogic Serverホストでユーザー・アカウントのSPNがDESやAES-256の暗号化を使用するように構成されている場合(「ステップ2: Kerberosに準拠するユーザー・アカウントの構成」を参照)、クライアントはJDK 1.6.0_24以降で実行される必要があります。 |
.NET Webサービスで統合Windows認証を使用するようにするには、次のように構成します。
Webサービスのweb.config
ファイルで、IISおよびASP.NETの認証モードを次のようにWindowsに設定します。
<authentication mode="Windows" />
通常、これはデフォルトの設定です。
Webサービス・クライアントがプロキシWebサービス・オブジェクトに渡されるために必要な文を追加して、SOAPを介して資格証明が送られるようにします。
たとえば、プロキシ・オブジェクトconv
で表されるWebサービスに対するWebサービス・クライアントの場合、次のような構文になります。
/* * Explicitly pass credentials to the Web Service */ conv.Credentials = System.Net.CredentialCache.DefaultCredentials;
Internet Explorerブラウザが統合Windows認証を使用するように構成するには、次の項で説明する手順を完了します。
Internet Explorerで:
「ツール」>「インターネット・オプション」を選択します。
「セキュリティ」タブを選択します。
「イントラネット」を選択し、「サイト」をクリックします。
「イントラネット」ポップアップ・ウィンドウで「プロキシ サーバーを使用しないサイトをすべて含める」オプションおよび「ほかのゾーンにないローカル (イントラネット) のサイトをすべて含める」オプションが選択されていることを確認します。
「詳細設定」をクリックします。
「イントラネット」ダイアログ・ボックスで、SSO構成に参加するWebLogic Serverインスタンスに対して使用されるすべての関連ドメインの名前(例: myhost.example.com
)を追加し、「OK」をクリックします。
Internet Explorerで:
「ツール」>「インターネット・オプション」を選択します。
「セキュリティ」タブを選択します。
「イントラネット」を選択し、「レベルのカスタマイズ...」をクリックします。
「セキュリティの設定」ダイアログ・ボックスでスクロールして「ユーザー認証」セクションを見つけます。
「イントラネット・ゾーンでのみ自動的にログインする」オプションを選択します。このオプションを選択すると、ログオン用の資格証明を再入力する必要がなくなります。これがこのソリューションの重要な部分です。
「OK」をクリックします。
プロキシ・サーバーを有効にしている場合には、以下の手順を実行します。
Internet Explorerで、「ツール」>「インターネット・オプション」の順に選択します。
「接続」タブを選択し、「LANの設定」をクリックします。
プロキシ・サーバーのアドレスとポート番号が正しいかどうかを検証します。
「詳細設定」をクリックします。
「プロキシの設定」ダイアログ・ボックスで、「例外」フィールドに目的とするドメイン名がすべて入力されていることを確認します。
「OK」をクリックして「プロキシの設定」ダイアログ・ボックスを閉じます。
構成するInternet Explorerのバージョンが6.0の場合、次の手順も完了する必要があります。
Internet Explorerで、「ツール」>「インターネット・オプション」の順に選択します。
「詳細設定」タブを選択します。
スクロールして「セキュリティ」セクションを見つけます。
「統合Windows認証を使用する」オプションがチェックされていることを確認し、「OK」をクリックします。
このオプションにチェックマークが入っていない場合、チェックマークを入れ、「OK」をクリックしてコンピュータを再起動します。
Windows統合認証を使用するようにFirefoxブラウザを構成するには、次の手順に従います。
Firefoxを起動します。
ロケーション・バーでabout:config
を入力します。
フィルタ文字列としてnetwork.negotiate
と入力します。
各プリファレンスを表6-2のように設定します。
表6-2 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
プリファレンスの値は空白にしてください。
統合Windows認証を使用するようにJava SEクライアント・アプリケーションを構成するには、次の手順に従います。
Java SEクライアントがJDK 1.6.0_24以降で動作していることを確認します。
Kerberosログイン・モジュール(com.sun.security.auth.module.Krb5LoginModule
)を示すJAAS構成ファイルを作成します。この構成ファイルには、次の2つのログイン・エントリを定義します。
com.sun.security.jgss.krb5.initiate
: Javaクライアントに対して呼び出されます。
com.sun.security.jgss.krb5.accept
: KerberosのIDで表され、クライアントがアクセスするWebアプリケーションをホストするWebLogic Serverインスタンスに対して呼び出されます。
各ログイン・エントリに対し、次のようなオプションが含まれます。
プリンシパルの認証が成功する必要があります(つまり、クライアント・アプリケーションのユーザーがMicrosoftドメインで定義されていること)。
useKeyTab
をtrue
に設定します。これにより、プリンシパルのキーがキータブから取得されます。
キータブの名前を識別します。
storeKey
をtrue
に設定します。これにより、プリンシパルのキーがサブジェクトに格納されます。
必要に応じて、debug
オプションをtrue
に設定します。
次のサンプルは、Active Directoryサーバーが実行されるMicrosoftドメインSECURITYQA.COM
で定義されたnegotiatetester
プリンシパルで使用されるKerberosログイン・モジュールのJAAS構成ファイルを示しています。
com.sun.security.jgss.krb5.initiate { com.sun.security.auth.module.Krb5LoginModule required principal="negotiatetester@SECURITYQA.COM" useKeyTab=true keyTab=negotiatetester_keytab storeKey=true debug=true; }; com.sun.security.jgss.krb5.accept { com.sun.security.auth.module.Krb5LoginModule required principal="negotiatetester@SECURITYQA.COM" useKeyTab=true keyTab=negotiatetester_keytab storeKey=true debug=true; };
クライアント・アプリケーションを起動するJavaコマンドで、次の値を引数として渡します。
Active Directoryサーバーが実行されるMicrosoftドメイン
Kerberos Key Distribution Center(KDC)サーバーを実行するコンピュータのホスト名
Kerberosログイン・モジュールを識別するJAAS構成ファイル
javax.security.auth.useSubjectCredsOnly=false
プロパティ。これは、サブジェクトの資格証明ではない認証メカニズムの使用を認めることを指定します。
Java SEクライアント・クラスの名前
アクセスが要求されるWebアプリケーション・リソース
例:
java -Djava.security.krb5.realm = SECURITYQA.COM\ -Djava.security.krb5.kdc = rno05089.example.com\ -Djava.security.auth.login.config = negotiatetester_krb5Login.conf\ -Djavax.security.auth.useSubjectCredsOnly = false\ RunHttpSpnego http://myhost.example.com:7001/AuthenticatedServlet.jsp
WindowsまたはUNIXのプラットフォームでWebLogic Serverを実行している場合、JAASログイン・ファイルが必要です。また、JAASログイン・ファイルにはWebLogic ServerのKerberos ID情報の格納されたキータブ・ファイルの場所も定義します。このファイルの場所は、WebLogic Serverのjava.security.auth.login.config
起動引数で指定します。「WebLogic ServerでのKerberos認証における起動引数の使用」を参照してください。
注意: JDK 1.4およびJDK 5.0の場合、JAASログイン・エントリ名は、com.sun.security.jgss.initiate およびcom.sun.security.jgss.accept になります。
JDK 6.0の場合、JAASログイン・エントリ名は、 |
例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で使用されている検索パスが不明な場合は、ファイルへの絶対パスを指定します。パスは二重引用符で囲み、パス内のバックスラッシュ(\
)は二重バックスラッシュ(\\
)またはフォワード・スラッシュ(/
)で置き換えてください。
WebLogic Serverには、Microsoftクライアントを使用したシングル・サインオン(SSO)をサポートするセキュリティ・プロバイダ、ネゴシエートIDアサーション・プロバイダがあります。このIDアサーション・プロバイダでは、SPNEGO (Simple and Protected Negotiate)のトークンをデコードしてKerberosのトークンを取得し、そのKerberosトークンを検証した後でWebLogicユーザーにマップします。Microsoftクライアントを使用したSSOを有効にするには、WebLogicセキュリティ・レルムでネゴシエートIDアサーション・プロバイダを構成する必要があります。「ネゴシエートIDアサーション・プロバイダの構成」、およびOracle WebLogic Server管理コンソール・オンライン・ヘルプの認証プロバイダおよびIDアサーション・プロバイダの構成に関する項を参照してください。
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
説明:
javax.security.auth.useSubjectCredsOnly
には、サブジェクトの資格証明ではない認証メカニズムの使用を認めることを指定します。
java.security.auth.login.config
には、JAASログイン・ファイルkrb5Login.conf
を指定します(「JAASログイン・ファイルの作成」を参照)。
java.security.krb5.realm
には、Active Directoryサーバーが動作するMicrosoftドメインを定義します。
java.security.krb5.kdc
には、Active Directoryサーバーが動作するホストの名前を定義します。
Java GSSメッセージはトラブルシューティングで非常に役立つことが多いため、初期設定の段階で- Dsun.security.krb5.debug=true
を追加しておくとよいでしょう。
Microsoftのクライアントを含むSSOが適切に構成されているかどうかを検証するには、使用するMicrosoftのWebアプリケーションまたはWebサービスをブラウザ(「Internet Explorerブラウザの構成」の説明に従って構成したもの)で指定します。Windowsドメインにログオンし、そのドメインのActive DirectoryサーバーからKerberos資格証明を取得している場合、ユーザー名とパスワードを指定せずにWebアプリケーションまたはWebサービスにアクセスできるはずです。