2017-01-05 18 views
0

CASサーバーへのproxyValidate/ticket呼び出し後にXML応答を取得できません。アプリケーションが異なるサーバーに分散されているため、すべてが有効であり、コールバックURLは適切なPGTとPGTIOU BUTで呼び出されています。私はPGTIOUをバックエンドにマップする必要があります。それを取得する。CAS proxyCallbackURL XML応答

CASのためのプロトコルで指定に従ってユーザーとPGTIOUを含むこれ、私が成功したproxyValidate(またはseviceValidate)からのXML応答に手に入れることができるかどうかは明らかに些細なことでしょう2.0+

マイ設定以下れる:

私は成功したXML応答を受け取ることができるようになります

<!-- begin CAS servlet filter --> 
 
    <filter> 
 
     <filter-name>CAS Authentication Filter</filter-name> 
 
     <filter-class>org.sakaiproject.login.filter.SakaiCasAuthenticationFilter</filter-class> 
 

 
     <init-param> 
 
      <param-name>casServerLoginUrl</param-name> 
 
      <param-value>https://cas.someplace.edu/login</param-value> 
 
     </init-param> 
 

 
     <init-param> 
 
      <param-name>serverName</param-name> 
 
      <param-value>https://${serverName}</param-value> 
 
     </init-param> 
 
    </filter> 
 

 
    <filter> 
 
     <filter-name>CAS Validation Filter</filter-name> 
 
     <filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class> 
 

 
     <init-param> 
 
      <param-name>casServerUrlPrefix</param-name> 
 
      <param-value>https://cas.someplace.edu</param-value> 
 
     </init-param> 
 

 
\t \t <init-param> 
 
\t  <param-name>proxyCallbackUrl</param-name> 
 
\t  <param-value>https://test-sakai.someplace.edu/sakai-login-tool/pgtHandler</param-value> 
 
\t  </init-param> 
 

 
     <init-param> 
 
      <param-name>serverName</param-name> 
 
      <param-value>https://${serverName}</param-value> 
 
     </init-param> 
 
     
 
    </filter> 
 

 
    <filter> 
 
     <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name> 
 
     <filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class> 
 
    </filter> 
 

 
    <filter-mapping> 
 
     <filter-name>CAS Authentication Filter</filter-name> 
 
     <url-pattern>/container</url-pattern> 
 
    </filter-mapping> 
 

 
    <filter-mapping> 
 
     <filter-name>CAS Validation Filter</filter-name> 
 
     <url-pattern>/*</url-pattern> 
 
    </filter-mapping> 
 

 
    <filter-mapping> 
 
     <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name> 
 
     <url-pattern>/*</url-pattern> 
 
    </filter-mapping>

?検証はCas20ProxyReceivingTicketValidationFilterによって行われますが、アクセスできないようです。

ありがとうございました。

答えて

1

Cas20ProxyReceivingTicketValidationFilterには、(PGTIOU、PGT)の内部キャッシュがあり、デフォルトではメモリ内にあります。https://github.com/apereo/java-cas-client/blob/master/cas-client-core/src/main/java/org/jasig/cas/client/validation/Cas20ProxyReceivingTicketValidationFilter.java#L78分散アプリケーションの場合は、独自の分散キャッシュを提供する必要があります。

機構

は、以下である:

クライアントが認証 - > CASはcallbackURL 指定を介してバックPGTIOU/PGTを送信 - > CASプロキシ/サービス検証フィルタ処理して元の要求に応答して、取得しようとし潜在的に格納されたPGTをPGTIOUとともにXML本体に格納します。

これをすべて機能させるには、proxyCallbackUrlおよびproxyGrantingTicketStorageClassをxml/springコンフィグレーションで定義する必要があります。

+0

私の意見では、コールバックURLがストレージ実装と連動してどのように機能するかについてのメカニズムは、あまり言わないほど曖昧です。しかし、コードを見れば、バックエンドで、PGTIOUをグルーとして、成功した認証とコールバックPGTに参加して実装を完了することができました。私の環境は、そのような些細な作業のためにecacheを動作させるのは本当に複雑です。 – Fer