ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Access Management開発者ガイド
11g リリース2 (11.1.2.2.0) for All Platforms
B69537-08
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
 

A デプロイメント固有ページの作成

Oracle Single Sign-Onでは、デプロイメントに固有のログイン、パスワード変更、およびシングル・サインオン・サーバーによるシングル・サインオフ・ページを統合するためのフレームワークが提供されます。つまり、UIのルック・アンド・フィールおよびグローバリゼーション要件に合せてこれらのページを調整できます。

JavaServer (JSP)ページを使用することをお薦めします。他のWebテクノロジでは、結果に矛盾が生じる可能性があります。PLSQLページはサポートされていません。製品にサンプル・ページが付属しています。Oracle Single Sign-On製品には、Oracle Application Serverでのテスト用のサンプル・ページが付属しています。

この章には次のトピックが含まれます。

A.1 シングル・サインオン・サーバーでのデプロイメント固有ページの使用方法

シングル・サインオン・ページを使用可能にするプロセスは、次のようにまとめることができます。

  1. ユーザーはアプリケーションをリクエストし、シングル・サインオン・サーバーへリダイレクトされます。

  2. ユーザーが認証されない場合、シングル・サインオン・サーバーはユーザーをサンプル・ログイン・ページかデプロイメント固有ページへリダイレクトします。このリダイレクトの一環として、表A-1に示すパラメータがサーバーからページに渡されます。

  3. ユーザーはログイン・ページを実行します。これにより、表A-2に示すパラメータが次の認証URLに渡されます。

    http://sso_host:sso_port/oam/server/auth_cred_submit
    

    または

    https://sso_host:sso_ssl_port/oam/server/auth_cred_submit
    

    これらのパラメータのうち少なくとも2つ(ssousernamepassword)が変更可能なフィールドとしてページに表示されます。

  4. 認証が失敗すると、サーバーはユーザーを再びログイン・ページへリダイレクトして、エラー・メッセージを表示します。

  5. ユーザーがシングル・サインオン・セッションを終了するには、作業中のアプリケーションで「ログアウト」をクリックします。これにより、アプリケーションのログアウトURLが同時にコールされ、ユーザーはアクセスしたすべてのアプリケーションからログアウトされ、シングル・サインオン・セッションが終了します。

  6. ユーザーはシングル・サインオン・サーバーへリダイレクトされ、そこでシングル・サインオフ・ページが表示されます。

A.1.1 パスワード変更ページの動作

パスワードの有効期限が切れている場合や期限切れが近いときにユーザーがログインしようとすると、サーバーは次のように動作します。

A.1.1.1 パスワードが失効している場合

パスワードの失効を表すページが表示されます。ユーザーは、古いパスワードと新しいパスワードを入力する必要があります。新しいパスワードは、Access Managerパスワード・ポリシー・ルールに準拠している必要があります。

A.1.1.2 パスワードが間もなく失効する場合

警告ページが表示され、ユーザーはここで、パスワードを変更したり、変更せずに続行できます。

A.1.1.3 猶予ログインが有効

パスワードが間もなく失効する場合と同じになります。

A.1.1.4 パスワード変更の強制

この機能は、管理者によるパスワードのリセット後にパスワードの変更をユーザーに要求します。このリセットは、属性obpasswordchangeflagが1に設定された後に要求されます。属性が設定されると、ユーザーは次回ログイン時にパスワードを変更する必要があります。

A.2 デプロイメント固有ページの記述方法

ログイン・ページ、パスワード変更ページおよびシングル・サインオフ・ページのURLでは、これらのページが正常に機能するために、以降の表に示すパラメータを受け入れる必要があります。

この項には次のトピックが含まれます。

A.2.1 ログイン・ページのパラメータ

ログイン・ページのURLでは、表A-1に示すパラメータを受け入れる必要があります。

表A-1 シングル・サインオン・サーバーによりログイン・ページに送信されるログイン・ページ・パラメータ

パラメータ 説明
p_error_code

エラー・コードが文字列の形式で含まれています。認証中にエラーが発生したときに渡されます。

request_id

クライアントとサーバー間でルーティングされるリクエストの追跡に使用される一意の識別子。

OAM_REQ

