在CAS

时间:2018-12-20 11:31:25

标签: oauth oauth-2.0 google-oauth cas google-oauth2

我正在尝试在CAS 4.1.9中实现Google身份验证(OAuth)。

首先,我在console.developers.google.com上创建了一个新项目,在其中为我的应用程序生成了一个新的客户端ID。

然后,我已经使用Maven叠加层安装了CAS。在我的pom.xml中,包含了pac4j依赖项,如下所示:

<dependency>
    <groupId>org.pac4j</groupId>
    <artifactId>pac4j-oauth</artifactId>
    <version>3.4.0</version>
    <scope>runtime</scope>
</dependency>

此外,这是我在applicationContext.xml文件中添加的内容:

<bean id="GoogleAuthenticationHandler"
   class="org.pac4j.oauth.client.Google2Client"
   p:key="<MYKEY>"
   p:secret="<MYSECRET>"
   p:scope="EMAIL_AND_PROFILE" />

<bean id="clients"
   class="org.pac4j.core.client.Clients">
   <property name="callbackUrl" value="https://myapplication.com/cas" />
   <property name="clients">
     <list>
       <ref bean="GoogleAuthenticationHandler" />
     </list>
   </property>
</bean>

最后,我在casLoginView.jsp中添加了以下行

<a href="${Google2ClientUrl}">Authenticate with Google</a> <br />

maven编译正常,并且war文件成功部署到了我的tomcat服务器上。

问题是,我的CAS登录网页中的Google href所包含的OAuth网址不正确,但我在console.developers.google.com上为客户端定义的重定向网址相同。

第二次尝试,我尝试用OAuth网址替换$ {Google2ClientUrl}:

<a href="https://accounts.google.com/o/oauth2/auth?redirect_uri=https://myapplication.com/cas&response_type=code&client_i
d=<MY CLIENT ID>&scope=https://www.googleapis.com/auth/analytics.re
adonly+https://www.googleapis.com/auth/userinfo.email&approval_prompt=force&access_type=offline">Authenticate with Google</a> <br />

在这种情况下,将显示Google登录页面并接受用户身份验证,但是CAS似乎无法识别出由Google成功进行的用户身份验证(即,它不显示包含身份验证成功消息的普通页面)。

我错过了什么吗?

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我设法通过安装更高版本的CAS(5.3.6)解决了该问题。在这里Google身份验证器的配置要容易得多。实际上只需要两个步骤:

1)在pom.xml文件中添加pac4j依赖项

     <dependency>
               <groupId>org.apereo.cas</groupId>
               <artifactId>cas-server-support-pac4j-webflow</artifactId>
               <version>${cas.version}</version>
     </dependency>

2)在cas.properties文件中添加Google身份验证器参数:

       cas.authn.pac4j.google.id=<MY_CLIENT_ID>
       cas.authn.pac4j.google.secret=<MY_SECRET>
       cas.authn.pac4j.google.clientName=<MY_CLIENT_NAME>
       cas.authn.pac4j.google.autoRedirect=false
       cas.authn.pac4j.google.principalAttributeId=
       cas.authn.pac4j.google.scope=EMAIL_AND_PROFILE

完成此操作后,CAS登录页面会自动显示指向Google身份验证的链接。