ヘッダーをスキップ
Oracle® Fusion Middleware WebCenter Sites開発者ガイド
11gリリース1 (11.1.1.8.0)
E49681-03
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

76 WEMフレームワーク: Customizable Single Sign-Onファシリティ

この章には次の項が含まれます。

76.1 WEMフレームワークのログイン動作のカスタマイズ

WEMフレームワーク認証は、CASフレームワーク上に構築され、Oracle Customizable Single Sign-On (CSSO)ファシリティというカスタマイズ・レイヤーが備わっています。CSSOファシリティには、カスタムSSOソリューションを作成するために使用可能な認証の拡張が含まれているため、CAS構成を直接変更する必要はありません。かわりに、Spring構成でこれらの拡張をCAS構成に直接注入して、必要なログイン動作を実装します。

CSSOファシリティには、カスタムSSOソリューションを実装するために拡張できる事前にパッケージされたクラスが用意されています。また、Springにインスタンス化するクラスを特定する、デフォルトSpring構成ファイルも提供しています。WEM SSOをカスタマイズすることで、別のログイン画面の使用、ユーザー名/パスワードのペア以外の資格証明の要求、または外部認証局を使用したWebCenter Sitesユーザーの認証が可能になります。カスタムSSO実装の構成は次のとおりです。

デフォルトCSSOクラスは、標準のWEM SSO実装に従って、すべての資格証明の検出と認証を行います。これらのクラスは、customdefaultWEMSSObean.xml Spring構成ファイルでインスタンス化されます。デフォルトCSSOクラスを拡張することにより、カスタムSSOソリューションの動作を指定するメソッドを定義できます。たとえば、ブラウザ・アクセス、RESTおよび/またはシック・クライアント認証に異なる認証を作成できます。デフォルトCSSOクラスを拡張する場合は、カスタム・クラスを指定し、それらのクラスをWEMフレームワークに公開するカスタムSpring構成ファイルを作成する必要があります。

CSSOファシリティでは、デフォルトWEMログイン動作をカスタム・ログイン動作で置き換える完全なSSOサンプル(Javaソース・ファイルを含む)が用意されています。サンプルSSO実装では、次の2種類の異なる認証(ユーザー名/パスワードのペア(追加のドメイン・フィールドを含む)および外部ユーザー識別子)が示されます。外部識別子は、外部認証局で認証されたユーザーをWebCenter Sitesシステム・ユーザーにマップします。

この章の残りの部分では、CSSOファシリティのデフォルト・コンポーネントおよびカスタムSSOソリューションの実装手順について説明します。カスタムSSOソリューションの例を確認する場合は、この章の最後に記載されているCSSOサンプルおよびこのサンプルの実行手順を参照してください。

76.2 デフォルト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

クラス 説明

CustomAuthenticator.java

CustomAuthenticationインタフェースを実装します。このクラスは、ログイン・シーケンスの動作を制御し、認証リクエストを処理します。デフォルトでは、標準のWEMログイン・フォームを表示して、認証を完了するためにWEMフレームワークに戻ります。

このクラスの拡張の詳細は、第76.3.1項「デフォルトCSSOクラスの拡張」を参照してください。

CustomConfiguration.java

デフォルトSpring構成ファイルで設定されているプロパティへのアクセスを提供します。追加のプロパティがカスタムSSO実装に必要な場合にはこのクラスを拡張できます。

このクラスの拡張の詳細は、第76.3.1項「デフォルトCSSOクラスの拡張」を参照してください。

CustomCredentials.java

カスタム認証に対して資格証明値の標準セットを提供します。追加の属性がカスタムSSO実装に必要な場合にはこのクラスを拡張できます。

このクラスの拡張の詳細は、第76.3.1項「デフォルトCSSOクラスの拡張」を参照してください。


com.fatwire.wem.sso.cas.custom.interfacesパッケージ(表76-2を参照)では、カスタム認証インタフェースを定義します。

表76-2 com.fatwire.wem.sso.cas.custom.interfaces

クラス 説明

CustomAuthentication.java

カスタムSSOソリューションで実装する必要があるインタフェースを定義します。

詳細は、第76.3.1項「デフォルトCSSOクラスの拡張」を参照してください。

CustomRestCodec.java

