В CAS как я могу ограничить доступ только к одной услуге, если соглашение еще не принято? - PullRequest
0 голосов
/ 16 января 2019

Требуется, чтобы пользователи сначала приняли некоторое лицензионное соглашение , которое существует только в serviceA , чтобы иметь возможность войти во все другие службы.

Так процесс должен быть:

  • пользователь входит в систему через CAS.
  • Поскольку он не принял соглашение, он может войти только в сервис A
  • когда он принимает соглашение об услуге A, он может также подключиться к другим службам.

Примечания:
Код для услуг, отличных от serviceA, не может быть изменен.
Кроме того, CAS имеет доступ к флагу Agreement_accepted.

Используемая версия CAS: 5.3.4

1 Ответ

0 голосов
/ 22 января 2019

Предполагая, что agreement_accepted является атрибутом для аутентифицирующего пользователя, вы можете разработать две стратегии доступа, S1 и S2, которые применяются к службе A и всем другим приложениям.

  • Для S1 стратегия по умолчанию в CAS, где доступ к услуге A предоставляется без проблем.
  • Для S2 вы можете настроить стратегию так, чтобы только предоставлять доступ к приложению и разрешать CAS выдавать билет, если agreement_accepted в качестве атрибута имеет значение, скажем, true.

Стратегии доступа к услугам / приложениям подробно описаны здесь: https://apereo.github.io/cas/5.3.x/installation/Configuring-Service-Access-Strategy.html

Посмотрите на это в качестве примера: https://apereo.github.io/cas/5.3.x/installation/Configuring-Service-Access-Strategy.html#enforce-attributes

Вам необходимо убедиться, что S2 назначен всем другим приложениям, кроме записи для Сервиса A.

PS Вы можете также рассмотреть вопрос о повышении версии CAS до версии 5.3.8, которая является последней в 5.3.x на момент написания этой статьи.

...