認証プロセスが完了するまでクライアントで追跡されるユーザー・ログイン・リクエスト・コンテキスト。


ログイン・ページでは、表A-2に示すパラメータを次の認証URLに渡す必要があります。

http://sso_host:sso_port/sso/auth

表A-2 ページからシングル・サインオン・サーバーに送信されるログイン・ページのパラメータ

パラメータ 説明
ssousername

ユーザー名が含まれています。UTF-8 encodedであることが必要です。

password

ユーザーによって入力されたパスワードが含まれています。UTF-8 encodedであることが必要です。

OAM_REQ (リクエストに存在する場合)

認証プロセスが完了するまでクライアントで追跡されるユーザー・ログイン・リクエスト・コンテキスト。

request_id (リクエストに存在する場合)

クライアントとサーバー間でルーティングされるリクエストの追跡に使用される一意の識別子。


ログイン・ページには、パラメータ名ssousernameのテキスト・フィールドとパラメータ名passwordのパスワード・フィールドの少なくとも2つが必要です。値は、認証URLに渡されます。

これらのパラメータを送信する他に、ログイン・ページはp_error_codeの指定に従って適切なエラー・メッセージを表示し、ユーザーが「取消」をクリックするとp_cancel_urlへリダイレクトする必要があります。

A.2.2 パスワード変更ページのパラメータ

パスワード変更ページのURLでは、表A-3に示すパラメータを受け入れる必要があります。


注意:

GITデプロイメントでは、パートナ・ログアウト・フローがp_done_urlで問合せパラメータを必要とするとき、このパラメータをURLエンコーディングして、Access Managerログアウト・サーブレットがこれらをAccess Managerパラメータであると解釈するのでなく、1つのp_done_urlの要素であると解釈するようにする必要があります。

表A-3 ページに送信されるパスワード変更パラメータ

パラメータ 説明
p_username

ページのどこかに表示されるユーザー名が含まれています。

p_subscribername

ホスティングが有効な場合のサブスクライバ・ニックネームです。

注意: このフィールドは、ログイン・ページで必須です。

p_error_code

前回のパスワード変更時にエラーが発生していた場合、文字列形式のエラー・コードが含まれます。

p_done_url

パスワードが保存された後に戻る適切なページのURLが含まれます。

site2pstoretoken

パスワードの期限が切れたか期限が切れようとしている場合に/sso/authログインURLで必要になるsite2pstoretokenが含まれています。

p_pwd_is_exp

パスワードの期限が切れたのか、それとも期限が切れようとしているのかを示すフラグ値が含まれています。値はWARNFORCEのいずれかです。関連するエラー・コードは、表A-5を参照してください。

locale

ユーザーの言語設定です(オプション)。ISO形式にする必要があります。たとえば、フランス語の場合はfr-frです。このパラメータの詳細は、「グローバリゼーション・サポートの追加」を参照してください。


パスワード変更ページは、表A-4に示すパラメータを、パスワード変更URLに渡す必要があります。

http://sso_host:sso_port/sso/ChangePwdServlet

表A-4 ページにより送信されるパスワード変更ページのパラメータ

パラメータ 説明
p_username

ページのどこかに表示されるユーザー名が含まれています。パスワード変更ページから、非表示フィールドとして送信する必要があります。UTF-8 encodedであることが必要です。

p_old_password

ユーザーの古いパスワードが含まれています。UTF-8 encodedであることが必要です。

p_new_password

ユーザーの新しいパスワードが含まれています。UTF-8 encodedであることが必要です。

p_new_password_confirm

ユーザーの新しい確認パスワードが含まれています。UTF-8 encodedであることが必要です。

p_done_url

パスワードが保存された後に戻る適切なページのURLが含まれます。

p_pwd_is_exp

パスワードの期限が切れたのか、それとも期限が切れようとしているのかを示すフラグ値が含まれています。値はWARNFORCEのいずれかです。関連するエラー・コードは、表A-5を参照してください。

site2pstoretoken

ログイン処理用のリダイレクトURL情報が含まれています。

p_action

変更をコミットします。値はOK(コミット)とCANCEL(無視)のいずれかであることが必要です。

p_subscribername

ページのどこかに表示されるユーザー名が含まれています。