ユーザー名/パスワード・ベースではないカスタムREST認証トークンをエンコードおよびデコードするために実装する必要のあるインタフェースを定義します。


76.3 カスタムSSO動作の構成およびデプロイ

カスタムSSO動作を構成およびデプロイするには、最初にCSSOファシリティに含まれているデフォルトのクラスを拡張する必要があります。その後、クラスをインスタンス化するカスタムSpring構成ファイルを作成し、それらのクラスをCSSOフレームワークに公開して、Springに新しいJavaクラスを指定します。基本的な手順は次のとおりです。

  1. デフォルトCSSOクラスを次のように拡張します。CustomAuthenticator.javaCustomConfiguration.javaおよびCustomCredentials.java (com.fatwire.wem.sso.cas.custom.basisパッケージ内に含まれます)。

    1. デフォルトCSSOクラスを拡張する新しいJavaクラスを作成します。

    2. 作成したJavaクラスをjarファイルにパッケージ化し、そのjarファイルをCASサーブレット(cas/WEB-INF/lib)のクラスパスに配置します。

    詳細は、第76.3.1項「デフォルトCSSOクラスの拡張」を参照してください。

  2. Springにインスタンス化する新しいJavaクラスを次のように指定します。

    1. SSO実装用のカスタム・クラス名およびプロパティのすべてを含むSpring構成ファイルを作成します。

    2. カスタムSpring構成ファイルをspring-configurationフォルダ(cas/WEB-INF/)に配置します。

    3. デフォルトSpring構成ファイル(customDefaultWEMSSObeans.xml)から.xml拡張子を削除します。

    詳細は、第76.3.2項「Springへのインスタンス化するJavaクラスの指定」を参照してください。

  3. 外部認証局がユーザーの認証に使用される場合は、外部ユーザー識別子を適切なWebCenter Sitesシステムのユーザー名、一意の識別子およびACLにマップします。手順については、第76.3.3項「外部ユーザー識別子のWebCenter Sites資格証明へのマッピング」を参照してください。

  4. CAS Webアプリケーションを再起動します。詳細は、第76.3.4項「CAS Webアプリケーションの再起動」を参照してください。

この項の残りの部分では、前述の手順の詳細を説明します。

76.3.1 デフォルトCSSOクラスの拡張

SSO実装は、デフォルトCSSOクラスCustomAuthenticator.javaCustomConfiguration.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によって提供される)を定義します。このオブジェクトは、usernameuserIdおよび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オーセンティケータに対する一意の名前を定義する必要があります。詳細は、第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);
    

76.3.2 Springへのインスタンス化するJavaクラスの指定

SSO実装のすべてのカスタマイズ設定は、spring-configurationフォルダ(cas/WEB-INF)にある、単一のSpring構成ファイルで指定されます。

この項の残りの部分は、次のトピックで構成されます。

76.3.2.1 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構成ファイル

  1. <?xml version="1.0" encoding="UTF-8"?>

  2. <beans xmlns="http://www.springframework.org/schema/beans"

  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  4. xmlns:flow="http://www.springframework.org/schema/webflow-config"

  5. xmlns:p="http://www.springframework.org/schema/p"

  6. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd

  7. http://www.springframework.org/schema/webflow-config http://www.springframework.org/schema/webflow-config/spring-webflow-config-1.0.xsd">

  8. <!-- 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 -->
    
  9. <!-- This bean is never modified. It defines the web-flow controller which always passes control into

             the custom authenticator -->
    
  10. <bean id="customUserLoginAction" class="com.fatwire.wem.sso.cas.web.CustomLoginViewAction"

  11. p:centralAuthenticationService-ref="centralAuthenticationService"

  12. p:customAuthentication-ref="customUserAuthenticator"

  13. />

  14. <!-- 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 -->
    
  15. <bean id="customRestCoder" class="com.fatwire.wem.sso.cas.custom.basis.CustomRestTokenCoding"

  16. />

  17. <!-- Modify this bean with a custom configuration implementation class when additional parameters are

                needed for a custom implementation -->
    
  18. <bean id="customUserConfiguration" class="com.fatwire.wem.sso.cas.custom.basis.CustomConfiguration"

  19. p:casLoginUrl="http://localhost:7080/cas/login"

  20. p:resolverUrl="http://localhost:8080/cs/custom/customCsResolver.jsp"

  21. p:resolverUsername="fwadmin"

  22. p:resolverPassword="xceladmin"

  23. p:traceFlag="false"

  24. />

  25. <!-- Modify this bean with a customAuthentication class for a custom implementation. -->

  26. <bean id="customUserAuthenticator" class="com.fatwire.wem.sso.cas.custom.basis.CustomAuthenticator"

  27. p:customConfiguration-ref="customUserConfiguration"

  28. p:customRestCoder-ref="customRestCoder"

  29. />

  30. </beans>

