この付録では、シングル・サインオン・セッション時にアクセスしたすべてのアプリケーション(Oracle Access Managerと統合されたサード・パーティ・アプリケーションを含む)からユーザーがログアウトできるようにログアウトを構成する方法について説明します。
この付録では、次のトピックについて説明します。
フォーム・ベース認証を使用している場合は、セッションCookieを削除し、ユーザーをログアウト・ページにリダイレクトするログアウトURLを構成することによって、1つ以上のアプリケーションからユーザーを自動的にログアウトさせることができます。メタ・タグを追加し、数秒後に別のページにリダイレクトされるようにするなど、デフォルトのログアウト・ページをカスタマイズできます。
他の保護されたリソースだけでなく、アイデンティティ・システムのアプリケーションとポリシー・マネージャに対してもログアウト・リンクおよびURLを構成する必要があります。詳細は、『Oracle Access Manager Access System Administration Guide』を参照してください。
ログアウトの構成には、次の方法を使用できます。
Oracle Access Managerに付属の1つのログアウト機能を使用: ユーザーのセッションCookieを削除するシングル・サインオン・ログアウトURLおよびログアウト・ページを構成できます。
詳細は、『Oracle Access Manager Access System Administration Guide』を参照してください。
複数のログアウト機能を使用: Oracle Access Managerのデフォルトに基づいて様々な用途に対応した各種のログアウトURLおよびログアウト・ページを構成できます。
ユーザーのログアウト用サード・パーティ・プログラムを使用: 独自のログアウト機能を定義できます。
|
注意: マルチドメインのシングル・サインオンを構成している場合は、ログアウトURLでは1つのドメインのアプリケーションからのみユーザーをログアウトする点に留意してください。ドメイン全体でログアウトが行われるようにするには、絶対セッション・タイムアウト値の設定が必要な場合もあります。 |
WebGateでは、logout.gifおよびlogout.jpgを除いて、「logout.」(ピリオド「.」を含む)が含まれたURL(logout.htmlやlogout.plなど)を受信するとユーザーをログアウトします。WebGateでこの文字列を含むURLを受信すると、ObSSOCookieの値はlogout.に設定されます。
アクセス・システムでは、WebGateで保護されたリソースにアクセスする各ユーザーまたは各アプリケーションに対してObSSOCookieを設定します。ObSSOCookieにより、ユーザーは、同等かそれ以下の認証レベルを持つアクセス・システムで保護されたリソースへのアクセスが可能になります。ObSSOcookieを削除すると、WebGateによりユーザーがログアウトされ、このユーザーがアクセス・システムで保護されているリソースへのアクセスを次回リクエストするときに再認証が必要になります。
Oracleではlogout.htmlページが用意されています。このフォームは次の場所にあります。
PolicyManager_install_dir/access/oblix/lang/en-us/logout.html
logout.htmlフォームにも、アイデンティティ・システム用に設定されたObTemC Cookieを削除するためのJavaScriptが含まれています。ただし、このページにはデフォルトでObSSOCookieを削除するコードが含まれていません。通常、シングル・サインオン・ログアウトURLを呼び出しても、必ずしもObSSOCookieが削除されるわけではないため、手動でlogout.htmlにこのコードを追加する必要があります。
logout.htmlフォームでも、サード・パーティ・アプリケーションによって設定されたCookieは削除されません。ユーザーの再認証が必要となるようにするには、シングル・サインオンのlogout.htmlファイルをカスタマイズしてこのCookieが削除されるようにする必要があります。
このページをカスタマイズすることも、1つ以上の新しいカスタム・ログアウト・ページを作成することもできます。
すべてのユーザーとリソースに適用できる、1つのシングル・サインオン・ログアウトURLおよびページを構成できます。あるいは、異なるアプリケーションごとに別のログアウト機能を作成することもできます。
デフォルトのlogout.htmlを変更するか、新しいログアウト・ページを作成します。
ファイル名には文字列「logout.」(「.」を含む)を含めます(logout.htmlやlogout.plなど)。ただし、logout.gifおよびlogout.jpgは除きます。
このページは、セッションCookieとonLoadイベントを削除してボディ・タグでコードを実行するJavaScriptコードを含んでいる必要があります。次に例を示します。
<body onLoad="delOblixCookie";>
該当するすべてのWebサーバーで同じ相対パスにページを配置します。
たとえば、SSOログアウトURLが/public/logout/logout.htmlである場合、このファイルはログアウト・リンクのあるすべてのページを含むWebサーバーに認識される必要があります。
匿名認証スキームを使用するポリシーのあるログアウト・ページを保護して、誰でもアクセスできるようにします。
これは、SSOログアウトURLおよびカスタムURLの場合に当てはまります。たとえば、SSOログアウトURLが/public/logout/logout.htmlである場合は、このリソースが/public、/public/logoutまたは/public/logout/logout.htmlで保護されるようにします。
確実にOracle Access ManagerによってログアウトURLが認識されるようにします。
複数のログアウト・ページを構成した場合は、WebGate用のログアウトURLパラメータに追加します。詳細は、『Oracle Access Manager Access System Administration Guide』のアクセス・ゲート構成に関する項を参照してください。
SSOログアウトURLを構成します。
詳細は、『Oracle Access Manager Access System Administration Guide』のシングル・ドメインのシングル・サインオン・ログアウトURLの構成に関する項を参照してください。また、logoutURLsパラメータのURLのリストにSSOログアウトURLを追加する必要もあります。
そのURLを必要とするすべてのWebページで該当するログアウトURLのあるリンクを追加します。
カスタマイズされたログアウトURLの構成を可能にするサード・パーティ製品(WebSphereやSAPなど)の場合、それらのサード・パーティ製品は、そのアプリケーション固有のCookieを削除してから、ログアウト・ページをOracle Access Manager logout.htmlにリダイレクトします。WebGateは、logout.htmlのHTTPリクエストを検出すると、ObSSOCookieを削除します。このタイプのログアウトの場合、必要なことは、サード・パーティ・アプリケーションのログアウトURLのカスタマイズだけです。Oracle Access ManagerでログアウトURLを指定する必要はありません。
ただし、Oracle Access Managerと他の製品の間でシングル・サインオンを構成する場合、サード・パーティ製品のログアウトによってOracle Access Managerセッションが自動的に終了しないことがあります。たとえば、Oracle Access ManagerとOracleのSiebel製品の間でシングル・サインオンを構成する場合、Siebelでログアウトしても、Oracle Access Managerでログアウトされないことがあります。
この付録の前の項で説明したように、これらのシナリオに対してシングル・サインオフを構成することができます。シングル・サインオフを機能させるには、少なくとも、ObTEMCおよびObSSOCookieが確実に削除される必要があります。
Oracle Access Managerは、次のように、デフォルトのlogout.htmlファイルを提供します。
PolicyManager_install_dir/access/oblix/lang/en-us/logout.html
このファイルを変更して、シングル・サインオン・セッション時に開始したすべてのアプリケーション・セッションからユーザーがログアウトされるようにするには、Oracle Access Managerと他のアプリケーションが使用するすべてのCookieを削除するJavascript機能を含める必要があります。Oracle Access Managerについては、ログアウト・ページのロード時に次のCookieを削除する必要があります。
ObTEMC
ObSSOCookie
他のアプリケーションについては、それらで設定されたログインCookieを削除します。たとえば、MyAppからもユーザーをログアウトさせる場合、このアプリケーションでMYAPP_COOKIEが設定されていれば、次のCookieも削除します。
MYAPP_COOKIE
シングル・サインオンにかかわる様々なサーバーに関連付けられたCookieを削除することもできます。次に例を示します。
OHS-idm.demo.mycompany.com-7777
OHS-idm.demo.mycompany.com-7778
例A-1は、delCookieというJavascript機能を含むlogout.htmlページを示しています。この機能は、ログアウト・ページがユーザーのブラウザにロードされると呼出されます。これにより、すべてのOracle Access Manager関連Cookieが削除されます。
例A-1は、myCustomAppというアプリケーションによって設定されるmyCustomAppというCookieを削除することにより、アプリケーションのシングル・サインオフも実行します。この例は、myCustomAppに必要なログイン・データがCookieに含まれていることを前提としています。このCookieが存在する場合、アプリケーションはユーザーが依然としてログインしていると判断します。この例では、太字の行は、myCustomApp Cookieを削除するために追加されます。これにより、アプリケーションに関連付けられるすべてのCookieが削除されるため、ログアウト・ページのロード時に完全なログアウトが確実に実現されます。
類似のJavascript機能をデフォルトのlogout.htmlページに追加する場合は、この機能が関連するすべてのCookieを削除することを確認してください。これらは、アプリケーションのセッション状態を制御するCookieです。なお、Cookieを使用してセッション状態を制御しないアプリケーションについては、そのアプリケーションに適した方法でシングル・サインオフを構成する必要があります。
例A-1 myCustomAppというCookieの削除によるシングル・サインオフの例
<html>
<head><link rel="stylesheet" type="text/css" href="style2/coreid.css"></link>
<meta http-equiv="Content-Type" content="text/html; ">
<meta name="Description" content="Oracle Access Manager">
<meta name="Robot" content="none">
<meta name="Copyright" content="Copyright © 1996-2006, Oracle. All Rights Reserved.">
<style type="text/css">
<!--
.unnamed1 { font-family: Arial, Helvetica, sans-serif; font-size: 2pt}
-->
</style>
<title>Oracle Access Manager</title>
<script language="JavaScript">
function delCookie(name,path,domain) {
var today = new Date();
var deleteDate = new Date(today.getTime() - 48 * 60 * 60 * 1000); // minus 2 days
var cookie = name + "="
+ ((path == null) ? "" : "; path=" + path)
+ ((domain == null) ? "" : "; domain=" + domain)
+ "; expires=" + deleteDate;
document.cookie = cookie;
}
function delOblixCookie() {
// set focus to ok button
var isNetscape = (document.layers);
if (isNetscape == false || navigator.appVersion.charAt(0) >= 5) {
for (var i=0; i<document.links.length; i++) {
if (document.links[i].href == "javascript:top.close()") {
document.links[i].focus();
break;
}
}
}
delCookie('ObTEMC', '/');
delCookie('ObSSOCookie', '/');
// Added myCustomAppCookie deletion
delCookie('myCustomApp', '/');
// in case cookieDomain is configured
// delete same cookie from all subdomains
var subdomain;
var domain = new String(document.domain);
var index = domain.indexOf(".");
while (index > 0) {
subdomain = domain.substring(index, domain.length);
if (subdomain.indexOf(".", 1) > 0) {
delCookie('ObTEMC', '/', subdomain);
delCookie('ObSSOCookie', '/', subdomain);
}
domain = subdomain;
index = domain.indexOf(".", 1);
}
}
</script>
</head>
<body bgcolor="#ffffff" marginwidth="0" marginheight="0" topmargin="0" leftmargin="0" onload="delOblixCookie();">
<table width="100%" border="0" cellspacing="1" cellpadding="0">
<tr>
<td rowspan="2" width="10%" bgcolor="#FFFFFF" align="center" valign="middle"> <img src="style2/LOGINoblixlogo.gif"/></td>
</tr>
<tr>
<td bgcolor="#0099CC" align="center" valign="middle"><img src="style2/LOGINaccesssystem.gif"/><br/></td>
<td bgcolor="#99CCCC" align="center" valign="middle"><img src="style2/LOGINversion.gif"/></td>
</tr>
<tr>
<td> </td>
<td align="right" valign="top">
<table border="0" cellspacing="0" cellpadding="0">
<tr align="right" valign="middle">
<td>
<a href="http://www.oracle.com"><font class="basictextfonts3" size="2" color="#003366"><b>Oracle Website</b></font></a>
|
<a href="http://www.oracle.com/support/contact.html">
<font class="basictextfonts3" size="2" color="#003366"><b>Online Support</b></font></a>
</td>
</tr>
</table>
</td>
<td> </td>
</tr>
<tr>
<td> </td>
<td align="center">
<br/>
<h3>Oracle Access Manager Applications</h3>
<h3>You have been logged out.</h3>
<h3>For security reasons, please close the browser window.</h3></font>
<a href="javascript:top.close()" onMouseOver="self.status='Close the browser window.';
return true"><img border="0" alt="Close the browser window." src="style2/NAVok.gif">
</a></center>
</td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<hr/>
<font class="basictextfonts3" size="1">
Copyright © 1996-2006,Oracle. All rights reserved. US Patent Numbers 6,539,379; 6,675,261; 6,782,379; 6,816,871.
Portions copyright © 1991-2003, Compuware Corporation. Includes RSA BSAFE®
cryptographic or security protocol software from RSA Security. Copyright © 2003, RSA Security Inc.
All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates.
Other names may be trademarks of their respective owners.
</font>
</td>
<td> </td>
</tr>
</table>
</body>
</html>