Drupal 8 в качестве CAS Server

Аватар пользователя vadimon_bu vadimon_bu 11 сентября в 19:45

Всем привет наткнулся на модуль https://www.drupal.org/project/cas_server , не могу найти под него мануал.

Подскажите как мне его настроить? Где есть мануал?

Идея сделать единый вход с сайтом на движке moodle.

Drupal в качестве сервера
Moodle в качестве клиента

0 Thanks

Лучший ответ

Аватар пользователя levmyshkin levmyshkin 12 сентября в 14:48
1

Здесь задавали уже подобные вопросы:
https://www.phase2technology.com/blog/implementing-cas
https://www.drupal.org/project/cas/issues/2248757
https://www.drupal.org/project/cas/issues/1378316
https://www.drupal.org/project/cas/issues/2929326

https://www.google.com/search?q=drupal+cas+server&oq=drupal+cas+server&a...

Я пробовал на одном проекте это делать, на стороне друпала все настроил, но после обновления постоянно CAS Server сыпал ошибками. И moodle был на http, поэтому настроить так и не получилось.

Комментарии

Аватар пользователя Semantics Semantics 11 сентября в 20:03

Задача довольно узкая.
Боюсь, что вы ответ найдете быстрее даже методом тыка

Аватар пользователя levmyshkin levmyshkin 12 сентября в 7:01
1

Я думаю того что написано в readme.md в корне модуля должно хватить. CAS Server предоставляет credentials и их нужно вставить в moodle. Едиственно что сайт moodle должны быть на https.
Мануал есть по модулю CAS:
https://drupal.gatech.edu/handbook/installing-cas
https://www.drupal.org/project/cas

Аватар пользователя vadimon_bu vadimon_bu 12 сентября в 11:12

Спасибо за информацию , в корне модуля нет файла readme.
Как я понимаю модуль CAS и CAS Server разные. CAS нужен для подключения к серверу, а CAS Server делает друпал сервером единого входа.
Мне интересует только CAS Server.
После установки этого модуля я не понимаю какие креденшелы нужно внести moodle , т.к не создается отдельной страницы например https://example.ru/cas

Оба сайта на данный момент https

Аватар пользователя levmyshkin levmyshkin 12 сентября в 14:48
1

Здесь задавали уже подобные вопросы:
https://www.phase2technology.com/blog/implementing-cas
https://www.drupal.org/project/cas/issues/2248757
https://www.drupal.org/project/cas/issues/1378316
https://www.drupal.org/project/cas/issues/2929326

https://www.google.com/search?q=drupal+cas+server&oq=drupal+cas+server&a...

Я пробовал на одном проекте это делать, на стороне друпала все настроил, но после обновления постоянно CAS Server сыпал ошибками. И moodle был на http, поэтому настроить так и не получилось.

Аватар пользователя vadimon_bu vadimon_bu 12 сентября в 15:25

Действительно, спасибо.
Почитав выяснил что оказывается адрес для cas , https://example.com/cas/login

В moodle установив hostname:example.com; baseurl : /cas, port: 443
При попытке входа с сайта moodle вылазит ошибка уже на Drupal Invalid Service, поняв что в настройке плагина Cas Server https://example.com/admin/config/people/cas_server/services , необходимо добавить сервис где указал адрес moodle во вкладке Service URL Pattern (https://moodle.example.com) и какие параметры передавать и участвовать ли с данным сайтом для единого входа.

Но к сожалению не удалось добиться успеха, теперь при нажатии на вход на сайте moodle перенаправляет на сайт drupal для аунтификации через cas , но выдает Invalid Service.
Оба сайта на https
Есть мысли?

Перенаправляет на https://example.com/cas/login?service=https%3A%2F%2Fmoodle.example.com%2...

Аватар пользователя levmyshkin levmyshkin 12 сентября в 14:50

Да, видимо документацию не делали для модуля, поэтому столько вопросов на форумах по поводу настройки этого модуля. Там вроде бы все из коробки должно работать.

Аватар пользователя vadimon_bu vadimon_bu 12 сентября в 15:44

Поправка все таки мне удалось добиться окна аутентификации с moodle . Но при попытке входа вылазит ошибка На сайте произошла непредвиденная ошибка. Пожалуйста, повторите попытку позже.
В логах следующее

Аватар пользователя vadimon_bu vadimon_bu 12 сентября в 18:59

Drupal\Core\Database\DatabaseExceptionWrapper: SQLSTATE[22P02]: Invalid text representation: 7 ERROR: invalid input syntax for integer: "2019-09-12 18:56:46" LINE 1: ...'ST-hZUec08prWhJWrfbvIp7eJ_e6NYg4_ItZRoXtx3N4hs', '2019-09-1... ^: INSERT INTO cas_server_ticket_store (id, expiration, type, session, uid, "user", service, renew) VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3, :db_insert_placeholder_4, :db_insert_placeholder_5, :db_insert_placeholder_6, :db_insert_placeholder_7); Array ( ) in Drupal\cas_server\Ticket\TicketFactory->createServiceTicket() (line 111 of /var/www/example.com/web/modules/contrib/cas_server/src/Ticket/TicketFactory.php).

Аватар пользователя levmyshkin levmyshkin 12 сентября в 21:13
1

Вот тикет и патч по этой ошибке:
https://www.drupal.org/project/cas_server/issues/2811661

По поводу Invalid Service вот тикеты:
https://www.drupal.org/project/cas_server/issues/2943894

По модулю CAS больше:
https://www.drupal.org/project/cas/issues/2943818
https://www.drupal.org/project/cas/issues/2232805
https://www.drupal.org/project/cas/issues/2824075

Что стоит сразу проверить, что время на обоих серверах стоит правильное для своего региона и что из-за часовых поясов на разных серверах не может произойти разных дат.

Я не знаю для чего этот модуль, но можно почитать про него, может быть он добавляет какие-то опшины:
https://www.drupal.org/project/cas_attributes

P.S.: есть какая-то ошибка просто пишите в гугле по шаблону не раздумывая:
"Drupal module_name что-то_из_строчки_ошибки"

Обычно в первых пяти результатах выдает какой-то ишью.

Аватар пользователя vadimon_bu vadimon_bu 13 сентября в 13:11

Спасибо,очень много полезной информации.
Патч не принимался , но я руками дописал где - убрал, где + добавил. Ошибка ушла, но теперь другая вылезла. К сожалению чего-то не могу найти по ней информации

Drupal\Core\Database\DatabaseExceptionWrapper: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens: INSERT INTO cas_server_ticket_store (id, expiration, type, session, uid, "user", service, renew) VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3, :db_insert_placeholder_4, :db_insert_placeholder_5, :db_insert_placeholder_6); Array ( ) in Drupal\cas_server\Ticket\TicketFactory->createServiceTicket() (line 111 of /var/www/example.com/web/modules/contrib/cas_server/src/Ticket/TicketFactory.php).

Что касается даты, время стоит правильное на сервере соответствующего региона , оба сайта крутятся на одном сервере.