デフォルトSpring構成ファイルの分析

  • 18は、デフォルトのCSSO customConfiguration.javaクラスを参照する、customUserConfiguration Beanです。このクラスの詳細は、第76.3.1項「デフォルトCSSOクラスの拡張」を参照してください。このBeanには、デフォルトSSO実装に必要なプロパティも含まれます。

    • 19は、casLoginURLプロパティを参照します。このプロパティは、CASログイン機能へのベースURLを指定します。指定された値がCASサーバー・インストールとは異なる場合、ドメインおよびポート番号設定を変更する必要があります。

    • 20から22は、外部認証プロパティresolverURLresolverUsernameおよび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クラスの拡張」を参照してください。

76.3.2.2 Spring構成ファイルの配置

デフォルトWEMログイン動作のためのクラスとプロパティを指定するデフォルトSpring構成ファイルは、spring-configurationフォルダ(cas/WEB-INF)にあります。独自のファイルを同じ場所に配置するには、デフォルトのファイルを非アクティブ化する必要があります(ファイルの.xml拡張子を削除するか変更します)。これは、Springではspring-configurationフォルダ(cas/WEB-INF)に含まれるすべてのSpring構成ファイルがロードされ、これらのファイルが単一の構成にマージされるためです。カスタムおよびデフォルトの両ファイルは同じBean識別子を指定するため、これらのファイルの一方のみをSpring構成で認識できます。Bean識別子が重複すると、初期化が失敗します。


注意:

customDefaultWEMSSObeans.xmlを削除しないでください。かわりに、ファイルの.xml拡張子を削除するか変更してください。こうすると、デフォルトWEMログイン画面の使用に戻る場合にファイルをリストアできます。


76.3.3 外部ユーザー識別子のWebCenter Sites資格証明へのマッピング

CSSOファシリティでは、WebCenter Sitesユーザーの認証に外部認証局を使用できます。外部認証局では、ユーザーの資格証明を検証するときに、一意の外部識別子をそのユーザーに関連付けます。WEM認証を完了するには、(デフォルトCSSOクラスCustomAuthenticator.javaの静的メソッドとして定義される)メソッドcallCsResolverPageを使用して、ユーザーの外部識別子を対応するWebCenter Sitesのシステム・ユーザー名、一意の識別子およびACLにマップする必要があります。

外部識別子をWebCenter Sitesシステム・ユーザーにマップするには、Spring構成ファイルで外部認証プロパティを設定していることを確認してください(第76.3.2.1項「Spring構成ファイルの作成」「デフォルトSpring構成ファイルの分析」を参照)。外部識別子から適切なWebCenter Sitesシステム資格証明へのマッピングを実装するには、次の操作を実行します。

マッピングを実装するには:

  1. (拡張されたCustomAuthenticator.javaクラスで定義された) callCsResolverPageメソッドでカスタムSSO実装の外部認証局に一意のCSSOオーセンティケータ名を定義します。

    たとえば、(サンプルCSSOクラスSampleAutheticator.javaで定義される)次のcallCsResolverPageメソッドは、一意のオーセンティケータ名として"samplesso"を定義します。

    Map<String,String>csTokens=callCsResolverPage(externalUserId, "samplesso")

  2. 一般管理者(たとえば、fwadmin/xceladmin)としてWebCenter Sites Adminインタフェースにアクセスします。

  3. 「管理」タブで、「管理ツール」ノードを開き、「ユーザー」をダブルクリックします。

  4. 外部識別子をWebCenter Sites資格証明にマップするユーザーを次のように選択します。

    1. 「ユーザー名の入力」フィールドで、ユーザーの名前を入力します。

    2. 「操作の選択」セクションで、「ユーザー属性の修正」オプションを選択します。

    3. 「OK」をクリックします。

      「ユーザーの修正」フォームが次のように表示されます。

      m_usernamelink.pngの説明が続きます
      m_usernamelink.pngの説明

  5. 「ユーザー名」列で、外部識別子をWebCenter Sites資格証明にマップするユーザーの名前をクリックします。

    次のフォームが表示されます。

    addattributesform.pngの説明が続きます
    addattributesform.pngの説明

  6. フォームで、次のようにフィールドに入力します。

    • 「属性名」フィールドに、一意のCSSOオーセンティケータ名(外部認証局を特定するために使用する名前)を入力します。この名前は、(手順1の) callCsResolverPageメソッドで定義したCSSOオーセンティケータの一意の名前に一致する必要があります。

    • 「属性値」フィールドに、外部認証局によって提供されたユーザーの外部識別子を入力します。

  7. 「修正」をクリックして、WebCenter Sites SystemUserAttrデータベース表に新しい属性と値を格納します。

  8. 外部識別子に関連付けられているすべてのユーザーに対して手順3から7を繰り返します。

