52 WEMフレームワークへのCustomizable Single Sign-Onファシリティの導入
WEMフレームワークの認証には、Oracle Customizable Single Sign-On (CSSO)ファシリティというカスタマイズ・レイヤーが備わっています。CAS構成を直接変更せずに、CSSOファシリティの認証の拡張を使用して、カスタムSSOソリューションを作成できます。ログイン動作を実装すると、Spring構成がこれらの拡張をCAS構成に注入します。
トピック:
WEMフレームワークのログイン動作のカスタマイズについて
カスタムSSOソリューションを実装するには、CSSOファシリティの事前パッケージ済クラスを拡張する必要があります。CSSOファシリティのデフォルト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実装をカスタマイズするための開始点は、CSSOファシリティのデフォルトのコンポーネントです。これらのコンポーネントは、SSOソリューションを作成するために、およびデフォルトのクラスをインスタンス化するSpring構成ファイルを作成するために拡張するデフォルトのクラスです。
com.fatwire.wem.sso.cas.custom.basis
パッケージ(次の表を参照)には、CSSOファシリティに含まれているデフォルト・クラスがあります。デフォルトSpring構成ファイル(customdefaultWEMSSObeans.xml
)は、デフォルトWEMログイン動作を実装するためにこれらのクラスをインスタンス化します。
ノート:
CSSOファシリティでは、デフォルトWEMログイン動作をカスタム・ログイン動作で置き換える完全なSSOサンプルが用意されています。「CSSOサンプル実装の実行」を参照してください。
表52-1 com.fatwire.wem.sso.cas.custom.basis
クラス | 説明 |
---|---|
|
|
|
デフォルトSpring構成ファイルで設定されているプロパティへのアクセスを提供します。追加のプロパティがカスタムSSO実装に必要な場合にはこのクラスを拡張できます。 |
|
カスタム認証に対して資格証明値の標準セットを提供します。追加の属性がカスタムSSO実装に必要な場合にはこのクラスを拡張できます。 |
com.fatwire.wem.sso.cas.custom.interfaces
パッケージ(次の表を参照)では、カスタム認証インタフェースを定義します。
表52-2 com.fatwire.wem.sso.cas.custom.interfaces
クラス | 説明 |
---|---|
|
カスタムSSOソリューションで実装する必要があるインタフェースを定義します。 |
|
ユーザー名/パスワード・ベースではないカスタムREST認証トークンをエンコードおよびデコードするために実装する必要のあるインタフェースを定義します。 |
カスタムSSO動作の構成およびデプロイ
CSSOファシリティのデフォルトのクラスを拡張して、カスタムSSOの構成およびデプロイを開始します。次に、カスタムSpring構成ファイルを作成して、Springへの新しいJavaクラスを特定します。このファイルはクラスをインスタンス化し、それらをCSSOフレームワークに公開します。
カスタムSSO動作を構成してデプロイするには:
-
デフォルトCSSOクラスを次のように拡張します。
CustomAuthenticator.java
、CustomConfiguration.java
およびCustomCredentials.java
(com.fatwire.wem.sso.cas.custom.basis
パッケージ内に含まれます)。-
デフォルトCSSOクラスを拡張するJavaクラスを作成します。
-
作成したJavaクラスを
jar
ファイルにパッケージ化し、そのjar
ファイルをCASサーブレット(cas/WEB-INF/lib
)のクラスパスに配置します。
-
-
spring-configuration
フォルダ(cas/WEB-INF
内)にあるcustomResolverCredential.xml
ファイルにusername
およびpassword
プロパティを設定します。手順については、「リゾルバ資格証明の設定」を参照してください。 -
Springにインスタンス化する新しいJavaクラスを次のように指定します。
-
SSO実装用のカスタム・クラス名およびプロパティのすべてを含むSpring構成ファイルを作成します。
-
カスタムSpring構成ファイルを
spring-configuration
フォルダ(cas/WEB-INF/
)に配置します。 -
デフォルトSpring構成ファイル(
customDefaultWEMSSObeans.xml
)から.xml
拡張子を削除します。
-
-
外部認証局がユーザーの認証に使用される場合は、外部ユーザー識別子を適切なWebCenter Sitesシステムのユーザー名、一意の識別子およびACLにマップします。手順については、「外部ユーザー識別子のWebCenter Sites資格証明へのマッピング」を参照してください。
-
CAS Webアプリケーションを再起動します。
デフォルトCSSOクラスの拡張について
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-flow
ハンドラまたはカスタムRESTオーセンティケータによって作成されて移入されます。デフォルトでは、このクラスは標準UsernamePasswordCredentials
オブジェクト(CASによって提供される)を定義します。このオブジェクトは、username
、userId
およびcurrentACL
の各プロパティで、ユーザー認証を完了するために必要なすべての情報を収集します。これらのプロパティの値によって、オーセンティケータ(CustomAuthenticator.java
)が実際のユーザー認証を実行する際に使用する属性マップが移入されます。カスタムSSOソリューションに追加の資格情報が必要な場合はこのクラスを拡張します。このクラスがユーザー情報をオーセンティケータに渡してユーザー認証を完了する方法の例については、(
Misc/Samples/WEM/Samples/CustomizableSSO/lib
フォルダにある)サンプルCSSOクラスSampleCredentials.java
のコードを参照してください。 -
CustomAuthenticator.java:
CustomAuthentication
インタフェースを実装します。このクラスは、ログイン・シーケンスの動作を制御し、認証リクエストを処理します。デフォルトでは、標準のWEMログイン・フォームを表示して、認証を完了するためにWEMフレームワークに戻ります。ノート:
デフォルトの
CustomAuthenticator.java
クラスは、SSO実装のすべての認証メソッドを含んでいるため、最も重要なクラスです。すべての認証の決定およびCAS Webフロー・アクションは、アクションが実行されるようにこのクラスに送られます。CAS Webフローでは、複数のステップを実行し、それらのステップの1つにより
performLoginAction
メソッドが起動します。このメソッドは、ログイン・フォームを表示するか、または外部認証局と通信します。このクラスは、WebCenter Sitesユーザーに外部ユーザーをマップする静的メソッド
callCsResolverPage
も定義します。カスタムSSO実装で外部認証局を使用してユーザーを認証する場合は、callCsResolverPage
メソッドでCSSOオーセンティケータに対する一意の名前を定義する必要があります。外部ユーザー識別子の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);
リゾルバ資格証明の設定
spring-configuration
フォルダ(cas/WEB-INF
内)にあるcustomResolverCredentials.xml
ファイルは、リゾルバ資格証明を外部で定義します。このため、資格証明はカスタムSSO Bean定義とは関係なく暗号化されます。外部認証局を使用してユーザーを認証する場合、customResolverCredential.xml
ファイルにusername
およびpassword
プロパティを設定し、このファイルをSpring構成ファイルで参照する必要があります。
リゾルバ資格証明を設定するには:
外部ユーザー識別子のWebCenter Sites資格証明へのマッピングを参照してください。
Springへのインスタンス化するJavaクラスの指定について
SSO実装のすべてのカスタマイズ設定は、spring-configuration
フォルダ(cas/WEB-INF
)にある、単一のSpring構成ファイルで指定されます。
この項には次のトピックが含まれます:
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クラスを参照する必要があります。
ノート:
CustomCredentials.java
クラスは、Spring構成ファイルで参照されません。かわりに、デフォルトCSSO CustomAuthenticator.java
クラスで定義されている、performLoginAction
メソッドでこのオブジェクトをインスタンス化するコードを提供します。このメソッドは、すべてのログイン・リクエストに対してカスタム資格証明オブジェクトを作成し、そのオブジェクトを認証用にCASに渡します。
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 file defines the resolver credentials externally so the credentials can be encrypted independent from the custom SSO bean definitions --> <import resource="customResolverCredential.xml" /> <!-- 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="@CSConnectPrefix@://@hostname@:@portnumber@/cas/login" p:resolverUrl="@CSConnectPrefix@://@hostname@:@portnumber@/@context-path@/custom/customCsResolver.jsp" p:resolverCredential-ref="resolverCredential" 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:credentialLocation="cas-spring-configuration/customResolverCredential.xml" p:customConfiguration-ref="customUserConfiguration" p:customRestCoder-ref="customRestCoder" /> </beans>
デフォルトSpring構成ファイルの分析
-
リゾルバ資格証明を外部で指定した
customResolverCredentials.xml
ファイルがインポートされます。リゾルバ資格証明の設定を参照してください。 -
デフォルトCSSO
customConfiguration.java
クラスを参照する、customUserConfiguration
Bean。デフォルトCSSOクラスの拡張についてを参照してください。 -
resolverURL
プロパティおよびtraceflag
プロパティが参照されます。-
resolverURL
: 外部認証局がユーザーの認証に使用される場合、このプロパティは、WebCenter Sitesにある、customCsResolver
ページへの完全なURLを指定する必要があります。customCsResolver
ページは、ユーザーの外部識別子を取得し、WebCenter Sitesデータベースに問い合せてユーザーのWebCenter Sites資格証明を取得します。このプロパティで指定されるドメインとポート番号は、指定された値がWebCenter Sitesインストールの値と異なる場合は変更する必要があります。外部ユーザー識別子のWebCenter Sites資格証明へのマッピングを参照してください。
-
traceflag
: このプロパティは、カスタムSSOレイヤーに関する情報を提供するトレース・ログを有効にするかかどうかを指定します。このプロパティは、true
またはfalse
のいずれかに設定できます。
-
-
customUserAuthenticator
Beanは、デフォルトCSSOCustomAuthenticator.java
クラスを参照します。デフォルトCSSOクラスの拡張についてを参照してください。
Spring構成ファイルの配置について
デフォルトWEMログイン動作のためのクラスとプロパティを指定するデフォルトSpring構成ファイルは、spring-configuration
フォルダ(cas/WEB-INF
)にあります。独自のファイルを同じ場所に配置するには、デフォルトのファイルを非アクティブ化する必要があります(ファイルの.xml
拡張子を削除するか変更します)。これは、Springではspring-configuration
フォルダ(cas/WEB-INF
)に含まれるすべてのSpring構成ファイルがロードされ、これらのファイルが単一の構成にマージされるためです。カスタムおよびデフォルトの両ファイルは同じBean識別子を指定するため、これらのファイルの一方のみをSpring構成で認識できます。Bean識別子が重複すると、初期化が失敗します。
ノート:
customDefaultWEMSSObeans.xml
を削除しないでください。かわりに、ファイルの.xml
拡張子を削除するか変更してください。こうすると、デフォルトWEMログイン画面の使用に戻るためにファイルをリストアできます。
外部ユーザー識別子のWebCenter Sites資格証明へのマッピング
CSSOファシリティでは、WebCenter Sitesユーザーの認証に外部認証局を使用できます。外部認証局では、ユーザーの資格証明を検証するときに、一意の外部識別子をそのユーザーに関連付けます。WEM認証を完了するには、(デフォルトCSSOクラスCustomAuthenticator.java
の静的メソッドとして定義される)メソッドcallCsResolverPage
を使用して、ユーザーの外部識別子を対応するWebCenter Sitesのシステム・ユーザー名、一意の識別子およびACLにマップする必要があります。
外部識別子をWebCenter Sitesシステム・ユーザーにマップするには、customResolverCredentials.xml
ファイルで外部認証プロパティを設定していることを確認してください(「リゾルバ資格証明の設定」を参照)。外部識別子から適切なWebCenter Sitesシステム資格証明へのマッピングを実装するには、次の操作を実行します。
マッピングを実装するには:
-
(拡張された
CustomAuthenticator.java
クラスで定義された)callCsResolverPage
メソッドでカスタムSSO実装の外部認証局に一意のCSSOオーセンティケータ名を定義します。たとえば、(サンプルCSSOクラス
SampleAutheticator.java
で定義される)次のcallCsResolverPage
メソッドは、一意のオーセンティケータ名としてsamplesso
を定義します。Map<String,String>csTokens=callCsResolverPage(externalUserId, "
samplesso
")
-
一般管理者(たとえば、
fwadmin/xceladmin
)としてAdminインタフェースにアクセスします。 -
「管理」ノードの下で、「ユーザー・アクセス管理」ノードを開き、「ユーザー」をダブルクリックします。
-
外部識別子をWebCenter Sites資格証明にマップするユーザーを次のように選択します。
-
「ユーザー名の入力」フィールドで、ユーザーの名前を入力します。
-
「操作の選択」セクションで、「ユーザー属性の修正」オプションを選択します。
-
「OK」をクリックします。
「ユーザーの修正」フォームが開きます。
-
-
「ユーザー名」列で、外部識別子をWebCenter Sites資格証明にマップするユーザーの名前をクリックします。
「ユーザー属性」フォームが開きます。
-
フォームで、次のようにフィールドに入力します。
-
「属性名」フィールドに、一意のCSSOオーセンティケータ名(外部認証局を特定するために使用する名前)を入力します。この名前は、(ステップ1の)
callCsResolverPage
メソッドで定義したCSSOオーセンティケータの一意の名前に一致する必要があります。 -
「属性値」フィールドに、外部認証局によって提供されたユーザーの外部識別子を入力します。
-
-
「修正」をクリックして、WebCenter Sitesの
SystemUserAttr
データベース表に新しい属性と値を格納します。 -
外部識別子に関連付けられているすべてのユーザーに対してステップ3から7を繰り返します。
マッピング・プロセスの分析
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ユーザーを特定する、レスポンス・マップを作成します。
CSSOサンプル実装の実行
デフォルトWEMログイン動作をカスタム・ログイン動作で置き換えるために、CSSOのサンプルSSO実装(Javaソース・ファイルを含む)を試してみます。このサンプルには、標準のユーザー名フィールドとパスワード・フィールド、ドメイン名を指定するためのユーザー用の追加フィールド、外部ユーザー識別子のフィールドが含まれます。この実装では、2種類の異なる認証、つまりユーザー名/パスワードのペア(追加のドメイン・フィールドを含む)と、外部認証局を通じたユーザー認証が示されます。
ノート:
CSSOサンプルでは、ログイン・フォーム上のフィールドに適用される検証ルールは実行されません。フィールドに対する完全性はチェックされず、不正な値もレポートされません。認証が失敗すると、フォームはコメントなしに再度表示されます。本番環境でこのフォームを実装する場合、エラーが発生したら、適切な診断メッセージを使用してすべてのルールが実施されるようにします。
CSSOファシリティに含まれるすべてのサンプル・コンポーネントの詳細は、「サンプルCSSOコンポーネント」を参照してください。
サンプルSSO実装を実行するには::
-
CASクラスパス(
cas/WEB-INF/lib
フォルダ)に配置して、customizable-sso-1.0.jar
(Misc/Samples/WEM Samples/CustomizableSSO
)をデプロイします。このファイルには、サンプルCSSOクラスが含まれます。 -
CAS Webアプリケーション・コンテキスト・フォルダ内に
fatwire
フォルダを作成します。SampleLoginform.jsp
ファイルをfatwire
フォルダにコピーします。 -
customizable-sso-1.0.jar
ファイルに含まれるクラスがインスタンス化されるように、Springに対して次のように指定します。-
customSampleSSObeans.xml
構成ファイルをspring-configuration
フォルダにコピーします。 -
customSampleSSObeans.xml
ファイルのプロパティを操作環境に一致するように変更します。 -
spring-configuration
フォルダにあるcustomDefaultWEMSSObeans.xml
構成ファイルの名前から.xml
拡張子を削除します。
-
-
外部識別子の資格証明を使用してユーザーを検証する場合は、
SystemUserAttr
表に適切なエントリを追加して、外部ユーザー識別子とユーザーのWebCenter Sitesシステム資格証明とのマッピング関係を定義します。手順については、「外部ユーザー識別子のWebCenter Sites資格証明へのマッピング」を参照してください。
-
CAS Webアプリケーションを再起動します。
サンプル・ログイン・フォームが開きます。
サンプルCSSOクラス
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認証ハンドラによってユーザー名およびパスワードが検証されます。
サンプルSpring構成ファイル
サンプルSSO実装のクラスおよびプロパティは、(Misc/Samples/WEM Samples/CustomizableSSO/src/main/webapp/WEB-INF/spring-configuration
にある)サンプルSpring構成ファイルcustomSampleSSObeans.xml
で定義されています。
この項には次のトピックが含まれます:
サンプルSpring構成ファイルの分析
サンプルSpring構成ファイルには、デフォルトSpring構成ファイルと同じBean識別子が含まれます。ただし、サンプルのログイン動作を実装するには、プロパティ値を変更します。たとえば、customUserConfiguration
BeanはSampleConfiguration.java
クラスを参照し、customUserAuthenticator
BeanはSampleAuthenticator.java
クラスを参照します。
また、customUserConfiguration
Beanには、サンプルSSO実装にシステム情報を提供する構成プロパティも指定します。たとえば、SampleLoginForm.jsp
ファイルでは、ユーザーの資格証明を取得するためにサンプルで使用されるブラウザ・フォームが提供されるため、SampleConfiguration.java
クラスを拡張して、sampleFormURL
プロパティを含めます。このプロパティには、サンプルSSO実装用のログイン・ページの完全なURLを指定します。ドメイン名とポート番号は、CASサーバー・インストールに一致させ、パスは、設定中にこのページが配置された場所を指します。
次に、サンプルSpring構成ファイルのコードを示します。このファイルで参照されるプロパティの詳細は、「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 the default CAS/SSO configuration or a special user implementation. No other CAS configuration files are modified for a custom implementation --> <!-- This file defines the resolver credentials externally so the credentials can be encrypted independent from the custom SSO bean definitions --> <import resource="customResolverCredential.xml" /> <!-- 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:8080/cas/login" p:resolverUrl="http://localhost:8080/cs/custom/customCsResolver.jsp" p:resolverCredential-ref="resolverCredential" p:traceFlag="false" p:sampleDomain="mydomain" p:sampleFormUrl="http://localhost:8080/cas/fatwire/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:credentialLocation="cas-spring-configuration/customResolverCredential.xml" p:customConfiguration-ref="customUserConfiguration" p:customRestCoder-ref="customRestCoder" /> </beans>
サンプルSpring構成ファイルの配置
サンプル・クラスをインスタンス化するには、サンプルSpring構成ファイルをspring-configuration
フォルダ(cas/WEB-INF
)に配置して、デフォルトSpring構成ファイルから.xml
拡張子を削除します。
詳細は、「Spring構成ファイルの配置について」を参照してください。
サンプルCSSOコンポーネント
サンプルCSSO実装のコンポーネントは、/WEM Samples/CustomizableSSO
フォルダにあります。次の表で説明されているフォルダがサンプルCSSO実装に含まれています。
表52-3 サンプルCSSOコンポーネント
フォルダ | 説明 |
---|---|
|
|
|
サンプルSSO実装でJavaソース・ファイルをコンパイルするために必要なすべてのサード・パーティの |
|
個々のソース・コンポーネントとサンプル実装の操作を説明するWordドキュメントが含まれます。 ノート: サンプルのソース・コードを表示する前に、これらのドキュメントを確認することをお薦めします。 |
|
Javaソース・ファイルのルート・フォルダ。 |
|
|
|
サンプルSpring構成ファイル ノート: |