認証を実装する

WebLogic Portal では、利用可能な任意の認証プロバイダに対して様々な方法でユーザのログインと認証を実装できます。次の各節では、9 つの認証サンプルを紹介します。認証を実装する際に参考にしてください。これらの節は、「チュートリアル ポータル」のサンプルの説明になります。

注意 : このトピックでは、WebLogic Server で使用できるように認証プロバイダをコンフィグレーションした後に認証を実装する方法について説明します。認証プロバイダの設定の詳細については、「WebLogic Portal で複数の認証プロバイダを使用する」を参照してください。

これらのサンプルではポータル Web プロジェクトのルートは、<WEBLOGIC_HOME>/samples/portal/portalApp/tutorial です。サンプル内のパスはこのルートへの相対パスです。これらのサンプルのすべてのリソースとコンフィグレーションは、チュートリアルのポータル Web プロジェクトに含まれています。このプロジェクトでは <WEBLOGIC_HOME>/samples/domains/portal/config.xml サーバ (portalServer) が使用されます。ユーザのドメインとポータル Web プロジェクトでこれらのサンプルを使用するには、サンプルで使用するファイルとコンフィグレーションをインポートするか、同様のファイルとコンフィグレーションを作成します。

このトピックでは、以下のサンプルを取り上げます。

  1. フォームベース
  2. クライアント証明書
  3. バッキング ファイル
  4. ページ フローを使用した複数ページのユーザ登録
  5. WebLogic 内の 2 番目のアプリケーションでのシングル サインオン
  6. 自動ログイン
  7. 基本認証
  8. ログインが必要なポータル アクセス
  9. 外部ログイン
  10. ユーザ ログイン コントロール

1. フォームベース

ソースの場所 : /portlets/login/formLogin/

サンプル /WEB-INF/web.xml では、CONFIDENTIAL transport-guarantee が指定されるので、/portlets/login/formLogin/login_link.jspredirect.jsp にアクセスする HTTPS URL が作成されるようになります。redirect.jsp は単にポータルにリダイレクトします。このサンプルでは HTTPS のプロトコルが作成されますが、ログイン時に HTTPS のみでユーザ名とパスワードを保護する場合は、redirect.jsp 内で HTTP に変更することもできます。

注意 : web.xml で指定される <form-login-page> URL は、WebLogic Administration Portal でデスクトップを作成する際に、WebLogic Workshop の .portal ファイルからポータルを実行しているか、データベースから組み立てたポータルを実行しているかによって異なります。たとえば、開発環境でファイル ベースのポータル (sample.portal など) を実行している場合、<form-login-page> 要素は
/samplel.portal?_nfpb=true&_pageLabel=login で指定されます。プロダクション環境で組み立てたポータルを実行している場合、<form-login-page> 要素は /appmanager/samplePortal/sampleDesktop?_nfpb=true&_pageLabel=login で指定されます。

2. クライアント証明書

ソースの場所 : /portlets/login/clientCert/

クライアント証明書の認可を使用するには

  1. /WEB-INF/web.xml で FORM または BASIC <login-config> をコメント アウトし、CLIENT-CERT <login-config> をコメント解除します。Web アプリケーションには単一の login-config しか設定できないので、この作業が必要になります。
  2. 次のいずれか 1 つを実行します。

    注意 : democlient-cert.p12 はデモンストレーション用に作成されたもので、プロダクション環境には使用できません。openssl を使用して独自の証明書を生成する場合、Web サイト www.openssl.org の手順を参照してください。

  3. IE バージョン 6 に democlient-cert.p12 をインポートする場合、次の手順を実行します。
    1. democlient-cert.p12 ファイルをダブルクリックします。
    2. 証明書のインポート ウィザードが起動したら、[次へ] をクリックします。
    3. ファイル名テキストボックスに democlient-cert.p12 が表示されます。[次へ] をクリックします。
    4. 秘密キーのパスワードは入力しないでください。[次へ] をクリックします。
    5. 証明書ストアは選択してもしなくてもかまいません。[次へ] をクリックします。
    6. [完了] をクリックします。