p_request

ユーザーによりリクエストされた保護URLです。

locale

ユーザーの言語設定です(オプション)。ISO形式にする必要があります。たとえば、フランス語はfr-frです。

「グローバリゼーション・サポートの追加」を参照してください。


パスワード変更ページには、少なくともp_old_passwordp_new_passwordおよびp_new_password_confirmの3つのパスワード・フィールドが必要です。パスワード変更ページはこれらのフィールドをパスワード変更URLへ送信します。

パスワード変更ページは、p_done_urlも非表示パラメータとしてパスワード変更URLへ送信します。さらに、p_error_codeの値に応じてエラー・メッセージを表示する必要があります。

A.3 ページのエラー・コード

ログインおよびパスワード変更ページのURLでは、これらのページが正しく機能するために、以降の表に示すプロセス・エラーを受け入れる必要があります。

A.3.1 OSSO 10gログイン・ページのエラー・コード

OAMサーバーがOSSO10gに設定されると、ログイン・ページは表A-5に示すエラー・コードを処理する必要があります。

表A-5 ログイン・ページのエラー・コード

p_error_codeの値 対応するメッセージと説明
acct_lock_err

説明: ユーザーは何度もログインに失敗しました。

メッセージ: 「アカウントがロックされています。システム管理者に通知してください。」

pwd_exp_err

説明: ユーザーのパスワードはすでに期限切れです。

メッセージ: 「パスワードが期限切れです。管理者に連絡して、パスワードをリセットしてください。」

null_uname_pwd_err

説明: ユーザーはユーザー名フィールドを空白のままにしました。

メッセージ: 「有効なユーザー名を入力してください。」

auth_fail_exception

説明: 認証に失敗しました。

メッセージ: 「認証に失敗しました。再試行してください。」

null_password_err

説明: ユーザーはパスワード・フィールドを空白のままにしました。

メッセージ: 「ログイン・パスワードを入力する必要があります。」

sso_forced_auth

説明: アプリケーションは認証を必要としています。

メッセージ: 「アクセスしようとしているアプリケーションに以前サインインしている場合でも、再度サインインする必要があります。」

unexpected_exception

説明: 予期しないエラーが認証中に発生しました。

メッセージ: 「予期しないエラーが発生しました。再試行してください。」

unexp_err

説明: 予期しないエラーです。

「予期しないエラーが発生しました。管理者に通知してください。」

internal_server_err

説明: 内部サーバー・エラーのレポートです。

メッセージ: 「内部サーバー・エラーです。管理者に通知してください。」

internal_server_try_again_err

説明: 再試行のプロンプト付きの内部サーバー・エラーのレポートです。

メッセージ: 「内部サーバー・エラーです。操作を再試行してください。」

internal_server_try_later_err

説明: 後での実行のプロンプト付きの内部サーバー・エラーのレポートです。

メッセージ: 「内部サーバー・エラーです。後で操作を実行してください。」

gito_err

説明: 非アクティブのタイムアウトです。ユーザーは再度ログインする必要があります。

メッセージ: 「シングル・サインオン・セッションが期限切れになっています。セキュリティのため、一定の時間操作がないとセッションは期限切れになります。再度サインインしてください。」

cert_auth_err

説明: 証明書サインオンに失敗しました。ユーザーは証明書が有効であることを確認するか、または管理者に連絡する必要があります。

メッセージ: 「証明書ベースのサインインに失敗しました。証明書が有効であるか確認してください。有効でない場合はシステム管理者に連絡してください。」

session_exp_error

説明: シングル・サインオン・セッションの時間制限に達しました。

メッセージ: 「シングル・サインオン・セッションが期限切れになっています。セキュリティのため、指定された時間が経過するとセッションは期限切れになります。再度サインインしてください。」

userid_mismatch

説明: 強制認証中に提示されたユーザーIDは、現在のシングル・サインオン・セッションのユーザーIDと一致しません。

メッセージ: 「認証用に送信されたユーザー名は、既存のシングル・サインオン・セッションに存在するユーザー名と一致しません。」


A.4 グローバリゼーション・サポートの追加

