WebLogic Security の管理
![]() |
![]() |
![]() |
![]() |
この章では、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 の作成」を参照してください。
CLIENT-CERT
認証メカニズムの使用を有効にします。詳細については、「WebLogic Server Web アプリケーションまたは Web サービスでのネゴシエート トークン使用の有効化」を参照してください。
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/
)。以下に例を示します。
[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-2Kerberos 認証用の 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 アサーション プロバイダのコンフィグレーション」を参照してください。
WebLogic Server Web サービスまたは Web アプリケーションを Microsoft のクライアントを含む SSO に参加させるには、ユーザが SSO を使用してアクセスする WebLogic Server リソースのセキュリティ制約を定義する必要があります。そのためには、認証メカニズムとして CLIENT-CERT
を使用するように Web サービスまたは Web アプリケーションをコンフィグレーションします。web.xml
デプロイメント記述子を編集して <auth-method>
要素内に CLIENT-CERT
を宣言すると、CLIENT-CERT を使用するようにコンフィグレーションされます。
コード リスト 6-3 に、認証メカニズムとして CLIENT-CERT
が設定された Conversation
という WebLogic Web サービス リソースの web.xml
ファイルのサンプルを示します。
コード リスト 6-3Client-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 サービスにアクセスできるはずです。
![]() ![]() |
![]() |
![]() |