認証スキームが異なるアプリケーションで、セッション共有を行なった際の動作を確認します。
まずMain Appという空のアプリケーションを作成します。
認証スキームはカスタムとして、以下のコードで認証します。ユーザー名がSCOTTの場合だけ、アプリケーションにアクセスできます。
function my_authentication (
p_username in varchar2,
p_password in varchar2 )
return boolean
is
begin
if p_username = 'SCOTT' then
return true;
end if;
return false;
end;
同様に空のアプリを作成します。名前はLogin Appとします。
認証スキームはセッション共有も含み、同じ設定を行いますが、コードだけは以下に変更します。こちらはユーザー名としてTIGERだけが許可されます。
function my_authentication (
p_username in varchar2,
p_password in varchar2 )
return boolean
is
begin
if p_username = 'TIGER' then
return true;
end if;
return false;
end;
Login Appのホーム・ページにプロセスを作成します。以下のコードを実行することで、アプリケーションの認証直後に、すぐにMain Appへリダイレクトします。apex_page.get_urlの引数p_sessionのデフォルトは、すでに開始しているセッションになります。
declare
l_url varchar2(4000);
begin
l_url := apex_page.get_url(
p_application => 131
,p_page => 1
);
apex_util.redirect_url(
p_url => l_url
);
end;
Login AppにサインインできるユーザーはTIGERだけです。
Main Appの認証スキームでは本来認証されないユーザーであるTIGERで、Main Appにアクセスしていることが確認できます。
完