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
を参照してください。
ノート:
WebLogic ServerでのMicrosoftクライアントのシングル・サインオン(SSO)サポートは、Webアプリケーションでのみ利用でき、EJBなど、他のアプリケーション・タイプでは利用できません。MicrosoftのクライアントでSSOを使用するには、ホスト・コンピュータの要件とクライアント・コンピュータの要件の両方を満たす必要があります。
MicrosoftクライアントのSSOをサポートするホスト・コンピュータは、次のシステム要件を満たす必要があります。
MicrosoftクライアントでのSSOがWebLogic ServerによってサポートされているMicrosoft Windowsのバージョン
これらのサポートされているバージョンの詳細は、Oracle Technology NetworkにあるOracle Fusion Middlewareのサポートされるシステム構成ページを参照してください。
Active Directoryによる認証サービスが完全に構成されています。Active Directoryの要件は以下のとおりです。
Kerberosサービスをマッピングするためのユーザー・アカウント群。
それらのアカウント用のサービス・プリンシパル名(SPN)。
キータブ・ファイルが作成され、WebLogicドメインの起動ディレクトリにコピーされています。
WebLogic Serverがインストールされ、この章の説明のとおりKerberosを使った認証を行うように適切に構成されています。
WebLogic ServerホストでKerberosサービスにマップされるユーザー・アカウントを暗号化することをお薦めします。ただし、これらのアカウントを暗号化できるようにするには、さらに要件を満たす必要があります。この特定の要件は、表21-1に示すとおり、使用する暗号化アルゴリズムに依存します。次の事項の詳細は、表21-1にリストされた暗号化アルゴリズムごとに、Oracle Technology NetworkのOracle Fusion Middlewareのサポートされるシステム構成ページを参照してください。
Active DirectoryプラットフォームとしてサポートされているMicrosoft Windowsの、対応するバージョン。
サポートされているInternet ExplorerとMozilla FireFoxクライアント・タイプの固有のバージョン。
表21-1 暗号化されたユーザー・アカウントを使用するためのクライアント・タイプの要件
暗号化アルゴリズム | サポートされるクライアント・タイプ |
---|---|
DES |
|
AES-128、AES-256およびRC4 |
|
脚注1
Java SEクライアントを使用してアクセスされるユーザー・アカウントは、DES、AES-128、AES-256およびRC4で暗号化でき、WebLogic Serverによってこの目的のためにサポートされているMicrosoft Windowsプラットフォーム上で実行されているActive Directoryで定義できます。
SSOを使用するMicrosoftクライアントをホストするコンピュータは、次の要件を満たす必要があります。
Microsoft Windowsのインストール
次の表にリストされるクライアント・タイプの1つを含んでいること(それらのクライアントを構成する手順へのリンクあり)
クライアント・タイプ | 参照先 |
---|---|
Internet Explorer脚注2 |
|
Mozilla FireFox脚注2 |
|
.NET Frameworkと正しく構成されたWebサービス・クライアント |
|
スタンドアロンのJava SEクライアント・アプリケーション |
脚注2
Active Directoryで定義され、AES-128、AES-256またはRC4で暗号化されているユーザー・アカウントへのアクセスがサポートされている特定バージョンの詳細は、Oracle Technology Networkの、Oracle Fusion Middlewareのサポートされるシステム構成のページを参照してください。
クライアントは、Microsoft Windowsドメインにログインしており、Active DirectoryサーバーからKerberos資格証明をドメインで持っている必要があります。ローカル・ログインは、サポートされません。
ノート:
SSOを使用したクライアントのホスティングがサポートされているMicrosoft Windowsのバージョンと、それらのクライアントでアクセスされるユーザー・アカウントをActive Directoryで定義するときに使用される暗号化アルゴリズムの詳細は、Oracle Technology Networkの、Oracle Fusion Middlewareのサポートされるシステム構成のページを参照してください。
MicrosoftのクライアントにSSOを構成するには、Microsoft Active Directory、クライアント、およびWebLogicドメインでの設定手続きが必要です。
MicrosoftのクライアントでSSOを構成する手順の詳細は、後続の各項を参照してください。
WebLogic Serverを表すプリンシパルをActive Directoryで定義します。Kerberosプロトコルでは、必要なセキュリティ情報の格納にMicrosoftドメインのActive Directoryサーバーを使用します。
Microsoftドメイン内にあるアクセス対象のMicrosoftクライアントでは、統合Windows認証を使用し、使用可能な場合にはKerberosチケットを送信するように設定されている必要があります。
WebLogicドメインのセキュリティ・レルムに、ネゴシエーションIDアサーション・プロバイダを構成します。SSOで使用されるWebアプリケーションまたはWebサービスでは、特定の方式による認証セットが保持されていることが必要です。さらに、WebLogic ServerのKerberos識別情報の場所を定義するJAASログイン・ファイルも作成する必要があります。
Microsoftのクライアントに対するSSOを構成するには:
Kerberosを使用するようにネットワーク・ドメインを構成します。「Kerberosを使用するためのネットワーク・ドメインの構成」を参照してください。
WebLogic Server用にKerberos識別情報を作成します。
WebLogic Serverの動作するホスト用にActive Directoryのユーザー・アカウントを作成します。
作成したアカウント用にサービス・プリンシパル名(SPN)を作成します。
作成したアカウント用にユーザー・マッピングとキータブ・ファイルを作成します。
「WebLogic Server用のKerberos識別情報の作成」を参照してください。
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サーバーを特定するように、Kerberosキー配布センター(KDC)にアクセスする各マシンを構成する必要があります。
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
たとえば:
例21-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認証の主要なコンポーネントであるサービス・プリンシパル名(SPN)がサポートされています。KerberosレルムでWebLogic Serverを表すSPNを定義する必要があります。WebLogic Server用のSPN、ユーザー・マッピングおよびキータブ・ファイルの作成方法を学習します。
SPNは、サーバー上で動作しているサービスに対する一意のIDです。Kerberos認証を使用するすべてのサービスは各自のSPNのセットを保持する必要があり、それによってクライアント側でのネットワーク上のサービスの識別が可能になります。SPNは通常、name@YOUR.REALM
のようになっています。サービスにSPNが設定されていないと、クライアントではそのサービスの場所を特定できません。つまり、SPNが正しく設定されていなければKerberos認証は不可能だということになります。一連のSPNを格納するメカニズムとしてキータブ・ファイルがあります。キータブ・ファイルはWebLogicドメインにコピーして、ログイン・プロセスで使用します。この構成ステップでは、WebLogic Server用のSPN、ユーザー・マッピング、およびキータブ・ファイルの作成方法について説明します。
この構成手順では、次のActive Directoryユーティリティを使用します。
setspn
- Microsoft Windowsリソース・キット
ktpass
- Microsoft WindowsディストリビューションCDのProgram Files\Support Tools
ノート:
setspn
およびktpass
Active DirectoryユーティリティはMicrosoftの製品です。そのため、Oracleではこのユーティリティに関する詳細なドキュメントを提供していません。詳細は、該当のMicrosoft社のドキュメントを参照してください。
Kerberos識別情報の作成プロセスは、次のステップで構成されます。
Active DirectoryサーバーにWebLogic Serverが動作するホスト・コンピュータのユーザー・アカウントを作成します(「新規作成」>「コンピュータ」ではなく、「新規作成」>「ユーザー」を選択します)。
ユーザー・アカウントを作成するときには、WebLogic Serverが動作するホスト・コンピュータを表す一意の名前を使用します。WebLogic Serverインスタンスが、Active Directoryドメインの一部であるホストで動作している場合は、ホスト名以外の名前を使用する必要があります。たとえば、ホスト名がmyhost.example.com
の場合、Active Directoryのユーザーはmyweblogichost
のような名前にします。WebLogic Serverインスタンスが、Active Directoryドメインの一部ではないマシンで動作している場合は、(ホスト名を含む)任意の一意の名前を使用してユーザー・アカウントを作成できます。
ユーザー・アカウントの作成時に定義したパスワードを書き留めておいてください。「ステップ3: サービス・プリンシパル名の定義とサービスのキータブの作成」で説明するステップにこのパスワードが必要になります。「ユーザーは次回ログオン時にパスワードの変更が必要」オプションやその他のパスワード・オプションを選択しないでください。
Kerberosプロトコルに準拠するように新しく作成したユーザー・アカウントを構成します。ユーザー・アカウントの暗号タイプは少なくともDESにする必要があり、アカウントはKerberos事前認証を必要とします。AES-128、AES-256、RC4など、より強力な暗号タイプがサポートされます。
ノート:
個別の暗号化タイプの使用は、Active Directoryが実行されているMicrosoft Windowsプラットフォームのバージョンにも依存します。サポートされた暗号化タイプのリストなどの詳細は、Oracle Technology Networkの、Oracle Fusion Middleware Supported System Configurationsページを参照してください。
ノート:
暗号タイプを設定すると、パスワードが破損するおそれがあります。そのため、ユーザー・パスワードをリセットする必要があります。ユーザー・アカウントの名前を右クリックして「パスワードのリセット」を選択し、「ステップ1: ホスト・コンピュータのユーザー・アカウントの作成」で作成したパスワードと同じパスワードを再入力してください。
「WebLogic ServerのKerberos識別情報の作成」で示すように、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が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 password -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サーバーで名前を手動で変更する必要があります。変更を行わない場合、生成したキータブは適切に機能しません。
ユーザー・ログオン名を手動で変更するには:
ユーザー・ノードを右クリックして 「プロパティ」を選択し、「アカウント」タブをクリックします。
WebLogicドメイン・ディレクトリのWebLogic ServerをホストするUNIXマシンに、生成されたキータブ・ファイルをエクスポートします。
次のユーティリティを使用して、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が必要です。これは次のURLで入手できます。
http://www.oracle.com/technetwork/java/javase/downloads/index.html
AES暗号化を使用する場合、次のステップを実行します。
README.txt
ファイルで説明されているインストール手順を完了させます。シングル・サインオンに使用するMicrosoftのクライアントは、必ず統合Windows認証を使用するように構成する必要があります。.NET Webサーバー、Internet Explorerブラウザ・クライアント、Mozilla FirefoxクライアントまたはJava SEクライアントを、統合Windows認証を使用するように構成できます。
この項では、次の項目について説明します。
ノート:
KerberosチケットがマップされているWebLogic Serverホストでユーザー・アカウントのSPNがDESやAES-256の暗号化を使用するように構成されている場合(「ステップ2: Kerberosに準拠するユーザー・アカウントの構成」を参照)、クライアントはサポートされているJDKで実行される必要があります。Oracle Technology NetworkのOracle Fusion Middlewareでサポートされるシステム構成を参照してください。
Internet Explorerブラウザが統合Windows認証を使用するように構成するには、次の項で説明する手順を完了します。
Internet Explorerで:
myhost.example.com
)を追加し、「OK」をクリックします。 Internet Explorerで:
プロキシ・サーバーを有効にしている場合:
WindowsプラットフォームまたはUNIXプラットフォームでWebLogic Serverを実行している場合、JAASログイン・ファイルを作成する必要があります。JAASログイン・ファイルでuserPrincipalName
属性およびkeytab
オプションの値を正しく指定する必要があります。
また、JAASログイン・ファイルにはWebLogic ServerのKerberos ID情報の格納されたキータブ・ファイルの場所も定義します。このファイルの場所は、WebLogic Serverのjava.security.auth.login.config
起動引数で指定します。「WebLogic ServerでのKerberos認証における起動引数の使用」を参照してください。
ノート:
JAASログイン・エントリ名は、com.sun.security.jgss.krb5.initiate
およびcom.sun.security.jgss.krb5.accept
です。
次の例に、Kerberos認証用のJAASログイン・ファイルのサンプルを示します。重要な箇所は太字で示しています。
例21-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で使用されている検索パスが不明な場合は、ファイルへの絶対パスを指定します。パスは二重引用符で囲み、パス内のバックスラッシュ(\
)は二重バックスラッシュ(\\
)またはフォワード・スラッシュ(/
)で置き換えてください。
このネゴシエート・アイデンティティ・アサーション・プロバイダでは、SPNEGO (Simple and Protected Negotiate)のトークンをデコードしてKerberosのトークンを取得し、そのKerberosトークンを検証した後でWebLogicユーザーにマップします。
Microsoftクライアントを使用したSSOを有効にするには、WebLogicセキュリティ・レルムでネゴシエートIDアサーション・プロバイダを構成する必要があります。このドキュメントの「ネゴシエーションIDアサーション・プロバイダの構成」の他、Oracle WebLogic Server管理コンソール・オンライン・ヘルプの認証およびアイデンティティ・アサーション・プロバイダの構成に関する項も参照してください。
WebLogic ServerでKerberos認証を使用するには、Javaコマンドで次の引数を使用して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サービスにアクセスできるはずです。