OracleAS Single Sign-Onフレームワークにより、デプロイメント固有ページを各々のデプロイメントのニーズに合せてグローバル化できます。どの言語でページで表示するかを決めるとき、様々な方針を採ることができます。2つの方針を次の項で示します。

A.4.1 ページに表示する言語の決定

この項では、「HTTP Accept-Language」ヘッダーとデプロイメント・ページ・ロジックのいずれかを使用して表示言語を選択する方法を説明します。

A.4.1.1 Accept-Languageヘッダーを使用したページの決定

ブラウザでエンド・ユーザーは、Webコンテンツを表示する際の言語(ロケール)を決定できます。ブラウザはユーザーが選択した言語をサーバーへ、HTTP Accept-Languageヘッダーの形式で送信します。デプロイメント固有ページのロジックはこのヘッダーを調べ、それに応じてこのページをレンダリングする必要があります。シングル・サインオン・サーバーでは、このページを受け取ると、Accept-Languageヘッダーの値を読み取り、ユーザーのアイデンティティの伝播時にその値をアプリケーションへ送信します。多くのアプリケーションでは、ユーザーがこのヘッダーをオーバーライドできますが、シングル・サインオフ・ページはサインオン時に確立された言語で表示される点に注意してください。このため、すべてのアプリケーションで同じセッション言語が使用されます。

Accept-Languageヘッダーは、言語設定を決定するための推奨メカニズムです。この方法の主な利点は、エンド・ユーザーが他のWebサイトを閲覧している間に、言語をすでに設定している可能性が高いということです。そのため、これらのページとシングル・サインオンのページ間で閲覧の一貫性が保たれます。

A.4.1.2 ページ・ロジックを使用した言語の決定

前の項で説明した方法をお薦めしますが、ブラウザで設定された言語を拡張(またはオーバーライド)するメカニズムに基づいてグローバリゼーションを実装することもできます。たとえば、次のいずれかの方法があります。

  • ログイン・ページに言語一覧を表示し、ユーザーが選択できるようにします。ユーザーの便宜を考慮して、永続Cookieを設定してこの選択を永続的なものにすることもできます。

  • 言語を1つ設定して、ページをレンダリングします。この方法は、ユーザーが単一言語で入力することがわかっている場合に適しています。

  • 集中管理されたアプリケーション・リポジトリまたはディレクトリから言語設定を取得します。ユーザー設定項目、システム設定項目、構成データの集中管理されたストアは、言語を格納するのに最適です。

ページのロジックを使用して言語を設定する場合、ページではこの情報をシングル・サインオン・サーバーに伝播する必要があります。サーバーは、この情報をアプリケーションに伝播する必要があります。最終的には、一貫性のあるグローバリゼーションが保たれます。ページでは、ログイン・フォームのlocaleパラメータ(表A-2)を使用して、ISO-639形式で言語を渡す必要があります。多くのサイトには、ISO-639の2文字言語コードの全一覧があります。次のサイトには、ISO-3166の2文字国コードの全一覧があります。

http://www.chemie.fu-berlin.de/diverse/doc/ISO_3166.html

注意:

localeパラメータがシングル・サインオン・サーバーに渡されると(表A-1)、パラメータ値はmod_ossoへ送られます。mod_ossoはこの値をHTTP Accept-Languageヘッダーの先頭に追加してから、ヘッダーをアプリケーションに渡します。

A.4.2 ページのレンダリング

エンド・ユーザーのロケールが決定されると、デプロイメント固有ページでは対応する翻訳文字列を使用して、ページをレンダリングする必要があります。これらの文字列の格納方法および取得方法については、『Oracle Application Serverグローバリゼーション・ガイド』のロケール認識に関する章を参照してください。Java開発に関する標準的なドキュメントも参照してください。次に2つのリンクを示します。

A.5 デプロイメント固有ページに関するガイドライン