次の手順では、WebLogic Server をコンフィグレーションして SSL と democlient-cert を正しく使用できるようにします。

  1. portalServer を実行して、WebLogic Administration Console (http://<server>:<port>/console) を開きます。
  2. ツリー ビュー ペインで、[セキュリティレルムrealmNameプロバイダ認証DefaultIdentityAsserter] に移動します。
  3. [ユーザ名マッパーのクラス名] テキストボックスに examples.login.ExampleUserNameMapper と入力します。
  4. 認証タイプの X.509 を [選択済み] ボックスに移動し、[適用] をクリックします。
  5. [セキュリティレルムrealmNameユーザ] に移動し、パスワード password で、support という新しいユーザを作成します。
  6. [サーバportalServer] に移動し、[キーストア & SSL] タブをクリックします。
  7. ページ下部で [詳細オプション] の [表示] リンクをクリックします。
  8. [相互クライアント認証の動作] ドロップ ダウンで [クライアント証明書を要求 (強制しない)] を選択し (あるいは、必要な動作によっては強制する、を選択します)、[適用] をクリックします。
  9. システム クラスパスに examples.login.ExampleUserNameMapper.class を追加します。この場合、netuix_system.jar にクラスを追加します。ExampleUserNameMapper によって、X.509 証明書の Subject DN の電子メールからユーザ名が抽出されます。たとえば、democlient-cert.p12 には、support@bea.com の電子メールを伴う Subject DN があるため、結果としてユーザ名「support」が抽出されます。上記手順でレルムに support ユーザを追加したのはこのためです。

フォームベースのログイン サンプルで SSL を使用するため、一方向 SSL はすでにサーバにコンフィグレーションされています。任意のサーバでクライアント証明書認証を有効にするには、一方向 SSL をコンフィグレーションする必要があります (http://edocs.beasys.co.jp/e-docs/wls/docs81/secmanage/ssl.html にある『WebLogic Security の管理』の「SSL のコンフィグレーション」を参照)。

上記手順を実行したら、ポータルおよび /portlets/login/formLogin/login_link.jsp にアクセスし、クライアント証明書を使用してポータル Web アプリケーションにログインできます。保護されたリソースにアクセスするログイン リンクの使用については、「フォームベースのログイン サンプル」を参照してください。

3. バッキング ファイル

ソースの場所 : /portlets/login/backingFileLogin/

このサンプルでは、ポータルのパーソナライゼーション コードとバッキング ファイルを使用してログインします (/WEB-INF/src/portlet/login/LoginBacking.java)。データベース状態がコントロール状態によって破壊されないよう、バッキング ファイルはポータルにもリダイレクトします。

4. ページ フローを使用した複数ページのユーザ登録

ソースの場所 : /portlets/login/pageflowLogin/

このサンプルでは、Java ページ フローを使用して、複数ページのユーザ登録ポートレットがどのように実現されるかを示します。このサンプルには 4 ページあります。

  1. 1 ページ目には簡単なユーザ登録ページが表示される。
  2. 2 ページ目では、ユーザ プロパティ (パーソナライゼーション コード) に格納できるユーザ情報が収集される。
  3. 3 ページ目では、ユーザを認証するか (オプション)、概要ページが表示される (2 つのリンク)。
  4. 4 ページ目では、ユーザのログイン ステータスか概要ページが表示される。

5. WebLogic 内の 2 番目のアプリケーションでのシングル サインオン

ソースの場所 : /portlets/login/ssoLogin/

これは、2 つの Web アプリケーション間でのシングル サインオンのサンプルです。シングル サインオンが機能するには、web.xml で両方の Web アプリケーションのクッキー名エントリが一致する必要があります。Web アプリケーションのクッキー名が指定されていない場合、デフォルトで同じクッキー名が設定されるため、デフォルトではこの動作が機能します。

6. 自動ログイン

ソースの場所 : /portlets/login/autologin/

注意 : このサンプルではクッキーを使用するので、安全な認証方式ではありません。

このサンプルでは、クッキーの使用方法および自動ログインのコード化を説明します。ユーザがログインして [自動ログイン] チェックボックスを選択すると、ユーザ名とパスワードがコード化されます。ユーザ名とパスワードはクッキーとして応答に 1 日の間追加されます。この時点以降、ポータルを閉じ、再度開いても、ユーザは自動的にログインできるようになります。これはブラウザを終了しても同様です。ログアウトした場合、クッキーは削除されるので、ポータルを再度開いても自動的にログインできません。

このサンプルでは、バッキング ファイルを使用します (/WEB-INF/src/portlet/login/AutoLoginBacking.java)。

7. 基本認証

ソースの場所 : /portlets/login/basicLogin/

このサンプルでは、フォームベースのログインと同じ原理を使用します。基本認証を使用するには、web.xml で FORM ベースの認証方式または CLIENT-CERT ベースの認証方式をコメント解除して、認証の基本方式を使用します。レルム内のデフォルト ユーザの 1 つ (visitor1/password など) を使用してログインできます。

8. ログインが必要なポータル アクセス

ソースの場所 : /portlets/login/loginRequiredPortal/

このサンプルでは、ユーザの認証後にのみアクセス可能なポータルを示します。これを有効にするには、web.xml ですべての URL リソースに対するセキュリティ制約エントリを追加します。次に例を示します。

<security-constraint>
    <web-resource-collection>
        <web-resource-name>login</web-resource-name>
        <description>ポータル全体のセキュリティ制約</description>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <description>すべてのユーザ</description>
        <role-name>AnonymousRole</role-name>
    </auth-constraint>
</security-constraint>

9. 外部ログイン

ソースの場所 : /portlets/login/perimeterLogin/

WebLogic Server の次のドキュメント トピックを参照してください。

関連トピック

チュートリアル ポータル

WebLogic Portal による WebLogic Server セキュリティ フレームワークの使われ方