マッピング・プロセスの分析

callCsResolverPageメソッドがWebCenter Sitesシステム・ユーザーに外部識別子をマップするためにコールされる場合は、カスタムSSO実装に対して一意のCSSOオーセンティケータ名が定義されます。このメソッドは、外部識別子と一意のCSSOオーセンティケータ名を使用して、外部ユーザーをWebCenter Sitesシステム・ユーザーにマップします。このマップには、CustomCredentialsオブジェクトの関連プロパティに配置される、次のアイテムが含まれます。

  • username: ユーザーのWebCenter Sitesユーザー名

  • currentUser: ユーザーのWebCenter Sitesの一意の識別子

  • currentACL: ユーザーのACL

CustomCredentialsオブジェクトは、usernamecurrentUserおよびcurrentACLの値をCustomAuthenticator.javaクラスで定義されたauthenticateメソッドに渡します。authenticateメソッドは、これらの値を使用して、WebCenter Sitesユーザーを特定する、レスポンス・マップを作成します。

76.3.4 CAS Webアプリケーションの再起動

カスタムSSO実装をデプロイするには、CAS Webアプリケーションを再起動します。CASが再起動したら、spring-configurationフォルダ(cas/WEB-INF)にある、カスタムSpring構成ファイルで定義されたクラスを使用して、カスタム・ログイン動作を提供します。

76.4 CSSOサンプル実装の実行

CSSOファシリティには、カスタムSSO実装(Javaソース・ファイルを含む)の実行例が用意されています。サンプルでは、デフォルトのWEMログイン動作をカスタム・ログイン動作で置き換えています。これには、標準のユーザー名フィールドとパスワード・フィールド、ドメイン名を指定するためのユーザー用の追加フィールド、外部ユーザー識別子のフィールドが含まれます。ここでは、2種類の異なる認証、つまりユーザー名/パスワードのペア(追加のドメイン・フィールドを含む)と、外部認証局を通じたユーザー認証を示しています。


注意:

CSSOサンプルでは、ログイン・フォーム上のフィールドに適用される検証ルールは実行されません。フィールドに対する完全性はチェックされず、不正な値もレポートされません。認証が失敗すると、フォームはコメントなしに再度表示されます。本番環境でこのフォームを実装する場合、エラーが発生したら、適切な診断メッセージを使用してすべてのルールが実施されるようにする必要があります。


CSSOファシリティに含まれるすべてのサンプル・コンポーネントの詳細は、第76.4.3項「サンプルCSSOコンポーネント」を参照してください。

