この章には次の項が含まれます。
WEMフレームワーク認証は、CASフレームワーク上に構築され、Oracle Customizable Single Sign-On (CSSO)ファシリティというカスタマイズ・レイヤーが備わっています。CSSOファシリティには、カスタムSSOソリューションを作成するために使用可能な認証の拡張が含まれているため、CAS構成を直接変更する必要はありません。かわりに、Spring構成でこれらの拡張をCAS構成に直接注入して、必要なログイン動作を実装します。
CSSOファシリティには、カスタムSSOソリューションを実装するために拡張できる事前にパッケージされたクラスが用意されています。また、Springにインスタンス化するクラスを特定する、デフォルトSpring構成ファイルも提供しています。WEM SSOをカスタマイズすることで、別のログイン画面の使用、ユーザー名/パスワードのペア以外の資格証明の要求、または外部認証局を使用したWebCenter Sitesユーザーの認証が可能になります。カスタムSSO実装の構成は次のとおりです。
3つのJavaクラス(デフォルト・クラスを拡張します)
フレームワークに新しいクラスを公開する構成ファイル
デフォルトCSSOクラスは、標準のWEM SSO実装に従って、すべての資格証明の検出と認証を行います。これらのクラスは、customdefaultWEMSSObean.xml
Spring構成ファイルでインスタンス化されます。デフォルトCSSOクラスを拡張することにより、カスタムSSOソリューションの動作を指定するメソッドを定義できます。たとえば、ブラウザ・アクセス、RESTおよび/またはシック・クライアント認証に異なる認証を作成できます。デフォルトCSSOクラスを拡張する場合は、カスタム・クラスを指定し、それらのクラスをWEMフレームワークに公開するカスタムSpring構成ファイルを作成する必要があります。
CSSOファシリティでは、デフォルトWEMログイン動作をカスタム・ログイン動作で置き換える完全なSSOサンプル(Javaソース・ファイルを含む)が用意されています。サンプルSSO実装では、次の2種類の異なる認証(ユーザー名/パスワードのペア(追加のドメイン・フィールドを含む)および外部ユーザー識別子)が示されます。外部識別子は、外部認証局で認証されたユーザーをWebCenter Sitesシステム・ユーザーにマップします。
この章の残りの部分では、CSSOファシリティのデフォルト・コンポーネントおよびカスタムSSOソリューションの実装手順について説明します。カスタムSSOソリューションの例を確認する場合は、この章の最後に記載されているCSSOサンプルおよびこのサンプルの実行手順を参照してください。
この項では、CSSOファシリティで提供されるデフォルトのコンポーネントについて説明します。これらのコンポーネントは、独自のSSO実装をカスタマイズするための開始点となります。
com.fatwire.wem.sso.cas.custom.basis
パッケージ(表76-1を参照)には、CSSOファシリティに含まれているデフォルト・クラスがあります。デフォルトSpring構成ファイル(customdefaultWEMSSObeans.xml
)は、デフォルトWEMログイン動作を実装するためにこれらのクラスをインスタンス化します。
注意: CSSOファシリティでは、デフォルトWEMログイン動作をカスタム・ログイン動作で置き換える完全なSSOサンプルが用意されています。詳細は、第76.4項「CSSOサンプル実装の実行」を参照してください。 |
表76-1 com.fatwire.wem.sso.cas.custom.basis
クラス | 説明 |
---|---|
|
このクラスの拡張の詳細は、第76.3.1項「デフォルトCSSOクラスの拡張」を参照してください。 |
|
デフォルトSpring構成ファイルで設定されているプロパティへのアクセスを提供します。追加のプロパティがカスタムSSO実装に必要な場合にはこのクラスを拡張できます。 このクラスの拡張の詳細は、第76.3.1項「デフォルトCSSOクラスの拡張」を参照してください。 |
|
カスタム認証に対して資格証明値の標準セットを提供します。追加の属性がカスタムSSO実装に必要な場合にはこのクラスを拡張できます。 このクラスの拡張の詳細は、第76.3.1項「デフォルトCSSOクラスの拡張」を参照してください。 |
com.fatwire.wem.sso.cas.custom.interfaces
パッケージ(表76-2を参照)では、カスタム認証インタフェースを定義します。
表76-2 com.fatwire.wem.sso.cas.custom.interfaces
クラス | 説明 |
---|---|
|
カスタムSSOソリューションで実装する必要があるインタフェースを定義します。 詳細は、第76.3.1項「デフォルトCSSOクラスの拡張」を参照してください。 |
|
ユーザー名/パスワード・ベースではないカスタムREST認証トークンをエンコードおよびデコードするために実装する必要のあるインタフェースを定義します。 |
カスタムSSO動作を構成およびデプロイするには、最初にCSSOファシリティに含まれているデフォルトのクラスを拡張する必要があります。その後、クラスをインスタンス化するカスタムSpring構成ファイルを作成し、それらのクラスをCSSOフレームワークに公開して、Springに新しいJavaクラスを指定します。基本的な手順は次のとおりです。
デフォルトCSSOクラスを次のように拡張します。CustomAuthenticator.java
、CustomConfiguration.java
およびCustomCredentials.java
(com.fatwire.wem.sso.cas.custom.basis
パッケージ内に含まれます)。
デフォルトCSSOクラスを拡張する新しいJavaクラスを作成します。
作成したJavaクラスをjar
ファイルにパッケージ化し、そのjar
ファイルをCASサーブレット(cas/WEB-INF/lib
)のクラスパスに配置します。
詳細は、第76.3.1項「デフォルトCSSOクラスの拡張」を参照してください。
Springにインスタンス化する新しいJavaクラスを次のように指定します。
SSO実装用のカスタム・クラス名およびプロパティのすべてを含むSpring構成ファイルを作成します。
カスタムSpring構成ファイルをspring-configuration
フォルダ(cas/WEB-INF/
)に配置します。
デフォルトSpring構成ファイル(customDefaultWEMSSObeans.xml
)から.xml
拡張子を削除します。
詳細は、第76.3.2項「Springへのインスタンス化するJavaクラスの指定」を参照してください。
外部認証局がユーザーの認証に使用される場合は、外部ユーザー識別子を適切なWebCenter Sitesシステムのユーザー名、一意の識別子およびACLにマップします。手順については、第76.3.3項「外部ユーザー識別子のWebCenter Sites資格証明へのマッピング」を参照してください。
CAS Webアプリケーションを再起動します。詳細は、第76.3.4項「CAS Webアプリケーションの再起動」を参照してください。
この項の残りの部分では、前述の手順の詳細を説明します。
SSO実装は、デフォルトCSSOクラスCustomAuthenticator.java
、CustomConfiguration.java
およびCustomCredentials.java
で指定される一連のコールされたメソッドです。デフォルトWEMログイン動作をカスタム動作で置き換えるには、デフォルトCSSOクラスを拡張する機能に対する新しいJavaクラスを作成する必要があります。CSSOクラスを拡張することにより、デフォルトCSSOクラスで指定されたメソッドは、変更する機能に対するカスタム・クラスで指定されたメソッドで置き換えられます。
カスタムSSOソリューションを実装するために拡張する必要のある(com.fatwire.wem.sso.cas.custom.basis
パッケージにある) 3つのクラスは次のとおりです。
CustomConfiguration.java: デフォルトSpring構成ファイルで指定される外部に定義されたプロパティへのアクセスを提供します。デフォルトでは、このクラスはSpring構成ファイルからSSO構成にプロパティを注入するためのプレースホルダとしてのみ存在します。カスタムSSO実装に固有のURLや他の構成情報など、追加のプロパティを含める場合は、このクラスを拡張します。
CustomCredentials.java: カスタム認証の資格証明値の標準セットを提供します。このクラスは、Webフロー・ハンドラまたはカスタムRESTオーセンティケータによって作成されて移入されます。デフォルトでは、このクラスは標準UsernamePasswordCredentials
オブジェクト(CASによって提供される)を定義します。このオブジェクトは、username
、userId
およびcurrentACL
の各プロパティで、ユーザー認証を完了するために必要なすべての情報を収集します。これらのプロパティの値によって、オーセンティケータ(CustomAuthenticator.java
)が実際のユーザー認証を実行する際に使用する属性マップが移入されます。
カスタムSSOソリューションに追加の資格情報が必要な場合はこのクラスを拡張します。このクラスがユーザー情報をオーセンティケータに渡してユーザー認証を完了する方法の例については、(Misc/Samples/WEM/Samples/CustomizableSSO/lib
フォルダにある)サンプルCSSOクラスSampleCredentials.java
のコードを参照してください。
CustomAuthenticator.java: CustomAuthentication
インタフェースを実装します。このクラスは、ログイン・シーケンスの動作を制御し、認証リクエストを処理します。デフォルトでは、標準のWEMログイン・フォームを表示して、認証を完了するためにWEMフレームワークに戻ります。
注意: デフォルトの |
すべての認証の決定およびCAS Webフロー・アクションは、アクションが実行されるようにこのクラスに送られます。CAS Webフローでは、多数の手順を実行し、それらの手順の1つによりperformLoginAction
メソッドが起動します。このメソッドは、ログイン・フォームを表示するか、または外部認証局と通信します。
このクラスは、WebCenter Sitesユーザーに外部ユーザーをマップする静的メソッドcallCsResolverPage
も定義します。カスタムSSO実装で外部認証局を使用してユーザーを認証する場合は、callCsResolverPage
メソッドでCSSOオーセンティケータに対する一意の名前を定義する必要があります。詳細は、第76.3.3項「外部ユーザー識別子のWebCenter Sites資格証明へのマッピング」を参照してください。
このクラスが実装するメソッドの完全なインタフェースの記述は次のとおりです。
static final int SUCCESS = 0; static final int GOTOWEM = 1; static final int FAILURE = 2; static final int REDIRECT = 3; static final int ERROR = 4; static final int REPEAT = 5; /** * Called from UserAuthentication handler to check for alternate * credentials and validate appropriately. * @param userCredentials * @return */ public int authenticate(com.fatwire.wem.sso.cas.custom.basis.CustomCredentials userCredentials); /** * Called from CSAuthenticationHandler to check for REST user * credentials and validate appropriately. */ public int authenticateRest(UsernamePasswordCredentials restCredentials); /** * Called from CSAuthenticationHandler to check is username/password * combination is detected. */ public boolean checkRestCredentials(String token); /** * Called from CSAttributeDAO to check for encoded credentials and * if so then return the correct username for DAO processing. * @param username * @return */ public String resolveRestUsername(String username); /** * Called from LoginViewAction to handle login view processing. This * method allows the calling of internal CAS methods. * @param context * @param userAuthentication * @param centralAuthenticationService * @return */ public int performLoginAction(RequestContext context, CustomAuthentication userAuthentication, CentralAuthenticationService centralAuthenticationService); /** * Called from casLogoutView to perform sign in cleanup * @param request * @param response */ public void performLogoutAction(HttpServletRequest request, HttpServletResponse response);
SSO実装のすべてのカスタマイズ設定は、spring-configuration
フォルダ(cas/WEB-INF
)にある、単一のSpring構成ファイルで指定されます。
この項の残りの部分は、次のトピックで構成されます。
デフォルトSSO実装のクラスとプロパティは、Spring構成ファイルcustomDefaultWEMSSObeans.xml
で定義されています。このファイルは、spring-configuration
フォルダ(cas/WEB-INF
)にあります。CSSOをカスタマイズする場合は、新しいSpring構成ファイルを作成するか、またはデフォルトSpring構成ファイルで参照されるクラスとプロパティをカスタマイズできます。この項の残りの部分では、2番目のオプションを中心に説明します。
デフォルトSpring構成ファイルには、デフォルトSSO実装に必要なクラスおよびプロパティを参照するいくつかのBean識別子が含まれます。customUserConfiguration
BeanはCustomConfiguration.java
クラスを参照し、customUserAuthenticator
BeanはCustomAuthenticator.java
クラスを参照します。これらのクラスは、Spring構成ファイルでインスタンス化され、SSO実装の認証プロセスで永続オブジェクトを作成する際に使用されます。カスタムSSOソリューションを作成するには、これらのBean内でカスタムJavaクラスを参照する必要があります。
注意:
|
customUserConfiguration
Beanには、デフォルトSSO実装にシステム情報を提供する構成プロパティも指定します。これらのプロパティには、SSO実装をデプロイする環境の値を設定します。Spring構成ファイルをカスタマイズする場合は、カスタムSSO実装の環境に一致するようにプロパティの値を変更するか、またはカスタムSSO実装に必要な追加のプロパティを含める必要があります。
CustomConfiguration.java
クラスを拡張することにより、Spring構成ファイルのcustomUserConfiguration
Beanに追加のプロパティを定義できます。たとえば、SSO実装に対してカスタム・ログイン・フォームを提供するJSPファイルを作成した場合、CustomConfiguration.java
クラスを拡張することにより、そのJSPファイルの場所を指定するプロパティを作成します。
この項の残りの部分では、デフォルトSpring構成ファイル(customDefaultWEMSSObean.xml
)で参照されるクラスおよびプロパティを分析します。
デフォルトSpring構成ファイル
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:flow="http://www.springframework.org/schema/webflow-config"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/webflow-config http://www.springframework.org/schema/webflow-config/spring-webflow-config-1.0.xsd">
<!-- Custom SSO Bean definitions. This file defines either the default CAS/SSO configuration or a special
user implementation. No other CAS configuration files are modified for a custom implementation -->
<!-- This bean is never modified. It defines the web-flow controller which always passes control into
the custom authenticator -->
<bean id="customUserLoginAction" class="com.fatwire.wem.sso.cas.web.CustomLoginViewAction"
p:centralAuthenticationService-ref="centralAuthenticationService"
p:customAuthentication-ref="customUserAuthenticator"
/>
<!-- This bean is usually not modified. Override it when there needs to be a custom encoding for
information passed between the web-flow and any external component -->
<bean id="customRestCoder" class="com.fatwire.wem.sso.cas.custom.basis.CustomRestTokenCoding"
/>
<!-- Modify this bean with a custom configuration implementation class when additional parameters are
needed for a custom implementation -->
<bean id="customUserConfiguration" class=
"com.fatwire.wem.sso.cas.custom.basis.CustomConfiguration"
p:casLoginUrl="http://localhost:7080/cas/login"
p:resolverUrl="http://localhost:8080/cs/custom/customCsResolver.jsp"
p:resolverUsername="fwadmin"
p:resolverPassword="xceladmin"
p:traceFlag="false"
/>
<!-- Modify this bean with a customAuthentication class for a custom implementation. -->
<bean id="customUserAuthenticator" class=
"com.fatwire.wem.sso.cas.custom.basis.CustomAuthenticator"
p:customConfiguration-ref="customUserConfiguration"
p:customRestCoder-ref="customRestCoder"
/>
</beans>
デフォルトSpring構成ファイルの分析
行18は、デフォルトのCSSO customConfiguration.java
クラスを参照する、customUserConfiguration
Beanです。このクラスの詳細は、第76.3.1項「デフォルトCSSOクラスの拡張」を参照してください。このBeanには、デフォルトSSO実装に必要なプロパティも含まれます。
行19は、casLoginURL
プロパティを参照します。このプロパティは、CASログイン機能へのベースURLを指定します。指定された値がCASサーバー・インストールとは異なる場合、ドメインおよびポート番号設定を変更する必要があります。
行20から22は、外部認証プロパティresolverURL
、resolverUsername
およびresolverPassword
を参照します。WebCenter Sitesがユーザーの認証に使用される場合、これらのプロパティを参照する必要はありません。外部認証局がユーザー認証に使用される場合、これらのプロパティを参照する必要があります。これらのプロパティが参照されると、外部識別子からWebCenter Sitesシステム・ユーザーへのマッピングを実装できます。
行20は、resolverURL
プロパティを参照します。外部認証局がユーザーの認証に使用される場合、このプロパティは、WebCenter Sitesにある、customCsResolver
ページへの完全なURLを指定する必要があります。customCsResolver
ページは、ユーザーの外部識別子を取得し、WebCenter Sitesデータベースに問い合せてユーザーのWebCenter Sites資格証明を取得します。このプロパティで指定されるドメインとポート番号は、指定された値がWebCenter Sitesインストールの値と異なる場合は変更する必要があります。
行21は、resolverUsername
プロパティを参照します。外部認証局がユーザーの認証に使用される場合、このプロパティは、SystemUserAttr
表を読み取る権限を持つWebCenter Sitesユーザーのユーザー名を指定する必要があります。このユーザー名は、customCsResolver
ページでWebCenter Sitesデータベースを問い合せて登録済WebCenter Sitesユーザーに外部ユーザー識別子を解決する場合に使用されます。
行22は、resolverPassword
プロパティを参照します。外部認証局がユーザーの認証に使用される場合、このプロパティはresolverUsername
プロパティ(行21)で指定されたユーザーのパスワードを指定する必要があります。
マッピングの実装の詳細は、第76.3.3項「外部ユーザー識別子のWebCenter Sites資格証明へのマッピング」を参照してください。
行23は、traceFlag
プロパティを参照します。このプロパティは、カスタムSSOレイヤーに関する情報を提供するトレース・ログを有効にするか無効にするかを指定します。このプロパティは、True
またはFalse
のいずれかに設定できます。
行26は、デフォルトCSSO CustomAuthenticator.java
クラスを参照する、customUserAuthenticator
Beanです。このクラスの詳細は、第76.3.1項「デフォルトCSSOクラスの拡張」を参照してください。
デフォルトWEMログイン動作のためのクラスとプロパティを指定するデフォルトSpring構成ファイルは、spring-configuration
フォルダ(cas/WEB-INF
)にあります。独自のファイルを同じ場所に配置するには、デフォルトのファイルを非アクティブ化する必要があります(ファイルの.xml
拡張子を削除するか変更します)。これは、Springではspring-configuration
フォルダ(cas/WEB-INF
)に含まれるすべてのSpring構成ファイルがロードされ、これらのファイルが単一の構成にマージされるためです。カスタムおよびデフォルトの両ファイルは同じBean識別子を指定するため、これらのファイルの一方のみをSpring構成で認識できます。Bean識別子が重複すると、初期化が失敗します。
注意:
|
CSSOファシリティでは、WebCenter Sitesユーザーの認証に外部認証局を使用できます。外部認証局では、ユーザーの資格証明を検証するときに、一意の外部識別子をそのユーザーに関連付けます。WEM認証を完了するには、(デフォルトCSSOクラスCustomAuthenticator.java
の静的メソッドとして定義される)メソッドcallCsResolverPage
を使用して、ユーザーの外部識別子を対応するWebCenter Sitesのシステム・ユーザー名、一意の識別子およびACLにマップする必要があります。
外部識別子をWebCenter Sitesシステム・ユーザーにマップするには、Spring構成ファイルで外部認証プロパティを設定していることを確認してください(第76.3.2.1項「Spring構成ファイルの作成」の「デフォルトSpring構成ファイルの分析」を参照)。外部識別子から適切なWebCenter Sitesシステム資格証明へのマッピングを実装するには、次の操作を実行します。
マッピングを実装するには:
(拡張されたCustomAuthenticator.java
クラスで定義された) callCsResolverPage
メソッドでカスタムSSO実装の外部認証局に一意のCSSOオーセンティケータ名を定義します。
たとえば、(サンプルCSSOクラスSampleAutheticator.java
で定義される)次のcallCsResolverPage
メソッドは、一意のオーセンティケータ名として"samplesso"
を定義します。
Map<String,String>csTokens=callCsResolverPage(externalUserId, "
samplesso")
一般管理者(たとえば、fwadmin/xceladmin
)としてWebCenter Sites Adminインタフェースにアクセスします。
「管理」タブで、「管理ツール」ノードを開き、「ユーザー」をダブルクリックします。
外部識別子をWebCenter Sites資格証明にマップするユーザーを次のように選択します。
「ユーザー名の入力」フィールドで、ユーザーの名前を入力します。
「操作の選択」セクションで、「ユーザー属性の修正」オプションを選択します。
「OK」をクリックします。
「ユーザーの修正」フォームが次のように表示されます。
「ユーザー名」列で、外部識別子をWebCenter Sites資格証明にマップするユーザーの名前をクリックします。
次のフォームが表示されます。
フォームで、次のようにフィールドに入力します。
「属性名」フィールドに、一意のCSSOオーセンティケータ名(外部認証局を特定するために使用する名前)を入力します。この名前は、(手順1の) callCsResolverPage
メソッドで定義したCSSOオーセンティケータの一意の名前に一致する必要があります。
「属性値」フィールドに、外部認証局によって提供されたユーザーの外部識別子を入力します。
「修正」をクリックして、WebCenter Sites SystemUserAttr
データベース表に新しい属性と値を格納します。
マッピング・プロセスの分析
callCsResolverPage
メソッドがWebCenter Sitesシステム・ユーザーに外部識別子をマップするためにコールされる場合は、カスタムSSO実装に対して一意のCSSOオーセンティケータ名が定義されます。このメソッドは、外部識別子と一意のCSSOオーセンティケータ名を使用して、外部ユーザーをWebCenter Sitesシステム・ユーザーにマップします。このマップには、CustomCredentials
オブジェクトの関連プロパティに配置される、次のアイテムが含まれます。
username
: ユーザーのWebCenter Sitesユーザー名
currentUser
: ユーザーのWebCenter Sitesの一意の識別子
currentACL
: ユーザーのACL
CustomCredentials
オブジェクトは、username
、currentUser
およびcurrentACL
の値をCustomAuthenticator.java
クラスで定義されたauthenticate
メソッドに渡します。authenticate
メソッドは、これらの値を使用して、WebCenter Sitesユーザーを特定する、レスポンス・マップを作成します。
カスタムSSO実装をデプロイするには、CAS Webアプリケーションを再起動します。CASが再起動したら、spring-configuration
フォルダ(cas/WEB-INF
)にある、カスタムSpring構成ファイルで定義されたクラスを使用して、カスタム・ログイン動作を提供します。
CSSOファシリティには、カスタムSSO実装(Javaソース・ファイルを含む)の実行例が用意されています。サンプルでは、デフォルトのWEMログイン動作をカスタム・ログイン動作で置き換えています。これには、標準のユーザー名フィールドとパスワード・フィールド、ドメイン名を指定するためのユーザー用の追加フィールド、外部ユーザー識別子のフィールドが含まれます。ここでは、2種類の異なる認証、つまりユーザー名/パスワードのペア(追加のドメイン・フィールドを含む)と、外部認証局を通じたユーザー認証を示しています。
注意: CSSOサンプルでは、ログイン・フォーム上のフィールドに適用される検証ルールは実行されません。フィールドに対する完全性はチェックされず、不正な値もレポートされません。認証が失敗すると、フォームはコメントなしに再度表示されます。本番環境でこのフォームを実装する場合、エラーが発生したら、適切な診断メッセージを使用してすべてのルールが実施されるようにする必要があります。 |
CSSOファシリティに含まれるすべてのサンプル・コンポーネントの詳細は、第76.4.3項「サンプルCSSOコンポーネント」を参照してください。
サンプルSSO実装を実行するには:
CASクラスパス(cas/WEB-INF/lib
フォルダ)に配置して、customizable-sso-1.0.jar
(Misc/Samples/WEM Samples/CustomizableSSO
)をデプロイします。このファイルには、サンプルCSSOクラスが含まれます。
サンプル・クラスの詳細は、第76.4.1項「サンプルCSSOクラス」を参照してください。
CAS Webアプリケーション・コンテキスト・フォルダ内にfatwire
フォルダを作成します。SampleLoginform.jsp
ファイルをfatwire
フォルダにコピーします。
customizable-sso-1.0.jar
ファイルに含まれるクラスがインスタンス化されるように、Springに対して次のように指定します。
customSampleSSObeans.xml
構成ファイルをspring-configuration
フォルダにコピーします。
customSampleSSObeans.xml
ファイルのプロパティを操作環境に一致するように変更します。
spring-configuration
フォルダにあるcustomDefaultWEMSSObeans.xml
構成ファイルの名前から.xml
拡張子を削除します。
サンプルSpring構成ファイルの詳細は、第76.4.2項「サンプルSpring構成ファイル」を参照してください。
外部識別子の資格証明を使用してユーザーを検証する場合は、SystemUserAttr
表に適切なエントリを追加して、外部ユーザー識別子とユーザーのWebCenter Sitesシステム資格証明とのマッピング関係を定義します。
手順については、第76.3.3項「外部ユーザー識別子のWebCenter Sites資格証明へのマッピング」を参照してください。
CAS Webアプリケーションを再起動します。
サンプルのログイン・フォームは次のように表示されます。
CSSOサンプルには、サンプルSSO実装のログイン動作のためのメソッドを提供する、デフォルトCSSOクラスを拡張する3つのJavaクラスが含まれています。
SampleConfiguration.java: このクラスは、ユーザーがログイン・フォームでこのフィールドの値を提供する場合に、外部認証局によって検証されるドメイン・プロパティ(sampleDomain
)を含むようにデフォルトCSSOCustomConfiguration.java
クラスを拡張します。sampleDomain
プロパティは、SpringによってCSSO構成に注入されます。
このクラスには、ユーザーの資格証明を取得するためにコールされるサンプル・ログイン・フォームを定義するsampleFormURL
プロパティも含まれます。このクラスの標準およびカスタム・プロパティは、サンプルSpring構成ファイルから提供されます。
SampleCredentials.java: このクラスは、デフォルトCSSO CustomCredentials.java
クラスを拡張し、ユーザー認証の完了に必要なすべての情報を収集します。SampleAuthenticator
クラスは、ユーザーがログイン・フォームでユーザー名とパスワードを指定する場合に、UsernamePasswordCredentials
オブジェクトを使用します。ユーザーがユーザー名とパスワードの資格証明のかわりにログイン・フォームで外部識別子を指定する場合、SampleCredentials
オブジェクトが作成され、オーセンティケータ(この例では、サンプルSSOクラスSampleAuthenticator.java
)にその情報が提供されます。
CASでは、作成される資格証明オブジェクトのタイプにより、使用されるオーセンティケータ(標準またはカスタム)が制御されます。ログイン・フォームにユーザー名とパスワードの資格証明が指定される場合、標準のWEMユーザー名とパスワードのオーセンティケータが自動的に使用されます。ログイン・フォームで外部識別子が指定される場合、カスタム・オーセンティケータがコールされ、SampleCredentials
オブジェクトを認証します。
SampleAuthenticator.java: このクラスは、デフォルトCSSO CustomAuthenticator.java
クラスを拡張し、CSSOフレームワークでコールされるすべての認証メソッドを含みます。サンプルがデプロイされる場合、CAS認証時のすべての認証決定とWebフロー・アクションは、アクションが実行されるようにこのクラスに送られます。
(このクラスで拡張された) performLoginAction
メソッドは、同じログイン・フォームを表示します。ユーザーがフォーム上で資格証明を送信する場合、CASはこのメソッドに戻って入力フィールドを処理します。検証が必要な資格証明に応じて、このメソッドは、ユーザーに割り当てられた資格証明が移入された、UsernamePasswordCredentials
オブジェクトまたはSampleCredentials
オブジェクトのいずれかを作成します。資格証明オブジェクトは、(CASで提供される) CASコンテキストに挿入され、TGTが要求されます。TGTリクエストは資格証明オブジェクトの認証をトリガーします。認証が拒否されたら、チケット例外によってログイン・フォームが再表示されます。認証が完了したら、Webフローの次のアクションが行われます。たとえば、チケットの取得、元のサービスURL (WebCenter Sites URL)へのチケットの追加、元のサービスへのリダイレクトが行われます。
このクラスには、2つの認証メソッドがあります。一方では、SampleCredentials
を使用して認証を処理し、他方では、通常はユーザー名/パスワード・ベースでRESTリクエストを認証します。サンプルでは、認証される新しい値としてsampleDomain
値が導入されています。この場合、performLoginAction
メソッドは、ユーザーによって提供されたユーザー名、パスワードおよびsampleDomain
値をエンコードし、そのエンコードされた値をUsernamePasswordCredentials
オブジェクトに渡します。デフォルトWEM認証ハンドラは、sampleDomain
値を検出し、authenticationRest
メソッドへその資格証明を渡します。このメソッドは、他の値からsampleDomain
値をデコードして、正しいドメインが指定されているかどうかを確認します。値が間違っている場合は、認証が失敗します。値が正しい場合、このメソッドはユーザー名とパスワードをエンコードして資格証明オブジェクトに戻し、デフォルトWEM認証ハンドラがユーザー名とパスワードを検証します。
サンプルSSO実装のクラスおよびプロパティは、(Misc/Samples/WEM Samples/CustomizableSSO/src/main/webapp/WEB-INF/spring-configuration
にある)サンプルSpring構成ファイルcustomSampleSSObeans.xml
で定義されています。
この項の残りの部分は、次のトピックで構成されます。
サンプルSpring構成ファイルには、デフォルトSpring構成ファイルと同じBean識別子が含まれます(第76.3.2.1項「Spring構成ファイルの作成」を参照)。ただし、サンプルのログイン動作を実装するには、プロパティ値を変更します。たとえば、customUserConfiguration
BeanはSampleConfiguration.java
クラスを参照し、customUserAuthenticator
BeanはSampleAuthenticator.java
クラスを参照します。
また、customUserConfiguration
Beanには、サンプルSSO実装にシステム情報を提供する構成プロパティも指定します。たとえば、SampleLoginForm.jsp
ファイルでは、ユーザーの資格証明を取得するためにサンプルで使用されるブラウザ・フォームが提供されるため、SampleConfiguration.java
クラスを拡張して、sampleFormURL
プロパティを含めます。このプロパティには、サンプルSSO実装用のログイン・ページの完全なURLを指定します。ドメイン名とポート番号は、CASサーバー・インストールに一致させ、パスは、設定中にこのページが配置された場所を指します。
次に、サンプルSpring構成ファイルのコードを示します。このファイルで参照されるプロパティの詳細は、第76.3.2.1項「Spring構成ファイルの作成」の「デフォルトSpring構成ファイルの分析」を参照してください。
サンプルSpring構成ファイル
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:flow="http://www.springframework.org/schema/webflow-config"
xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/webflow-config
http://www.springframework.org/schema/webflow-config/spring-webflow-config-1.0.xsd">
<!-- Custom SSO Bean definitions. This file defines either
thedefault CAS/SSO configuration or a special user implementation.
No other CAS configuration files are modified for a custom implementation
-->
<!-- This bean is never modified. It defines the web-flow controller which always passes control into the custom authenticator -->
<bean id="customUserLoginAction" class="com.fatwire.wem.sso.cas.web.CustomLoginViewAction"
p:centralAuthenticationService-ref="centralAuthenticationService"
p:customAuthentication-ref="customUserAuthenticator"
/>
<!-- This bean is usually not modified. Override it when there needs to be a custom encoding for information passed between the web-flow and any external component -->
<bean id="customRestCoder" class="com.fatwire.wem.sso.cas.custom.basis. CustomRestTokenCoding"
/>
<!-- Modify this bean with a custom configuration class when additional parameters are needed for a custom implementation -->
<bean id="customUserConfiguration" class=
"com.fatwire.wem.sso.cas.sample.SampleConfiguration" p:casLoginUrl="http://localhost:7080/cas/login" p:resolverUrl="http://localhost:8080/cs/custom/customCsResolver.jsp" p:resolverUsername="fwadmin" p:resolverPassword="xceladmin" p:traceFlag="false" p:sampleDomain="mydomain" p:sampleFormUrl="http://localhost:7080/cas/SampleLoginForm.jsp"/>
<!-- Modify this bean with a customAuthentication class for a custom implementation. -->
<bean id="customUserAuthenticator" class=
"com.fatwire.wem.sso.cas.sample.SampleAuthenticator"p:customConfiguration-ref="customUserConfiguration"
p:customRestCoder-ref="customRestCoder"
/>
</beans>
サンプル・クラスをインスタンス化するには、サンプルSpring構成ファイルをspring-configuration
フォルダ(cas/WEB-INF
)に配置して、デフォルトSpring構成ファイルから.xml
拡張子を削除します。詳細は、第76.3.2.2項「Spring構成ファイルの配置」を参照してください。
サンプルCSSO実装のコンポーネントは、/WEM Samples/CustomizableSSO
フォルダにあります。次のフォルダがサンプルCSSO実装に含まれています。
表76-3 サンプルCSSOコンポーネント
フォルダ | 説明 |
---|---|
|
|
|
サンプルSSO実装でJavaソース・ファイルをコンパイルするために必要なすべてのサード・パーティのjarファイルが含まれます。 |
|
個々のソース・コンポーネントとサンプル実装の操作を説明するWordドキュメントが含まれます。 注意: サンプルのソース・コードを表示する前に、これらのドキュメントを確認することをお薦めします。 |
|
Javaソース・ファイルのルート・フォルダ。 |
|
|
|
サンプルSpring構成ファイル 注意: |