|
以下の節では、SPNEGO (Simple and Protected Negotiate) メカニズムと Kerberos プロトコルに基づく Windows 認証と WebLogic ネゴシエート ID アサーション プロバイダを使用して、Microsoft クライアントでのシングル サインオン (SSO) を設定する方法について説明します。
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 Active Directory、クライアント、および WebLogic Server ドメインでの設定手続きが必要です。この手順についてこれ以降の節で説明します。
Microsoft のクライアントに対する SSO は次のようにコンフィグレーションします。
「WebLogic Server 用の Kerberos ID の作成」を参照してください。
Windows ドメイン コントローラは、Kerberos キー配布センター (KDC) として機能し、Active Directory サービスおよび Kerberos サービスを使用します。どのドメイン コントローラでも、Active Directory サービスおよび Kerberos サービスは自動的に実行されます。
Windows ドメイン コントローラで Kerberos をコンフィグレーションするには、Kerberos レルムと使用可能な KDC サーバを特定するように、KDC にアクセスする各マシンをコンフィグレーションする必要があります。Windows マシンの場合、C:\winnt
フォルダの krb5.ini
ファイルを変更します。UNIX マシンの場合、krb5.conf
ファイル (デフォルトの場所は /etc/krb5/
) を変更します。次に例を示します。
[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
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 を作成するには以下の手順を行います。
ユーザ アカウントを作成する際には、シンプルなコンピュータ名を使用してください。たとえば、ホスト名が myhost.example.com
の場合、Active Directory のユーザは myhost
のような名前にします。
ユーザ アカウントの作成時に定義したパスワードは記録しておきます。このパスワードは手順 3 で必要になります。[ユーザは次回ログオン時にパスワードの変更が必要] オプションなどのパスワード オプションはオンにしないでください。
setspn
ユーティリティを使用して、手順 1 で作成したユーザ アカウントに対して一連の SPN (Service Principal Name) を作成します。以下のコマンドを入力します。setspn -a host/myhost.example.com myhost
setspn -a HTTP/myhost.example.com myhost
setspn -L account name
この手順は重要です。同じサービスが Active Directory サーバの異なるアカウントにリンクされていると、クライアントはサーバに Kerberos チケットを送信しません。
ktpass
ユーティリティを使用してユーザ マッピングを作成します。
Windowsktpass -princ host/
myhost@Example.CORP
-pass
password
-mapuser myhost -out c:\temp\myhost.host.keytab
ktab
ユーティリティによってキー テーブルでプリンシパル名とキーのペアが管理されます。このユーティリティを使用して、プリンシパル名とキーのペアを表示、追加、更新、または削除できます。UNIX では、ktpass
ユーティリティの使用が適しています。ktab
ユーティリティを実行して、keytab ファイルを作成します。ktab -kkeytab-filename
-amyhost@Example.CORP
ktpass
ユーティリティを使用してユーザ マッピングを作成します。password
は手順 1 で作成したユーザ アカウントのパスワードです。ktpass -princ HTTP/
myhost@Example.CORP
-pass
password
-mapuser myhost -out c:\temp\myhost.HTTP.keytab
ktutil
ユーティリティを使用して以下のように単一の keytab に結合します。ktutil: "rkt myhost.host.keytab"
ktutil: "rkt myhost.HTTP.keytab"
ktutil: "wkt mykeytab"
ktutil: "q"
kinit
ユーティリティを実行して Kerberos 認証が正しく機能するかどうかを検証します。kinit -k -t
keytab-file
account-name
New ticket is stored in cache file C:\Documents and
Settings\Username\krb5cc_MachineB
シングル サインオンを利用する Microsoft のクライアントでは、必ず統合 Windows 認証を使用するようにコンフィグレーションします。以下の節では、.NET Web サーバおよび Internet Explorer ブラウザ クライアントで統合 Windows 認証を使用するようにコンフィグレーションする方法を説明します。
.NET Web サービスで Windows 認証を使用するようにするには、次のようにコンフィグレーションします。
web.config
ファイルで、IIS および ASP.NET の認証モードを以下のように Windows に設定します。<authentication mode="Windows" />
たとえば、プロキシ オブジェクト conv
で表される Web サービスに対する Web サービス クライアントの場合、以下のような構文になります。
/*
* Web サービスに明示的に資格を渡す
*/
conv.Credentials =
System.Net.CredentialCache.DefaultCredentials;
Internet Explorer ブラウザで Windows 認証を使用するようにコンフィグレーションするには、Internet Explorer で以下の手順を実行します。
myhost.example.com
) を追加し、[OK] をクリックします。
プロキシ サーバを有効にしている場合には、以下の手順を実行します。
Internet Explorer 6.0 を実行している場合、上記の設定に加えて次の設定も必要になります。
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 ログイン ファイルのサンプルを示します。
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;
};
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 の起動時に以下の起動引数を使用します。
-Djava.security.krb5.realm=Example.COR
P
-Djava.security.krb5.kdc=ADhostname
-Djava.security.auth.login.config=krb5Login.conf
-Djavax.security.auth.useSubjectCredsOnly=false
-Dweblogic.security.enableNegotiate=true
Microsoft のクライアントを含む SSO が適切にコンフィグレーションされているかどうかを検証するには、使用する Microsoft の Web アプリケーションまたは Web サービスをブラウザ (「Internet Explorer ブラウザのコンフィグレーション」の説明に従ってコンフィグレーションしたもの) で指定します。Windows ドメインにログオンし、そのドメインの Active Directory サーバから Kerberos 資格を取得している場合、ユーザ名とパスワードを指定せずに Web アプリケーションまたは Web サービスにアクセスできるはずです。