32.3.4 Proxy Ticket Authenticationエージェントチケット認証

5619 ワード

CasAuthenticationProviderは、状態クライアントと無状態クライアントを区別します.ステータスクライアントは、CasAuthenticationFilterに送信されたfilterProcessUrlのクライアントとみなされる.無状態クライアントとは、filterProcessUrlではないURL上でCasAuthenticationFilterに認証要求を提出するクライアントのことです.
リモート・プロセッシング・プロトコルは、HttpSessionのコンテキストで自分自身を表示できないため、要求間のセッションにセキュリティ・コンテキストを格納するデフォルトの方法に依存することはできません.また、CASサーバはチケットがTicketValidatorによって検証された後にチケットを無効にするため、後続のリクエストで同じエージェントチケットを提示しても機能しません.
1つの明白な選択は、CASがリモート処理プロトコルクライアントに対してまったく使用されないことである.しかし、これはCASの多くの理想的な特性を排除する.中間の立場として、CasAuthenticationProviderはステータスラベルStatelessTicketCacheを使用しています.これは、CasAuthenticationFilterに等しい状態のないクライアントにのみ使用する.CAS_STATELESS_IDENTIFIER.発生したことは、CasAuthenticationProviderが生成したCasAuthenticationTokenをStatelessTicketCacheに格納し、keyは代理チケットである.したがって、リモート処理プロトコルクライアントは、同じプロキシチケットを提供することができ、CasAuthenticationProviderは、最初のリクエストを除いてCASサーバに連絡して検証する必要はありません.検証に合格すると、エージェントチケットは元のターゲットサービス以外のURLに使用できます.
このセクションは、エージェントチケットの認証に適応するために、前のセクションに基づいて構築されています.最初のステップは、以下に示すように、すべてのワークピースを検証することです.
1 2     class="org.springframework.security.cas.ServiceProperties">
3 ...
4 
5 

次に、CasAuthenticationFilterのサービス属性servicePropertiesおよび認証詳細リソースauthenticationDetailsSourceを指定します.ServicePropertiesプロパティは、filterProcessUrl上のワークのみを認証するのではなく、CasAuthenticationFilterがすべてのワークを認証しようとしていることを示します.サービス認証詳細リソースServiceAuthenticationDetailsSourceは、チケットの検証時にHttpServiceletRequestベースの現在のウェブサイトがサービスウェブサイトとして使用されることを保証するために、サービス認証詳細ServiceAuthenticationDetailsを作成する.サービス・アドレスを生成する方法は、カスタム・サービス認証詳細を返すサービスAuthenticationDetailsのカスタム認証詳細リソースAuthenticationDetailsSourceを注入することによってカスタマイズすることができる.
 1 class="org.springframework.security.cas.web.CasAuthenticationFilter">
 3 ...
 4   
 5   
 6       class="org.springframework.security.cas.web.authentication.ServiceAuthenticationDetailsSource">
 8         
 9       
10   
11 

また、CasAuthenticationProviderを更新して、エージェントチケットを処理する必要があります.このため、Cas 20 ServiceTicketValidatorをCas 20 ProxyTicketValidatorに置き換えます.ステータスチケットキャッシュstatelessTicketCacheと受け入れたいエージェントを構成する必要があります.すべてのエージェントを受け入れるために必要な更新例を以下に示します.
 1  2     class="org.springframework.security.cas.authentication.CasAuthenticationProvider">
 3 ...
 4   
 5       class="org.jasig.cas.client.validation.Cas20ProxyTicketValidator">
 6         
 7         
 8       
 9   
10    11   class="org.springframework.security.cas.authentication.EhCacheBasedTicketCache"> 12      13      class="net.sf.ehcache.Cache" init-method="initialise" destroy-method="dispose"> 15        16        17        18        19        20        21      22      23    24    25