デプロイメント固有ページを実装する場合は、次のガイドラインに従ってください。

  • ログイン・ページとパスワード変更ページは、SSLで保護することをお薦めします。

  • ログイン・ページとパスワード変更ページでは、クロスサイト・スクリプティング攻撃に備えてコーディングする必要があります。

  • ログイン・ページとパスワード変更ページでは、自動埋込みとキャッシュをoffに設定する必要があります。これにより、ユーザーの資格証明がブラウザに保存されたり、キャッシュされる恐れはなくなります。AutoCompleteタグの例を次に示します。

    <FORM NAME="foo" AutoComplete="off" METHOD="POST" ACTION="bar">
    
  • オラクル社では、無認可のアクセスに対して警告するバナーを表示するように、ログイン・ページを構成することをお薦めします。たとえば、次のような文章を使用できます。

    Unauthorized use of this site is prohibited and may subject you to civil and criminal prosecution.
    
  • シングル・サインオン・サーバーをホスティングするコンピュータに、ログイン・ページおよびパスワード変更ページをデプロイします。これにより、これらのページの不正なバージョンを簡単に検出できます。

A.6 デプロイメント固有ページの例

ipassample.jarファイルには、login-ex.jsppassword-ex.jspsignoff-ex.jspの各ファイルが含まれています。これらのファイルを、デプロイメントに合せてカスタマイズできます。これらのファイルを使用する場合は、次のようにします。次に示すコマンドを使用してファイルを取り出します。

ORACLE_HOME/jdk/bin/jar -xvf ORACLE_HOME/sso/lib/ipassample.jar

A.6.1 カスタム・クラスの使用

一般に、カスタマイズしたデプロイメント固有ページは、OC4J_SECURITYによって使用されている現在のバージョンのコンポーネント・クラスで動作する必要があります。カスタム・アプリケーションで、特定のクラスの別のバージョンを使用する必要がある場合は、そのクラスをOC4J_SECURITYインスタンスではなく、別のOC4Jインスタンスにデプロイすることが必要です。

たとえば、OC4J_SECURITYで使用されるバージョンと競合するカスタムlog4jクラスを使用する必要のあるデプロイメントでは、そのカスタム・クラスを含むローカルのlog4j jarファイルを使用する別のOC4J_SECURITYインスタンスを起動します。


警告:

OC4J_SECURITYで使用されるクラスをカスタム・バージョンに置き換えると、Oracle Single Sign-Onや他のOracle Application Serverコンポーネントが使用できなくなる場合があります。


A.7 外部アプリケーションの追加

「シングル・サインオン・サーバー管理」ページで「外部アプリケーション管理」リンクをクリックし、「外部アプリケーションの追加」リンクをクリックすると、「外部アプリケーションの追加」ページが表示されます。このページには、次の見出しとフィールドが含まれています。

表A-6 外部アプリケーション・ログイン

フィールド 説明

アプリケーション名

外部アプリケーションを識別する名前を入力します。これは、外部アプリケーションのデフォルト名です。

ログインURL

外部アプリケーションのHTMLログイン・ページを認証するための送信先URLを入力します。例として次にYahoo! MailのログインURLを示します。

http://login.yahoo.com/config/login?6p4f5s403j3h0

ユーザー名/IDフィールド名

外部アプリケーションのHTMLログイン・フォームのユーザー名またはユーザーIDフィールドを識別する用語を入力します。この用語は、ログイン・フォームのHTMLソースで確認できます。(この後の手順の例を参照してください)。このフィールドは、Basic認証を使用している場合は適用されません。

パスワード・フィールド名

外部アプリケーションのHTMLログイン・フォームのパスワード・フィールドを識別する用語を入力します。この用語は、ログイン・フォームのHTMLソースで確認できます。(この後の手順の例を参照してください)。このフィールドは、Basic認証を使用している場合は適用されません。


表A-7 認証方式

フィールド 説明

使用する認証タイプ

プルダウン・メニューから、アプリケーションで使用するフォーム送信方法を選択します。これは、ブラウザがメッセージ・データを送信する方法を示します。この文字列は、ログイン・フォームのHTMLソースで確認できます。次の3つの方法のいずれかを選択します。

POST:シングル・サインオン・サーバーにデータを転送し、ログイン資格証明をフォームの本文内で送信します。

GET: ページ・リクエストをサーバーに送信し、ログイン資格証明をログインURLの一部として発行します。

Basic認証:アプリケーションURL内のログイン資格証明を送信します。この送信は、HTTP Basic認証で保護されます。

