Выбор поставщика многофакторной аутентификации CAS - PullRequest
0 голосов
/ 06 марта 2020

Я работаю с cas-overlay-template проектом в версии 6.1.4 . На моем CAS реализованы два поставщика mfa: Google Authenticator и CAS Simple . Оба работают, я тестировал их отдельно и получил ожидаемые результаты.

До сих пор я активировал mfa, модифицируя файл cas.properties, добавив следующие свойства: cas.authn.mfa.globalProviderId=mfa-gauth, когда я хотел использовать Google, или cas.authn.mfa.globalProviderId=mfa-simple, когда я использовал сам CAS.

Ну, в документации CAS упоминается, что возможно включить меню выбора поставщика, если разрешено более одного, просто добавив это свойство ie: cas.authn.mfa.provider-selection-enabled=true. Итак, моя конфигурация следующая:

cas.authn.mfa.provider-selection-enabled=true
cas.authn.mfa.globalProviderId=mfa-gauth
cas.authn.mfa.globalProviderId=mfa-simple

Но когда я пытаюсь войти в систему с любым пользователем (я использую один по умолчанию casuser: Mellon), CAS не показывает мне меню, в котором я Можно выбрать следующего поставщика mfa, он напрямую переходит к поставщику mfa-simple.

Что я делаю не так?

1 Ответ

0 голосов
/ 07 марта 2020

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

Пока все хорошо.

Итак, моя конфигурация следующая:

В этом проблема. Вы не разрешаете / запускаете более одного поставщика. Вы начинаете с mfa-gauth, а затем переопределяете его с mfa-simple. В CAS 6.1.x globalProviderId принимает только один идентификатор. Это не список или контейнер любого типа, который может принимать более одного значения. Эта проблема будет решена в следующем выпуске.

В настоящее время для разрешения более чем одного поставщика вам нужно будет назначить поставщиков MFA зарегистрированному определению службы. Например:

{
  "@class": "org.apereo.cas.services.RegexRegisteredService",
  "serviceId": "^(https|imaps)://.*",
  "name": "Example",
  "id": 1,
  "description": "This service definition defines a service.",
  "evaluationOrder": 1,
  "multifactorPolicy" : {
    "@class" : "org.apereo.cas.services.DefaultRegisteredServiceMultifactorPolicy",
    "multifactorAuthenticationProviders" : [ "java.util.LinkedHashSet", [ "mfa-duo", "mfa-gauth" ] ]
  }
}

Это означает, что выбор поставщика может быть включен для каждого приложения. В качестве альтернативы, вы можете написать небольшой скрипт groovy, чтобы вернуть более одного провайдера обратно в CAS, позволяя меню выбора отображать пункты меню.

Прочитайте этот пост для получения полной информации.

...