我正在使用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>
答案 0 :(得分:0)
只有在您启用OAuth 服务器支持时才会出现错误,但您希望启用OAuth 客户端支持(基于pac4j
)能够将身份验证委派给Google。您有正确的文档链接,但是您应该检查每个步骤(没有“OAuthRegisteredService”)。