WebLogic Server のセキュリティ
![]() |
![]() |
![]() |
![]() |
この章では、SPNEGO (Simple and Protected Negotiate) メカニズムに基づく 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 の作成」を参照してください。
CLIENT-CERT
認証メカニズムの使用を有効にします。詳細については、「WebLogic Server Web アプリケーションまたは Web サービスでのネゴシエート トークン使用の有効化」を参照してください。
Microsoft クライアントで SSO を使用するには、以下のシステム要件を満たす必要があります。
Active Directory では、Kerberos 認証の主要なコンポーネントであるサービス プリンシパル名 (service principal names : SPN) がサポートされています。SPN は、サーバ上で動作しているサービスに対するユニークな ID です。Kerberos 認証を使用するすべてのサービスは各自の 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
シングル サインオンを利用する 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-1 に、Kerberos 認証用の JAAS ログイン ファイルのサンプルを示します。
コード リスト 6-1 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 Web サービスまたは Web アプリケーションを Microsoft のクライアントを含む SSO に参加させるには、Web サービスまたは Web アプリケーションの認証メカニズムとして CLIENT-CERT
を使用するようにコンフィグレーションする必要があります。web.xml
デプロイメント記述子を編集して <auth-method>
要素内に CLIENT-CERT
を宣言すると、CLIENT-CERT を使用するようにコンフィグレーションされます。
コード リスト 6-2 に、認証メカニズムとして CLIENT-CERT
が設定された Conversation
という WebLogic Web サービス リソースの web.xml
ファイルのサンプルを示します。
コード リスト 6-2 Client-Cert 認証を使用する web.xml ファイルのサンプル
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<security-constraint>
<display-name>Security Constraint on Conversation
</display-name>
<web-resource-collection>
<web-resource-name>Conversation web service
</web-resource-name>
<description>Only those granted the ConversationUsers
role may access the Conversation web service.
</description>
<url-pattern>/async/Conversation.jws/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>ConversationUsers</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>CLIENT-CERT</auth-method>
</login-config>
<security-role>
<description>Role description</description>
<role-name>ConversationUsers</role-name>
</security-role>
</web-app>
Web アプリケーションへのセキュリティ追加の詳細については、『WebLogic Security プログラミングの概要』の「Web アプリケーションのセキュリティ対策」を参照してください。
Web サービスへのセキュリティの追加の詳細については、『WebLogic Web サービス プログラマーズ ガイド』の「セキュリティのコンフィグレーション」を参照してください。
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
weblogic.security.enableNegotiate を指定して、WebLogic Server のサーブレット コンテナでの (SPNEGO で使用される) ネゴシエート トークンのサポートを有効化します。
Microsoft のクライアントを含む SSO が適切にコンフィグレーションされているかを検証するには、使用する Microsoft の Web アプリケーションまたは Web サービスをブラウザ (「Internet Explorer ブラウザのコンフィグレーション」の説明に従ってコンフィグレーションしたもの) で指定します。Windows ドメインにログオンし、そのドメインの Active Directory サーバから Kerberos 資格を取得している場合、ユーザ名とパスワードを指定せずに Web アプリケーションまたは Web サービスにアクセスできるはずです。
![]() ![]() |
![]() |
![]() |