ナビゲーションをスキップ

WebLogic Server のセキュリティ

  前 次 前/次ボタンと目次ボタンとの区切り線 目次  

Microsoft のクライアントに対するシングル サインオンのコンフィグレーション

この章では、SPNEGO (Simple and Protected Negotiate) メカニズムに基づく Windows 認証と WebLogic ネゴシエート ID アサーション プロバイダを使用して、Microsoft クライアントによるシングル サインオン (SSO) を設定する方法について説明します。

 


Microsoft のクライアントに対するシングル サインオン : 主な手順

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 ドメインの両方で設定を行います。

主なコンフィグレーション手順を以下に示します。

  1. WebLogic Server 用に Kerberos ID を作成します。
    1. WebLogic Server の動作するホスト用に Active Directory のユーザ アカウントを作成します。
    2. 作成したアカウント用にサービス プリンシパル名を作成します。
    3. 作成したアカウント用にユーザ マッピングと keytab ファイルを作成します。

    詳細については、「WebLogic Server 用の Kerberos ID の作成」を参照してください。

  2. Microsoft のクライアント (Web サービスまたはブラウザ) を選択し、統合 Windows 認証を使用するようにコンフィグレーションします。詳細については、「Microsoft のクライアントで統合 Windows 認証を使用するためのコンフィグレーション」を参照してください。
  3. WebLogic Server ドメインで Kerberos 認証を使用するように設定します。
    1. Microsoft ドメインの Active Directory サーバおよび手順 1 で作成した keytab ファイルを指し示す JAAS ログイン ファイルを作成します。詳細については「JAAS ログイン ファイルの作成」を参照してください。
    2. WebLogic Server のセキュリティ レルムにネゴシエート ID アサーション プロバイダをコンフィグレーションします。詳細については、「ネゴシエート ID アサーション プロバイダのコンフィグレーション」を参照してください。
    3. WebLogic Server の Web アプリケーションまたは Web サービスで CLIENT-CERT 認証メカニズムの使用を有効にします。詳細については、「WebLogic Server Web アプリケーションまたは Web サービスでのネゴシエート トークン使用の有効化」を参照してください。
  4. WebLogic Server を特定の起動引数を使用して起動します。詳細については、「WebLogic Server で Kerberos 認証を使用するための起動引数」を参照してください。

これらの手順について以下の節で詳細に説明します。

 


Microsoft のクライアントを含む SSO に必要なシステム要件

Microsoft クライアントで SSO を使用するには、以下のシステム要件を満たす必要があります。

ホスト コンピュータ側の要件は以下のとおりです。

クライアント システム側の要件は以下のとおりです。

 


WebLogic Server 用の Kerberos ID の作成

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 を作成するには以下の手順を行います。

  1. Active Directory サーバに WebLogic Server が動作するホスト コンピュータのユーザ アカウントを作成します。
  2. ユーザ アカウントを作成する際には、シンプルなコンピュータ名を使用してください。たとえば、ホスト名が myhost.example.com の場合、Active Directory のユーザは myhost のような名前にします。

    ユーザ アカウントの作成時に定義したパスワードは記録しておきます。このパスワードは手順 3 で必要になります。[ユーザは次回ログオン時にパスワードの変更が必要] オプションはオンにしないでください。

  3. setspn ユーティリティを使用して、手順 1 で作成したユーザ アカウントに対して一連の SPN (Service Principal Name) を作成します。以下のコマンドを入力します。
  4. setspn -a host/myhost.example.com myhost
    setspn -a HTTP/myhost.example.com myhost
  5. ktpass ユーティリティを使用してユーザ マッピングを作成します。
  6. Windows
    ktpass -princ host/myhost@Example.CORP -pass password -mapuser myhost -out c:\temp\myhost.host.keytab

    UNIX
    ktpass -princ HTTP/myhost@Example.CORP -pass password -mapuser myhost -out c:\temp\myhost.HTTP.keytab

    ここで password は、手順 1 で作成したユーザ アカウントのパスワードです。

  7. keytab ファイルを作成します。
  8. Windows の場合

    1. WebLogic Server が動作しているホスト上で ktab ユーティリティを実行して、keytab ファイルを作成します。
    2. ktab -k mykeytab -a myhost@Example.CORP
    3. keytab ファイルを WebLogic Server ドメインの起動ディレクトリにコピーします。

    UNIX の場合

    1. 手順 3 で作成した keytab ファイルを WebLogic Server ドメインの起動ディレクトリにコピーします。
    2. root としてログインしてから ktutil ユーティリティを使用して以下のように単一の keytab に結合します。
    3. ktutil: "rkt myhost.host.keytab"
      ktutil: "rkt myhost.HTTP.keytab"
      ktutil: "wkt mykeytab"
      ktutil: "q"
    4. kinit ユーティリティを実行して Kerberos 認証が正しく機能するかどうかを検証します。
    5. kinit -t mykeytab myhost

 


