CAS委托认证

时间:2015-08-26 18:48:01

标签: authentication cas

我正在使用CAS服务器4.x而我正试图使用​​谷歌委托身份验证。我的想法是,一个Web应用程序A重定向到CAS进行登录,用户在那里使用google"登录。然后他被重定向到使用谷歌登录。

为此,我创建了一个客户端应用程序(A)。

我运行A并将其重定向到CAS登录页面,在那里我使用google"登录"登录链接,它重定向我登录谷歌,我登录并同意。

在CAS端,谷歌收到的信息正常,并创建了TGT。但是,服务器无法重定向到A,因为它在会话中没有重定向信息:

错误[org.jasig.cas.support.oauth.web.OAuth20CallbackAuthorizeController] - 会话中缺少oauth20_callbackUrl,无法检索。

任何可能出错的想法?​​

这是我配置所有内容的方式:

首先,我按照这里提到的步骤: http://jasig.github.io/cas/development/integration/Delegate-Authentication.html

在登录视图中,我添加了: 使用谷歌登录

的applicationContext:

<bean id="google" class="org.pac4j.oauth.client.Google2Client">
    <property name="key" value="key" />
    <property name="secret" value="secret" />
</bean>

<bean id="clients" class="org.pac4j.core.client.Clients">
  <property name="callbackUrl" value="http://localhost:8080/cas/login" />
  <property name="clients">
    <list>
      <ref bean="google" />
    </list>
  </property>
</bean>

cas servlet:

<bean id="clientAction" class="org.jasig.cas.support.pac4j.web.flow.ClientAction">
    <constructor-arg index="0" ref="centralAuthenticationService"/>
    <constructor-arg index="1" ref="clients"/>
</bean>

deployerConfigContext:

<property name="authenticationMetaDataPopulators">
    <util:list>
       <bean class="org.jasig.cas.support.pac4j.authentication.ClientAuthenticationMetaDataPopulator" />
    </util:list>
</property>

 <bean id="primaryAuthenticationHandler"        
    class="org.jasig.cas.support.pac4j.authentication.handler.support.ClientAuthenticationHandler"> 
    <constructor-arg index="0" ref="clients"/>
</bean>

然后我在deployerConfigContext中添加了一个OAuth客户端: registeredServicesList:                                                 

  <bean class="org.jasig.cas.support.oauth.services.OAuthRegisteredService">
    <property name="id" value="1" />
    <property name="name" value="serviceName" /> 
    <property name="description" value="Service Description" />

    <property name="serviceId" value="http://localhost:8080/A/" />
    <property name="clientId" value="123" />
    <property name="clientSecret" value="123" />
 </bean>

1 个答案:

答案 0 :(得分:0)

只有在您启用OAuth 服务器支持时才会出现错误,但您希望启用OAuth 客户端支持(基于pac4j)能够将身份验证委派给Google。您有正确的文档链接,但是您应该检查每个步骤(没有“OAuthRegisteredService”)。