使用準備済のCASでアプリケーションをセキュリティ保護できないライブ・サイトで、アプリケーションのシングル・サインオンおよびサインアウトを有効にする方法の理解に役立つ簡単な例を次に示します。
トピック:
必要なことは、WARファイルの解凍、コンテキスト・ファイルの変更およびアプリケーションのデプロイのみです。
SSOサンプル・アプリケーションは、次のページで構成されています。
保護されている領域: WEM SSOフィルタで保護されているページ。このページには、2つのシングル・サインアウト・リンクがあります。
1つ目のリンク(リダイレクトありのシングル・サインアウト)は、CAS側でシングル・サインアウトを実行し、ユーザーをホーム・ページにリダイレクトするHTMLリンクです。2つ目のリンク(リダイレクトなしのシングル・サインアウト)もHTMLリンクですが、CAS側でシングル・サインアウトを実行しても、現在のページから遷移したり、再ロードが発生したりすることはありません。
公開領域: 保護フィルタから除外されるページ。
ログイン・フォームを含む公開領域: このページは保護フィルタから除外されますが、ページ内にログイン・フォームがあります。ログイン・フォームではサインイン操作を実行できますが、現在のページから遷移したり、再ロードが発生したりすることはありません。
注意:
ログインに成功すると、ユーザーは、CASによって、リクエストされたサービスにリダイレクトされます。セキュリティ目的で、ユーザーをリダイレクトする前に、リクエストされたサービスを検証できます。それには、Adminインタフェースの「システム・ツール」ノードのプロパティ管理ツールを使用して、信頼できるURLおよび許可されたURLのリストを指定します。信頼できるURL (カンマ区切り)をvalid.urls
プロパティに追加します。このプロパティでは、WebCenter Sitesにアクセスするために、信頼できるURLのユーザーが使用を許可されるように指定します。このプロパティのデフォルト値は、<wcsites.app.protocol>://<wcsites.app.host>:<wcsites.app.port>/<wcsites.app.contextroot>/*
です。Oracle Fusion Middleware Oracle WebCenter Sitesプロパティ・ファイル・リファレンスを参照してください。
URLは、次の書式のいずれかにできます。
完全なURL。例:
http://hostname:port/cs/wem/fatwire/wem/Welcome
一致するURL。例:
http://hostname:port/SitesWebapp/*
ここで、末尾の/*
は、指定した接頭辞と同じ接頭辞が含まれるURLを示します
IPを使用した信頼できるURLも同様のURLを指定する必要があります。
SSOサンプル・アプリケーションのシングル・サインオンおよびシングル・サインアウトを構成する基本コードを使用して、本番サイト上のアプリケーションを保護できます。
図62-3を参照してください。次のコンポーネントを使用して、SSOサンプル・アプリケーションにアクセスします。
index.jsp
: 開始ページ。このページには、保護されている領域、公開領域およびログイン・フォームを含む公開領域の各ページ(「SSOサンプル・アプリケーションのデプロイ」を参照)へのリンクがあります。
template.html
: CAS用のカスタム・サインイン・フォームを指定する際に使用します。このファイルへのパスは、applicationContext.xml
ファイルのcasLoginPath
にあるwemLoginTemplate
パラメータで参照します。
/sso-sample/WEB-INFの構成ファイル
WEB-INF
には、次の構成ファイルが含まれます。
applicationContext.xml
: Spring Webアプリケーション構成ファイル。SSOサブシステムを構成します。
web.xml
: Webアプリケーションのデプロイメント・ディスクリプタ。
/sso-sample/protected/jspの保護付きファイル
この領域のファイルは、SSOフィルタで保護されています。デフォルトでは、このフォルダに次のファイルが含まれています。
protected.jsp
: SSOフィルタで保護されているページ。このページには、シングル・サインアウトを実行するための2つのリンクがあります。1つ目のリンクをクリックすると、CASサインアウト・ページに遷移し、サインアウトが完了するとアプリケーションのホーム・ページにリダイレクトされます。2つ目のリンクをクリックすると、このページにiframeが埋め込まれ、signoutCallback.jsp
ページにリダイレクトされるCASサインアウト・ページがコールされます。また、protected.jsp
ページには、現在のログイン済ユーザーを表すAssertion
オブジェクトのすべての属性も表示されます。
protected/jsp/protectedSection.jsp
: 埋込みiframeの「サインイン」リンクがクリックされた場合に、public.jsp
ページから参照されるページです。このページは保護されているため、埋込みiframeにログイン画面が表示されます。
/sso-sample/public/jspの公開ファイル
この領域のファイルは、SSOフィルタで保護されていません。デフォルトでは、/public/jsp/
フォルダに次のサンプル・ファイルが含まれています。
public.jsp
: このページは、CASフィルタで保護されていません。
publicWithAuth.jsp
: このページには、「サインイン」リンクが表示されます。このリンクをクリックすると、publicWithAuth.jsp
に、protectedSection.jsp
ページを指すiframeが埋め込まれます。このページは保護されているため、埋込みiframeにログイン画面が表示されます。
signoutCallback.jsp
: このページは、iframeを使用する場合にサイトアウトが完了すると、protected.jsp
ページからコールされます。
保護されているページを訪問者がアクセスしようとしたときにサインイン・フォームを表示するか、そのフォームを公開ページに埋め込んで、Webサイトのシングル・サインオンを実装できます。
保護付きページに訪問者がアクセスしようとすると、サインイン・フォームが表示されます。これは、デフォルトのサインイン実装です。このサインイン・フォームには、CASに付属のデフォルト・サインイン・フォームまたはアプリケーションが提供するカスタム・フォームを指定できます。
サインイン・フォームを公開ページに埋め込むと、ユーザーが現在のページから遷移することなくサインイン機能が実行されます。この動作を実装するには、保護付きページを指すiframeを埋め込みます。そのページは保護されているので、訪問者にはサインイン・フォームが表示されます。
シングル・サインアウトURLを取得するか、iframeの埋込み手法を使用して、シングル・サインアウトを実装します。
次のメソッドを起動して、single sign-out
URLを取得します。
com.fatwire.wem.sso.SSO.getSSOSession()
オブジェクトのgetSignoutUrl()
またはgetSignoutUrl(String callbackUrl)
メソッド。
シングル・サインアウト後に、必要に応じて、訪問者が指定したURLにCASからリダイレクトできます(これは、callbackUrl
パラメータで設定します)。
現在のページから遷移せずにシングル・サインアウトを実行するには、iframeの埋込み手法を使用します。この手法では、ソースにシングル・サインアウトURLを含むiframeを埋め込む必要があります。iframeがロードされると、サインアウトURLがコールされます(この方法は主に、ブラウザでのクロスドメイン制限を回避する場合に使用されます)。