サンプルSSO実装を実行するには:

  1. CASクラスパス(cas/WEB-INF/libフォルダ)に配置して、customizable-sso-1.0.jar (Misc/Samples/WEM Samples/CustomizableSSO)をデプロイします。このファイルには、サンプルCSSOクラスが含まれます。

    サンプル・クラスの詳細は、第76.4.1項「サンプルCSSOクラス」を参照してください。

  2. CAS Webアプリケーション・コンテキスト・フォルダ内にfatwireフォルダを作成します。SampleLoginform.jspファイルをfatwireフォルダにコピーします。

  3. customizable-sso-1.0.jarファイルに含まれるクラスがインスタンス化されるように、Springに対して次のように指定します。

    1. customSampleSSObeans.xml構成ファイルをspring-configurationフォルダにコピーします。

    2. customSampleSSObeans.xmlファイルのプロパティを操作環境に一致するように変更します。

    3. spring-configurationフォルダにあるcustomDefaultWEMSSObeans.xml構成ファイルの名前から.xml拡張子を削除します。

    サンプルSpring構成ファイルの詳細は、第76.4.2項「サンプルSpring構成ファイル」を参照してください。

  4. 外部識別子の資格証明を使用してユーザーを検証する場合は、SystemUserAttr表に適切なエントリを追加して、外部ユーザー識別子とユーザーのWebCenter Sitesシステム資格証明とのマッピング関係を定義します。

    手順については、第76.3.3項「外部ユーザー識別子のWebCenter Sites資格証明へのマッピング」を参照してください。

  5. CAS Webアプリケーションを再起動します。

    サンプルのログイン・フォームは次のように表示されます。

    samplesso.pngの説明が続きます
    samplesso.pngの説明

76.4.1 サンプル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認証ハンドラがユーザー名とパスワードを検証します。

76.4.2 サンプルSpring構成ファイル

サンプルSSO実装のクラスおよびプロパティは、(Misc/Samples/WEM Samples/CustomizableSSO/src/main/webapp/WEB-INF/spring-configurationにある)サンプルSpring構成ファイルcustomSampleSSObeans.xmlで定義されています。

この項の残りの部分は、次のトピックで構成されます。

76.4.2.1 サンプルSpring構成ファイルの分析

サンプル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 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 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>

76.4.2.2 サンプルSpring構成ファイルの配置

サンプル・クラスをインスタンス化するには、サンプルSpring構成ファイルをspring-configurationフォルダ(cas/WEB-INF)に配置して、デフォルトSpring構成ファイルから.xml拡張子を削除します。詳細は、第76.3.2.2項「Spring構成ファイルの配置」を参照してください。

76.4.3 サンプルCSSOコンポーネント

サンプルCSSO実装のコンポーネントは、/WEM Samples/CustomizableSSOフォルダにあります。次のフォルダがサンプルCSSO実装に含まれています。

表76-3 サンプルCSSOコンポーネント

フォルダ 説明

Misc/Samples/WEM Samples/CustomizableSSO

customizable-sso-1.0.jarファイルが含まれます。このjarファイルは、サンプルで実行可能なコードのクラスを提供します。サンプルSSO実装をデプロイする場合は、CASクラスパス(cas/WEB-INF/libフォルダ)にこのjarファイルを配置します。

Misc/Samples/WEM Samples/CustomizableSSO/lib

サンプルSSO実装でJavaソース・ファイルをコンパイルするために必要なすべてのサード・パーティのjarファイルが含まれます。

Misc/Samples/WEM Samples/CustomizableSSO/src/main/dist

個々のソース・コンポーネントとサンプル実装の操作を説明するWordドキュメントが含まれます。

注意: サンプルのソース・コードを表示する前に、これらのドキュメントを確認することをお薦めします。

Misc/Samples/WEM Samples/CustomizableSSO/src/main/java

Javaソース・ファイルのルート・フォルダ。

Misc/Samples/WEM Samples/CustomizableSSO/src/main/webapp/fatwire

SampleLoginForm.jspが含まれます。JSPは、ユーザーのログイン資格証明を取得するためにサンプルで使用されるブラウザ・フォームを提供します。サンプルを実装するには、CASアプリケーション・コンテキスト・フォルダにfatwireフォルダを作成し、そのフォルダにSampleLoginForm.jspをコピーする必要があります。

Misc/Samples/WEM Samples/CustomizableSSO/src/main/webapp/WEB-INF/spring-configuration

サンプルSpring構成ファイルcustomSampleSSObeans.xmlが含まれます。このファイルは、サンプルSSO実装に必要なSpring Bean定義を定義します。このファイルは、spring-configurationフォルダ(cas/WEB-INF)に配置する必要があります。spring-configurationフォルダに存在するファイル(customDefaultWEMSSObeans.xml)には、.xml以外の拡張子を付けるか、削除する必要があります。

注意: customDefaultWEMSSObeans.xmlファイルのコピーを保存し、標準のWEMログイン画面に戻る場合にそのコピーをリストアできるようにします。