Да, предлагаемый вами поток выглядит жизнеспособным.
Вы могли бы выполнить согласование Kerberos в качестве первой вещи, приземлившись на /login/
и перенаправить пользователя обратно в сеанс, если Kerberos сказал «да».Это может быть даже запрос XMLHttpRequest в фоновом режиме и перенаправление на /login/
, если сеанс перестает быть действительным.Если сеанс проверяется в фоновом режиме, срок действия файлов cookie может быть значительно короче, чем у маркеров Kerberos, и в любой момент времени у вас будет меньше действительных сеансов, о которых нужно беспокоиться.
Если сеанс не существует, предложите Kerberosи потенциальные другие методы входа для пользователя.
Если у пользователя есть действительный сеанс через Kerberos, но нет профиля пользователя, предоставьте пользователя в приложение.Здесь вы можете опросить пользователя для получения дополнительной информации на месте, принять решение на основе групп и ролей или создать пользователя в качестве заглушки с набором разрешений по умолчанию, известными пропущенными значениями и, таким образом, отложить процесс.
Это было все очень общее.Вам, вероятно, следует проверить, что вы пытаетесь сопоставить свои цели с тройным А или AAA , как в Аутентификации, Авторизации и Учете.Кажется очевидным, что Kerberos выполняет аутентификацию, и необходимо определить остальные роли.
О файлах cookie: действительно, имеет смысл преобразовать любую аутентификацию в файл cookie вашего приложения.Таким образом, позже вы можете добавить некоторые другие методы единого входа без изменения всего приложения.