Microsoft のクライアントで統合 Windows 認証を使用するためのコンフィグレーション

シングル サインオンを利用する Microsoft のクライアントでは、必ず統合 Windows 認証を使用するようにコンフィグレーションします。以下の節では、.NET Web サーバおよび Internet Explorer ブラウザで統合 Windows 認証を使用するようにコンフィグレーションする方法を説明します。

.NET Web サービスのコンフィグレーション

.NET Web サービスで Windows 認証を使用するようにコンフィグレーションするには、以下の手順を実行します。

  1. Web サービスの web.config ファイルで、IIS および ASP.NET の認証モードを以下のように Windows に設定します。
  2. <authentication mode="Windows" />

    通常、これはデフォルトの設定です。

  3. Web サービス クライアントがプロキシ Web サービス オブジェクトに渡されるために必要な文を追加して、SOAP を介して資格が送られるようにします。
  4. たとえば、プロキシ オブジェクト conv で表される Web サービスに対する Web サービスの場合、以下のような構文になります。

    /*
    * Explicitly pass credentials to the Web Service
    */
    conv.Credentials =
    System.Net.CredentialCache.DefaultCredentials;

Internet Explorer ブラウザのコンフィグレーション

Internet Explorer ブラウザで Windows 認証を使用するようにコンフィグレーションするには、Internet Explorer で以下の手順を実行します。

ローカル イントラネット ドメインのコンフィグレーション

  1. Internet Explorer で、[ツール|インターネット オプション] の順に選択します。
  2. [セキュリティ] タブを選択します。
  3. [イントラネット] を選択し、[サイト] をクリックします。
  4. [プロキシ サーバーを使用しないサイトをすべて含める] オプションがチェックされていることを確認します。
  5. [詳細設定] をクリックします。
  6. イントラネット (詳細設定) ダイアログ ボックスに、イントラネットで使用するすべての関連ドメインの名前 (myhost.example.com など) を追加して、[OK] をクリックします。

イントラネット認証のコンフィグレーション

  1. [ツール|インターネット オプション] を選択します。
  2. [セキュリティ] タブを選択します。
  3. [イントラネット] を選択し、[レベルのカスタマイズ] をクリックします。
  4. [セキュリティの設定] ダイアログ ボックスでスクロールして [ユーザー認証] セクションを見つけます。
  5. [イントラネット ゾーンでのみ自動的にログインする] オプションを選択します。このオプションを選択すると、ログオン用の資格を再入力する必要がなくなります。これがこのソリューションの重要な部分です。
  6. [OK] をクリックします。

プロキシ設定の検証

  1. [ツール|インターネット オプション] を選択します。
  2. [接続] タブを選択し、[LAN の設定] をクリックします。
  3. プロキシ サーバのアドレスとポート番号が正しいかどうかを検証します。
  4. [詳細設定] をクリックします。
  5. [プロキシの設定] ダイアログ ボックスで、[例外] フィールドに目的とするドメイン名がすべて入力されていることを確認します。
  6. [OK] をクリックして [プロキシの設定] ダイアログ ボックスを閉じます。

Internet Explorer 6.0 用の統合認証の設定

Internet Explorer 6.0 を実行している場合、上記の設定に加えて次の設定も必要になります。

  1. Internet Explorer で、[ツール|インターネット オプション] の順に選択します。
  2. [詳細設定] タブを選択します。
  3. スクロールして [セキュリティ] セクションを見つけます。
  4. [統合 Windows 認証を使用する (再起動が必要)] オプションがチェックされていることを確認します。
  5. このオプションがチェックされていなかった場合、コンピュータを再起動します。

 


JAAS ログイン ファイルの作成

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 サービスでのネゴシエート トークン使用の有効化

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 で Kerberos 認証を使用するには、WebLogic Server の起動時に以下の起動引数を使用します。

-Djava.security.krb5.realm=Example.CORP
-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 のクライアントを含む SSO が適切にコンフィグレーションされているかを検証するには、使用する Microsoft の Web アプリケーションまたは Web サービスをブラウザ (「Internet Explorer ブラウザのコンフィグレーション」の説明に従ってコンフィグレーションしたもの) で指定します。Windows ドメインにログオンし、そのドメインの Active Directory サーバから Kerberos 資格を取得している場合、ユーザ名とパスワードを指定せずに Web アプリケーションまたは Web サービスにアクセスできるはずです。

 

フッタのナビゲーションのスキップ  ページの先頭 前 次