注意:

  • Basic認証で使用するポップアップ・ウィンドウは、Windows XPのサービス・パック2ではデフォルトでブロックされます。このサービス・パックを使用する場合、シングル・サインオン用ログイン・ページのウィンドウを表示するよう、ブラウザ設定を再構成してください。これには、Internet Explorerの「ツール」メニューにある「ポップアップ ブロック」を使用します。

    他のブラウザおよびブラウザ・プラグインでも、ポップアップのブロックが可能です。Mozillaはこれらの1つです。これらのブラウザによってシングル・サインオンのログイン・ページがブロックされないようにしてください。

  • Internet Explorer 5.0以上を使用する場合、外部アプリケーションでBasic認証が機能しないことがあります。このバージョンのInternet Explorerには、Microsoft MS04-004 Cumulative Security Update (832894)が含まれます。回避策は、次のサイトを参照してください。

    http://support.microsoft.com
    

表A-8 追加フィールド

フィールド 説明

フィールド名

ログイン時にユーザー入力を要求するフィールドをHTMLログイン・フォームに追加した場合は、そのフィールドの名前を入力します。このフィールドは、Basic認証を使用している場合は適用されません。

フィールド値

対応するフィールド名のデフォルト値を入力します(該当する場合)。このフィールドは、Basic認証を使用している場合は適用されません。


外部アプリケーションを追加する手順

  1. 「外部アプリケーション管理」ページから、「外部アプリケーションの追加」を選択します。

    「外部アプリケーションの追加」ページが表示されます。

  2. 「外部アプリケーション・ログイン」フィールドに、外部アプリケーション名とHTMLログイン・フォームの送信先URLを入力します。Basic認証を使用する場合は、保護されたURLを入力します。

  3. アプリケーションでHTTP POST認証またはHTTP GET認証が使用されている場合は、「ユーザー名/IDフィールド名」フィールドに、HTMLログイン・フォームのユーザー名またはユーザーIDフィールドを識別する用語を入力します。

    この名前は、ログイン・フォームのHTMLソースで確認できます。

    アプリケーションでBasic認証方式が使用されている場合は、「ユーザー名/IDフィールド名」フィールドを空にします。

  4. アプリケーションでHTTP POST認証またはHTTP GET認証が使用されている場合は、「パスワード・フィールド名」フィールドに、アプリケーションのパスワード・フィールドを識別する用語を入力します。

    ログイン・フォームのHTMLソースを参照してください。

    アプリケーションでBasic認証方式が使用されている場合は、「パスワード・フィールド名」フィールドを空にします。

  5. ログイン時にユーザー入力を要求するフィールドをHTMLログイン・フォームに追加した場合は、「追加フィールド」フィールドに、そのフィールドの名前とデフォルト値を入力します。

    アプリケーションでBasic認証方式が使用されている場合は、これらのフィールドを空にします。

  6. HTMLログイン・フォームでユーザーが追加フィールドのデフォルト値を変更できるようにする場合は、「ユーザーに表示」チェック・ボックスを選択します。

  7. 「OK」をクリックします。新しい外部アプリケーションが、「外部アプリケーション管理」ページの見出し「外部アプリケーションの編集/削除」の下に、他の外部アプリケーションとともに表示されます。

  8. アプリケーションのリンクをクリックして、ログインをテストします。

次の例は、Yahoo! Mailで使用する値のソースを示しています。

<form method=post action="http://login.yahoo.com/config/login?6p4f5s403j3h0" autocomplete=off name=a> 
...
<td><input name=login size=20 maxlength=32></td> 
.... 
<td><input name=passwd type=password size=20 maxlength=32></td> 
...
<input type=checkbox name=".persistent" value="Y" >Remember my ID & password 
...
</form> 

ソースには次の値が示されています。

  • ログインURL:

    http://login.yahoo.com/config/login?6p4f5s403j3h0
    
  • ユーザー名/IDフィールド名: login

  • パスワード・フィールド名: passwd

  • 使用する認証タイプ: POST

  • フィールド名: .persistent Y

  • フィールド値: [off]


注意:

AS中間層のホスト名を変更する場合は、この中間層で外部アプリケーションの「ログインURL」フィールドを手動で更新する必要があります。この変更は、次の項で説明する「外部アプリケーションの編集」ページで行います。