Oracle9iAS Single Sign-On
サードパーティ製品との統合
リリース 3.0.9 2001 年 11 月 部品番号 部品番号部品番号 部品番号 : J05371-01原典情報 : Oracle9iAS Single Sign-On Integration with Third-Party Single Sign-On Products(A95114-01)
Oracle9iAS Single Sign-On は、Oracle9iAS 製品の全機能への Single Sign-On を提 供します。これらのアプリケーションは認証を Oracle Single Sign-On サーバーに委 任するため、Oracle9iAS アプリケーションへのアクセス取得に必要なユーザーの認 証は一度だけです。サードパーティ製の Single Sign-On 製品を使用しているカスタ マも、9iAS スイートへのアクセスを取得できます。その場合は、API の使用によ り、Oracle Single Sign-On サーバーを、サードパーティ製の Single Sign-On システ ムと Oracle アプリケーションとの間の認証ゲートウェイとして動作させる必要が あります。
ここでは、Oracle Single Sign-On 統合ソリューションの動作、次いで統合 API につ いて説明します。最後に、Oracle9iAS Single Sign-On を Netegrity, Inc. の Single Sign-On 製品 SiteMinder® と統合するサンプル・コードを紹介します。
このドキュメントは、以下のトピックで構成されます。 ■ Oracle9iAS Single Sign-On の動作
■ サードパーティの Single Sign-On 製品との統合 ■ サードパーティの統合モジュール
■ 統合のケース・スタディ : Netegrity SiteMinder
Oracle9iAS Single Sign-On の動作
の動作
の動作
の動作
大半の Single Sign-On システムの主要コンポーネントは、認証トークンです。Web アプリケーションへのログインの初回成功時に、Oracle Single Sign-On サーバーは ユーザーにトークンを発行します。その後、他の Web サイトはそのトークンを使 用して自らの認証を確立します。ユーザーは、ユーザー名およびパスワードを一度 だけ指定します。この手法で重要な位置を占めるのは、委任および信頼という概念 です。関係するアプリケーションは、Single Sign-On サーバーを信頼して、それに 認証機能を委任します。このため、それらはパートナ・アプリケーションと呼ばれ ます。
Oracle は、Oracle Corporation の登録商標です。Oracle9i は、Oracle Corporation の商標または登録商標です。その他の製品 名は、各所有者の商標である場合があります。
サードパーティの
サードパーティの
サードパーティの
サードパーティの Single Sign-On 製品との統合
製品との統合
製品との統合
製品との統合
Oracle9iAS Single Sign-On を他の Single Sign-On 製品と統合する場合も、原則は同 じです。唯一の違いは、Oracle Single Sign-On サーバー、サードパーティの Single Sign-On サーバー、およびパートナ・アプリケーションにより信頼連鎖が形成され ることです。Oracle Single Sign-On サーバーは、サードパーティの Single Sign-On サーバーに認証を委任して、その重要なパートナ・アプリケーションになります。 Oracle アプリケーションは、Oracle Single Sign-On サーバーに対してのみ引き続き 機能し、サードパーティの Single Sign-On サーバーを認識しません。ただし、 Oracle アプリケーションは暗黙的にサードパーティのサーバーを信頼します。 Oracle9iAS Single Sign-On がこの取り決めに基づいて認証トークンをユーザーに発 行する場合、サードパーティの Single Sign-On サーバーは、HTTP ヘッダーを設定 して、認証トークンをユーザーの識別情報に渡す必要があります。ユーザーの識別 情報を取得した後、Oracle Single Sign-On サーバーはこれまでと同様に機能し、 ユーザー・アカウントの管理、アカウント・ポリシーのチェック、監査、トークン の生成、およびパートナ・アプリケーションへのユーザーのリダイレクトを実行し ます。 2 ページの図 1に、一連のプロセスを示します。 図 図図 図 1 サードパーティ製サードパーティ製サードパーティ製 Single Sign-On を使う場合の認証フローサードパーティ製 を使う場合の認証フローを使う場合の認証フローを使う場合の認証フロー 1. ユーザーが、サードパーティの Single Sign-On サーバーにログインします。 4 7 1 2 3 6 5
2. ログインが成功すると、サードパーティの Single Sign-On サーバーは、ユー ザーのブラウザ内にトークンを設定します。
3. ユーザーが、Oracle パートナ・アプリケーションへのアクセスを試みます。
4. パートナ・アプリケーションは、サードパーティのサーバーを無視して、ユー
ザーを Oracle Single Sign-On サーバーにリダイレクトします。同時に、ユー ザーはサードパーティの Single Sign-On トークンを Oracle Single Sign-On サーバーに渡します。
5. Oracle Single Sign-On サーバーが、独自の Cookie を検索します。
6. Cookie の検出に失敗すると、Oracle Single Sign-On サーバーはサードパー ティの Single Sign-On サーバーからのトークンを検索します。
7. Oracle Single Sign-On サーバーは、独自の Cookie を設定して、ユーザーを再 び Oracle パートナ・アプリケーションにリダイレクトし、ユーザーの識別情 報を含む URL トークンを渡します。 注意 注意注意 注意 : ■ ユーザーが、サードパーティの Single Sign-On サーバーにロ グインする前にパートナ・アプリケーションへのアクセスを 試みる場合、サードパーティのログイン・ページにユーザー をリダイレクトするように Oracle Single Sign-On サーバーを 設定できます。詳細は、『Oracle9iAS Single Sign-On 管理者 ガイド』の第 5 章にある「Single Sign-On ログイン・ページ のカスタマイズ」を参照してください。
■ 認証されたすべてのユーザーが Single Sign-On システムにア
クセス可能である場合、ユーザーのリポジトリを一箇所で集 中管理する必要があります。したがって、導入の前に、サー ドパーティの Single Sign-On リポジトリから Oracle Single Sign-On リポジトリへの移行、またはその逆の操作が必要で す。
サードパーティの統合モジュール
サードパーティの統合モジュール
サードパーティの統合モジュール
サードパーティの統合モジュール
サードパーティとの統合を実現するため、開発者は wwsso_auth_external の パッケージ本体を実装する必要があります。パッケージ仕様は、ssoauthx.pks ファイル内にあります。必須のインタフェースにより、次の機能が実行されます。 ■ ユーザー名およびパスワードを使用した認証 ■ トークンを使用した認証 ■ アカウント・ポリシーの実施 ■ パスワードの変更 ■ パスワードのリセット ■ 外部 Cookie の設定ユーザー名およびパスワードを使用した認証
ユーザー名およびパスワードを使用した認証
ユーザー名およびパスワードを使用した認証
ユーザー名およびパスワードを使用した認証
Oracle Single Sign-On サーバーが外部のユーザー・リポジトリを使用して認証を行 う場合、次の関数を実装する必要があります。サーバーはログイン・フォームに入 力された情報を使用して、この関数をコールします。 FUNCTION authenticate_user ( p_user IN VARCHAR2 ,p_password IN VARCHAR2 ) RETURN PLS_INTEGER;
/*The function throws the following exceptions: EXT_AUTH_FAILURE_EXCEPTION,EXT_AUTH_UNKNOWN_EXCEPTION EXT_AUTH_SETUP_EXCEPTION */
トークンを使用した認証
トークンを使用した認証
トークンを使用した認証
トークンを使用した認証
次の関数は、ログイン画面がユーザーに表示される前に呼び出されます。トークン を使用した認証をサポートする場合、この関数の実装者は、ユーザー識別情報を安 全な方法で取得する(たとえば、安全な方法で設定された HTTP ヘッダーやセキュ リティ保護された Cookie を確認する)ことにより、ユーザー名を Oracle Single Sign-On サーバーに返す必要があります。FUNCTION authenticate_user (
p_user OUT VARCHAR2 )
RETURN PLS_INTEGER;
/*The function throws the following exceptions: EXT_AUTH_FAILURE_EXCEPTION,EXT_AUTH_UNKNOWN_EXCEPTION EXT_AUTH_SETUP_EXCEPTION
アカウント・ポリシーの実施
アカウント・ポリシーの実施
アカウント・ポリシーの実施
アカウント・ポリシーの実施
Oracle Single Sign-On サーバーは、アカウントおよびパスワード・ポリシーを提供 します。外部リポジトリも同様の機能を提供しますが、次の関数が返す 0(false) または 1(true)の値を変更することにより、これらのポリシーのオンとオフを切 り替えることができます。
FUNCTION enforce_account_policies RETURN BOOLEAN;
/*Returns 0 or 1 for now
Policies that are enforced or not are: 1. User termination 2. Lockout */
パスワードの変更
パスワードの変更
パスワードの変更
パスワードの変更
ユーザーがパスワードの変更を要求した場合、Oracle Single Sign-On サーバーは、 以前のパスワードおよび新規パスワードの入力をユーザーに求めます。次に示すパ スワード変更プロシージャは、これらのパラメータを使用して、外部リポジトリ内 でのパスワード変更を実装します。 PROCEDURE change_passwd ( p_user IN VARCHAR2 ,p_oldpwd IN VARCHAR2 ,p_newpwd IN VARCHAR2 );
/*The procedure throws the following exceptions: EXT_NOT_SUPPORTED_EXCEPTION,EXT_CHANGE_PASSWORD_FAILED, EXT_CHANGE_PASSWD_EXCEPTION */
パスワードのリセット
パスワードのリセット
パスワードのリセット
パスワードのリセット
次のプロシージャでは、Oracle Single Sign-On サーバーは、ランダムに生成された 値を使用してユーザーのパスワードをリセットします。コール仕様 wwsso_ls_ private.ls_automated_reset_password は、プロシージャをコールしてこの 値を取得します。 PROCEDURE reset_passwd ( p_user IN VARCHAR2 ,p_passwd IN VARCHAR2 );
/*The procedure throws the following exceptions:
EXT_NOT_SUPPORTED_EXCEPTION,EXT_RESET_PASSWORD_EXCEPTION, EXT_AUTH_SETUP_EXCEPTION
認証名の取得
認証名の取得
認証名の取得
認証名の取得
次の関数は、外部認証エージェントの名前を返し、その後、Oracle Single Sign-On サーバーの設定画面にこの名前を表示します。
FUNCTION get_authentication_name RETURN VARCHAR2;
/*The function throws the following exceptions: EXT_AUTH_SETUP_EXCEPTION,EXT_NOT_SUPPORTED_EXCEPTION */
外部
外部
外部
外部 Cookie の設定
の設定
の設定
の設定
認証が成功すると、Oracle Single Sign-On サーバーは、p_cookie_list parameter 内 で提供されるすべての Cookie を外部認証サーバーのかわりに設定します。 PROCEDURE set_external_cookies
(
p_username IN VARCHAR2 ,p_password IN VARCHAR2
,p_cookie_list OUT wwsso_ls_private.cookie_list );
統合のケース・スタディ
統合のケース・スタディ
統合のケース・スタディ
統合のケース・スタディ : Netegrity SiteMinder
Netegrity, Inc. の提供する SiteMinder は、Oracle9iAS Single Sign-On と同様に、保 護されたリソースへの Single Sign-On 認証を提供する製品です。SiteMinder は、 SiteMinder Policy サーバーおよび SiteMinder Agent という 2 つのコンポーネント で構成されます。前者は、ユーザーおよびセッション管理、認証、承認などのさま ざまなサービスをユーザーに提供します。後者は、Web サーバーおよび Web アプ リケーション・サーバー上に配置されます。画面上でリソースの要求を表示した り、リソースを SiteMinder により保護するかどうかを決定します。
SiteMinder をインストール済みのカスタマは、SiteMinder を使用して Oracle9iAS アプリケーションにアクセスできます。この操作には、Oracle9iAS Single Sign-On を介して SiteMinder から Oracle アプリケーションへの通信を実現する API を使用 します。 この項は、以下のトピックで構成されます。 ■ SiteMinder ソリューションの認証フロー ■ 統合されたシステムからのログアウト ■ サンプル統合パッケージ ■ SiteMinder ソリューションのインストールおよび導入
SiteMinder ソリューションの認証フロー
ソリューションの認証フロー
ソリューションの認証フロー
ソリューションの認証フロー
7 ページの図 2には、統合された Single Sign-On/SiteMinder システムの認証フ ローを示します。ここでは、ユーザーが、最初に SiteMinder にログインせずに、 パートナ・アプリケーション(この場合は Oracle9iAS Portal)にアクセスしようと した場合の処理が示されています。 図 図図 図 2 SiteMinder を使う場合の認証フローを使う場合の認証フローを使う場合の認証フローを使う場合の認証フロー 1. ユーザーが、Oracle Portal 内部の保護されたリソースへのアクセスを試みま す。2. Oracle Portal は、ユーザーを Single Sign-On サーバーにリダイレクトします。
3. SiteMinder Agent は、Oracle Single Sign-On サーバーへのログインをフック し、証明書の提示をユーザーに求めます。
4. ユーザーは、自分の証明書を SiteMinder Agent に提示します。
5. SiteMinder Agent は、SiteMinder Policy サーバー内でユーザーの証明書を チェックします。SiteMinder Policy サーバーは、ユーザーの認証を試みます。 設定内容によっては、 Policy サーバーが Oracle Internet Directory に対して証明 書をチェックする場合があります。
6. 認証が成功すると、SiteMinder Agent はユーザーの認証情報を HTTP ヘッダー
の形式で Oracle Single Sign-On サーバーに渡します。
7. Oracle Single Sign-On サーバーは、URLC トークンを生成し、生成したトーク
ンを使用してユーザーの識別情報を Oracle Portal に転送します。 5 3 4 2 1 7 6
このシナリオのユーザーが SiteMinder にログイン済みの場合、ステップ 3、4、5 は省略され、SiteMinder Agent はユーザーの識別情報を HTTP ヘッダーの形式で送 信します。
統合されたシステムからのログアウト
統合されたシステムからのログアウト
統合されたシステムからのログアウト
統合されたシステムからのログアウト
統合された Oracle Single Sign-On/SiteMinder システムでは、ユーザーが Oracle Single Sign-On サーバーからログアウトする際は、SiteMinder からもログアウトす る必要があります。同時にログアウトするには、Single Sign-On のログアウト・プ ロシージャが URI として SiteMinder Agent に登録されている必要があります。詳 細は、「SiteMinder ソリューションのインストールおよび導入」を参照してくださ い。
Oracle Single Sign-On ログアウト・プロシージャが Oracle Portal から呼び出される と、SiteMinder Agent が要求を捕捉して SiteMinder セッションを終了させます。 次に、SiteMinder Agent は、Oracle Single Sign-On ログアウト・プロシージャに制 御を渡し、Oracle Single Sign-On ログアウト・プロシージャが Oracle Single Sign-On セッションを終了させます。
Oracle Portal で「ログアウト」をクリックすると、次の一連の操作が開始されま す。
1. Oracle Portal は、Portal セッションを終了させ、アプリケーション・ホーム・
ページの done_URL を使用して、ユーザーを Single Sign-On サーバーにリダ イレクトします。
2. SiteMinder Agent は、ログアウト要求を捕捉して SiteMinder Policy サーバー に接続し、SiteMinder セッションを終了させます。
3. SiteMinder Agent は、制御を Single Sign-On ログアウト・プロシージャに渡し ます。
4. Single Sign-On サーバーは、Single Sign-On セッションを終了させ、ステップ 1 で送信されたアプリケーション・ホーム URL にユーザーをリダイレクトしま す。 カスタマ・アプリケーションは、同時ログアウトを開始する前に、ユーザーを次の Portal ログアウト・リンクにリダイレクトする必要があります。 http://host:port/pls/Portal_DAD/Portal_schema.wwsec_app_priv.logout?p_done_ url=url_encoded_apps_URL アプリケーションの done_url は、次の形式になります。 http%3A%2F%2Fmysite.com/home この例では、ユーザーは mysite.com のホーム・ページにリダイレクトされます。 注意 注意注意
注意 : Oracle9iAS 1.0.2.2 では、Oracle Single Sign-On ユー ザー・リポジトリが Oracle Internet Directory である必要はあり ません。Oracle9iAS 2.0 では、このディレクトリとの統合が必要 です。
サンプル統合パッケージ
サンプル統合パッケージ
サンプル統合パッケージ
サンプル統合パッケージ
ここで紹介するパッケージ ssoxnete.pkb は、既存の SiteMinder 実装と Oracle9iAS Single Sign-On との統合に使用できます。
Rem ssoxnete.pkb Rem
Rem Copyright (c) Oracle Corporation 2001. All Rights Reserved. Rem
Rem NAME
Rem ssoxnete.pkb - Single Sign-On Netegrity SiteMinder Integration Rem
Rem DESCRIPTION
Rem This package body is used to achieve integration with Netegrity Rem SiteMinder. It may be customized as required. This is a
Rem default implementation and changes might be required based on a Rem customer's specific deployment scenario.
Rem NOTES Rem Rem
CREATE OR replace PACKAGE BODY wwsso_auth_external AS GLOBAL_SEPARATOR CONSTANT varchar2(1) := '~'; /* This function needs to be implemented to provide a DN * to UID mapping. One way to do this mapping is to look up
* the UID for a given DN in the directory. Note that the function must * be modified only if users are authenticated using PKI. */
FUNCTION map_dn_to_uid(p_user_dn IN VARCHAR2) return VARCHAR2
IS BEGIN
-- NULL implementation by default raise EXT_AUTH_FAILURE_EXCEPTION;
--In actual implementation, map DN to UID and return UID. --return p_user_dn
END map_dn_to_uid;
FUNCTION authenticate_user (
p_user OUT VARCHAR2 )
IS
l_http_header varchar(1000);
l_ssouser wwsec_person.user_name%type := NULL; BEGIN
l_http_header := owa_util.get_cgi_env('HTTP_SM_USER'); debug_print('SiteMinder ID : ' || l_http_header); /*
if l_http_header IS NULL then user may be authenticated by PKI in SiteMinder so check the DN header
*/
IF (l_http_header is NULL) THEN BEGIN
debug_print('check if user authenticated using PKI'); l_http_header := owa_util.get_cgi_env('HTTP_SM_USERDN'); l_ssouser := map_dn_to_uid(l_http_header); END; ELSE l_ssouser := l_http_header; END IF; IF ( (l_ssouser IS NULL) or
( INSTR(l_ssouser, GLOBAL_SEPARATOR) != 0) ) THEN debug_print('malformed user id: '
|| l_ssouser || ' returned by wwsso_auth_external.authenticate_user'); RAISE EXT_AUTH_FAILURE_EXCEPTION; ELSE p_user := NLS_UPPER(l_ssouser); return 0; END IF; EXCEPTION
WHEN OTHERS THEN
debug_print('unknown exception in authenticate_user(p_user)' || sqlerrm); RAISE EXT_AUTH_FAILURE_EXCEPTION; END authenticate_user; FUNCTION authenticate_user ( p_user IN VARCHAR2, p_password IN VARCHAR2 ) RETURN PLS_integer IS BEGIN
raise EXT_AUTH_FAILURE_EXCEPTION; END authenticate_user;
PROCEDURE get_configuration (
p_config OUT ext_config ) AS BEGIN null; -- p_config := NULL; END get_configuration; PROCEDURE change_passwd ( p_user IN VARCHAR2, p_oldpwd IN VARCHAR2, p_newpwd IN VARCHAR2 ) AS BEGIN raise EXT_NOT_SUPPORTED_EXCEPTION; EXCEPTION
WHEN OTHERS THEN
RAISE EXT_CHANGE_PASSWORD_EXCEPTION; END change_passwd; FUNCTION enforce_account_policies RETURN BOOLEAN IS BEGIN return FALSE; END enforce_account_policies; PROCEDURE reset_passwd ( p_user IN VARCHAR2 , p_passwd IN VARCHAR2 ) IS BEGIN
raise EXT_NOT_SUPPORTED_EXCEPTION; END reset_passwd; FUNCTION get_authentication_name RETURN VARCHAR2 AS BEGIN
RETURN 'Netegrity SiteMinder'; END get_authentication_name;
PROCEDURE set_external_cookies (
p_username IN VARCHAR2 , p_password IN VARCHAR2
, p_cookie_list OUT wwsso_ls_private.cookie_list ) AS BEGIN null; END set_external_cookies; END; / show errors;
SiteMinder ソリューションのインストールおよび導入
ソリューションのインストールおよび導入
ソリューションのインストールおよび導入
ソリューションのインストールおよび導入
Oracle Single Sign-On サーバーを SiteMinder とともにインストールおよび設定す る場合、次の手順を実行します。1. Oracle Single Sign-On サーバーをインストールします。
2. ssonete.sql を実行します。このスクリプトにより、Oracle Single Sign-On サーバーは外部モードで動作し、ssoxnete.pkb 内に存在するデフォルト実 装をロードするように設定されます。
3. Oracle Single Sign-On サーバーの前に SiteMinder Agent をインストールしま す。このタスクには、SiteMinder Apache モジュール mod_sm を、Oracle Single Sign-On サーバーと同じインスタンスにインストールすることも含まれ ます。詳細は、『SiteMinder Agent Operations Guide』を参照してください。
4. SiteMinder Policy サーバーの設定により、Oracle Single Sign-On サーバー URL へのアクセスを保護し、ユーザー集団を Oracle Single Sign-On サーバー に関連付けます。このタスクを実行するには、Oracle Single Sign-On サーバー 用のポリシー・ドメインおよび領域を SiteMinder Policy サーバー上に作成し ます。Oracle Single Sign-On サーバーには、次の形式の URL でアクセスしま す。
http://hostname:port/pls/Single_Sign-On_server_DAD
5. PKI 認証を使用している場合、関数 map_dn_to_uid(p_user_dn IN
VARCHAR2) をカスタマイズします。現在は、ssoxnete.pkb で示されている ように、この関数は NULL のデフォルト実装を保持します。
6. modplsql DAD ファイル(通常は wbdbsvr.app)を編集し、次の SiteMinder ヘッダーを含めます。
[DAD_Single_Sign-On_server_schema]
connect_string = Single_Sign-On_server_schema_DB_connect_string ..
cgi_env_list = HTTP_SM_USER,HTTP_SM_USERDN
7. Single Sign-Out ログアウト・プロシージャを URI として SiteMinder Agent に 登録します。この操作を行うには、WebAgent.conf ファイルに次の行を追加し ます。
logoffuri="/pls/Single_Sign-On_DAD/Single_Sign-On_schema.wwsso_app_ admin.ls_logout"
これらの手順の完了後、ユーザーはパートナ・アプリケーションにログインできま す。証明書は SiteMinder が管理するリポジトリ内に格納されるため、Oracle Single Sign-On サーバーの「パスワードの変更」ページをカスタマイズして、SiteMinder のパスワード変更画面を指すようにすることができます。
関連項目 関連項目関連項目
関連項目 : 『 Oracle9iAS Single Sign-On 管理者ガイド』の第 5