SSOサンプル・アプリケーションは、配信ユースケースで駆動されます。本番サイトのアプリケーションを保護する場合、使用準備済のCASは使用できないため、ここではライブ・サイトでのアプリケーションのシングル・サインオンおよびサインアウトを有効にする際の簡単な例を示します。
この章には次の項が含まれます。
wem-sso-api-cas-sample.war
ファイルを(/sso-sample
フォルダなどに)解凍します。アプリケーションは、WebCenter SitesのMisc/Samples/WEM Samples/ WEM Sample applications/
ディレクトリにあります。
次のプロパティを設定して、WEB-INF
フォルダにあるapplicationContext.xml
ファイルを変更します。
casUrl
: 次のように、CASサーバーのベース・パスを指定します。
http://localhost:8080/cas
casLoginPath
: 次のように、SSOサンプル・アプリケーションでホストされるログイン・フォーム・テンプレートを含めます。
/login?wemLoginTemplate=http%3A%2F%2Flocalhost%3A9080%2Fsso-cas-sample%2Ftemplate.html
変更したSSOサンプル・アプリケーションをアプリケーション・サーバーにデプロイします。
アプリケーションにアクセスします。
SSOサンプル・アプリケーションは、次のページで構成されています。
保護されている領域: WEM SSOフィルタで保護されているページ。このページには、シングル・サインアウト用の2つのリンクがあります(図74-1)。
1つ目のリンク(リダイレクトありのシングル・サインアウト)は、CAS側でシングル・サインアウトを実行し、ユーザーをホーム・ページにリダイレクトするHTMLリンクです。2つ目のリンク(リダイレクトなしのシングル・サインアウト)もHTMLリンクですが、CAS側でシングル・サインアウトを実行しても、現在のページから遷移したり、再ロードが発生したりすることはありません。
公開領域: 保護フィルタから除外されるページ。
ログイン・フォームを含む公開領域: このページは保護フィルタから除外されますが、ページ内にログイン・フォームがあります。ログイン・フォームではサインイン操作を実行できますが、現在のページから遷移したり、再ロードが発生したりすることはありません。
SSOサンプル・アプリケーションには、本番サイトでシングル・サインオンおよびサインアウト機能を使用して、アプリケーションを保護するための基本コードが用意されています。次のコンポーネントを使用して、SSOサンプル・アプリケーションにアクセスします。
index.jsp
: 開始ページ。このページには、「保護されている領域」、「公開領域」および「ログイン・フォームを含む公開領域」の各ページ(第74.1項「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サイトでシングル・サインオンを実装する場合、サインイン・フォームを実装することになります。サインイン・フォームは、次の2つのいずれかの方法でサイト訪問者に表示できます。
保護付きページに訪問者がアクセスしようとすると、サインイン・フォームが表示されます。これは、デフォルトのサインイン実装です。このサインイン・フォームには、CASに付属のデフォルト・サインイン・フォームまたはアプリケーションが提供するカスタム・フォームを指定できます。
サインイン・フォームを公開ページに埋め込むと、ユーザーが現在のページから遷移することなくサインイン機能が実行されます。この動作を実装するには、保護付きページを指すiframeを埋め込みます。そのページは保護されているので、訪問者にはサインイン・フォームが表示されます。
シングル・サインアウトをWebページで実装する場合、次のいずれかの方法で実行できます。
次のメソッドを起動して、シングル・サインアウトURLを取得します。
com.fatwire.wem.sso.SSO.getSSOSession()オブジェクトのgetSignoutUrl()またはgetSignoutUrl(String callbackUrl)メソッド。
シングル・サインアウト後に、必要に応じて、訪問者が指定したURLにCASからリダイレクトできます。これは、callbackUrlパラメータで設定します。
現在のページから遷移せずにシングル・サインアウトを実行するには、iframeの埋込み手法を使用します。この手法では、ソースにシングル・サインアウトURLを含むiframeを埋め込む必要があります。iframeがロードされると、サインアウトURLがコールされます(この方法は主に、ブラウザでのクロスドメイン制限を回避する場合に使用されます)。