Реализация аутентификации Google (OAuth) в CAS - PullRequest
0 голосов
/ 20 декабря 2018

Я пытаюсь реализовать аутентификацию Google (OAuth) в CAS 4.1.9.

Прежде всего я создал новый проект на console.developers.google.com, в котором сгенерировал новый идентификатор клиента для своего приложения.

Затем я установил CAS с использованием оверлеев Maven.В свой 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.

Проблема в том, что ссылка на Google на моей веб-странице входа в CAS не содержит правильный URL-адрес OAuth, но тот же URL-адрес перенаправления, который я определил для своего клиента на console.developers.google.com.

В качестве второй попытки я попытался заменить $ {Google2ClientUrl} на URL-адрес OAuth:

<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 голосов
/ 22 декабря 2018

Мне удалось решить проблему, установив более новую версию CAS (5.3.6).Здесь настройка аутентификатора Google намного проще.На самом деле требуется только два шага:

1) добавить зависимость pac4j в файл pom.xml

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

2) добавить параметр аутентификатора Google в файле cas.properties:

       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.

...