ヘッダーをスキップ
Oracle Access Managerアクセス管理ガイド
10g(10.1.4.3)
B55477-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

B ログアウトの構成

この付録では、ログアウトを構成してシングル・サインオンのセッション中にアクセスしたすべてのアプリケーション(Oracle Access Managerに統合されているサード・パーティ・アプリケーションを含む)からログアウトできるようにする方法について説明します。

この付録の内容は次のとおりです。

B.1 Oracle Access Managerのログアウトの概要

フォーム・ベース認証を使用している場合は、セッションCookieを削除し、ユーザーをログアウト・ページにリダイレクトするログアウトURLを構成することによって、1つ以上のアプリケーションからユーザーを自動的にログアウトさせることができます。メタ・タグを追加し、数秒後に別のページにリダイレクトされるようにするなど、デフォルトのログアウト・ページをカスタマイズできます。


注意:

他の保護されたリソースだけでなく、アイデンティティ・システムのアプリケーションとポリシー・マネージャに対してもログアウト・リンクおよびURLを構成する必要があります。詳細は、「アイデンティティ・システム・リソースに対するログアウトの構成」を参照してください。

ログアウトの構成には、次の方法を使用できます。


注意:

マルチドメインのシングル・サインオンを構成している場合は、ログアウトURLでは1つのドメインのアプリケーションからのみユーザーをログアウトする点に留意してください。ドメイン全体でログアウトが行われるようにするには、絶対セッション・タイムアウト値の設定が必要な場合もあります。詳細は、「シングル・ドメインのシングル・サインオン・セッションからのログアウト」を参照してください。

B.2 ログアウトの機能

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つ以上のカスタム・ログアウト・ページを作成することもできます。

B.3 ログアウトURLとログアウト・ページの構成およびカスタマイズ

すべてのユーザーとリソースに適用できる、1つのシングル・サインオン・ログアウトURLおよびページを構成できます。あるいは、異なるアプリケーションごとに別のログアウト機能を作成することもできます。

タスクの概要: ログアウトの構成とカスタマイズ

  1. デフォルトのlogout.htmlを変更するか、新しいログアウト・ページを作成します。

    ファイル名には文字列「logout.」(「.」を含む)を含めます(logout.htmlやlogout.plなど)。ただし、logout.gifおよびlogout.jpgは除きます。

    このページは、セッションCookieとonLoadイベントを削除してボディ・タグでコードを実行するJavaScriptコードを含んでいる必要があります。次に例を示します。

    <body onLoad="delOblixCookie";>
    
  2. 該当するすべてのWebサーバーで同じ相対パスにページを配置します。

    たとえば、SSOログアウトURLが/public/logout/logout.htmlである場合、このファイルはログアウト・リンクのあるすべてのページを含むWebサーバーに認識される必要があります。

  3. 匿名認証スキームを使用するポリシーのあるログアウト・ページを保護して、誰でもアクセスできるようにします。

    これは、SSOログアウトURLおよびカスタムURLの場合に当てはまります。たとえば、SSOログアウトURLが/public/logout/logout.htmlである場合は、このリソースが/public、/public/logoutまたは/public/logout/logout.htmlで保護されるようにします。

  4. 確実にOracle Access ManagerによってログアウトURLが認識されるようにします。

    複数のログアウト・ページを構成した場合は、WebGate用のログアウトURLパラメータに追加します。詳細は、「アクセス・ゲート構成パラメータ」を参照してください。

  5. SSOログアウトURLを構成します。

    詳細は、「シングル・サインオン・ログアウトURLの構成」を参照してください。また、logoutURLsパラメータのURLのリストにSSOログアウトURLを追加する必要もあります。

  6. そのURLを必要とするすべてのWebページで該当するログアウトURLのあるリンクを追加します。

B.4 Oracle Access Managerと別の製品との統合のためのシングル・サインオフ構成

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

このファイルを変更して、ユーザーがシングル・サインオン・セッションで起動したすべてのアプリケーション・セッションからログアウトする必要がある場合は、JavaScript関数を追加してOracle Access Managerおよびその他のアプリケーションが使用しているすべてのCookieを削除する必要があります。Oracle Access Managerの場合、ログアウト・ページのロード時に、次のCookieを削除する必要があります。

その他のアプリケーションの場合、各アプリケーションによって設定されたCookieを削除します。たとえば、ユーザーをMyAppからログアウトするとき、このアプリケーションがMYAPP_COOKIEを設定する場合は、次のCookieも削除します。

シングル・サインオン・セッションに含まれる様々なサーバーに関連するCookieも削除する必要があります。次に例を示します。

例B-1に示すlogout.htmlページには、JavaScript関数delCookieが含まれています。この関数は、ユーザーのブラウザにログアウト・ページをロードするときにコールされます。この関数によって、Oracle Access Manager関連のすべてのCookieが削除されます。

例B-1では、myCustomAppというアプリケーションが設定するmyCustomAppというCookieを削除して、アプリケーションのシングル・サインオフを実行します。この例では、myCustomAppへのログインに必要なデータがCookieに含まれていることを想定しています。このアプリケーションは、Cookieが存在するかぎり、ユーザーがログインしたままであるとみなします。この例では、太字で示された行を追加して、myCustomAppというCookieを削除します。これにより、アプリケーションに関連するすべてのCookieが削除されるため、ユーザーのブラウザにログアウト・ページをロードするときに適切なログアウトが確実に実行されます。

デフォルトのlogout.htmlページに類似のJavaScript関数を追加する場合は、その関数によって、関連するCookieがすべて削除されることを確認してください。これらはアプリケーションのセッション状態を制御するCookieです。Cookieを使用してセッション状態を制御しないアプリケーションの場合は、そのアプリケーションに適切な方法を使用してシングル・サインオフを構成する必要があることに注意してください。

例B-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 &copy; 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>&nbsp;</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>&nbsp;</td>
</tr>
<tr>
<td>&#160;</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>&#160;</td>
</tr>
<tr>
<td>&#160;</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>&#160;</td>
</tr>
</table>
</body>
</html>