WebLogic Server のセキュリティ
![]() |
![]() |
![]() |
![]() |
この章では、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 Active Directory、クライアント、および WebLogic Server ドメインで設定を行います。
詳細については、「WebLogic Server 用の Kerberos ID の作成」を参照してください。
Microsoft クライアントで SSO を使用するには、以下のシステム要件を満たす必要があります。
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
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 -a host/myhost.example.com myhost
setspn -a HTTP/myhost.example.com myhost
setspn -Laccount name
Windows の場合ktpass -princ host/
myhost@Example.CORP -pass
password -mapuser myhost -out c:\temp\myhost.host.keytab
ktab
ユーティリティによってキー テーブルでプリンシパル名とキーのペアが管理されます。このユーティリティを使用して、プリンシパル名とキーのペアを表示、追加、更新、または削除することができます。UNIX では、ktpass
ユーティリティの使用が適しています。
ktpass -princ HTTP/
myhost@Example.CORP
-pass
password
-mapuser myhost -out c:\temp\myhost.HTTP.keytab
ktutil: "rkt myhost.host.keytab"
ktutil: "rkt myhost.HTTP.keytab"
ktutil: "wkt mykeytab"
ktutil: "q"
kinit -k -t
keytab-file
account-name
シングル サインオンを利用する Microsoft のクライアントでは、必ず統合 Windows 認証を使用するようにコンフィグレーションします。以下の節では、.NET Web サーバおよび Internet Explorer ブラウザで統合 Windows 認証を使用するようにコンフィグレーションする方法を説明します。
.NET Web サービスで Windows 認証を使用するようにコンフィグレーションするには、以下の手順を実行します。
Internet Explorer ブラウザで Windows 認証を使用するようにコンフィグレーションするには、Internet Explorer で以下の手順を実行します。
プロキシ サーバを有効にしている場合には、以下の手順を実行します。
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 ログイン ファイルのサンプルを示します。
コード リスト 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 サービスにアクセスできるはずです。
![]() ![]() |
![]() |
![]() |