Недавно я развернул сервер и веб-сайт, который аутентифицируется с помощью системы аутентификации Shibboleth моего университета. Функционально работает отлично. Эстетически здесь много
Когда вы переходите на страницу входа, страница входа перенаправляется на страницу аутентификации пользователя сервера Shibboleth. Хотя это работает, я бы предпочел разместить на своем веб-сайте текстовые поля для имени пользователя и пароля и при отправке передать их в Shibboleth.
Можно ли использовать альтернативную веб-форму и передать информацию в Shibboleth?
Наличие вашей собственной пользовательской формы входа лишило бы смысла использование Shibboleth. Он предназначен для отправки ваших пользователей на их IdP, которые они могут распознать как заслуживающие доверия и аутентифицировать их там, только затем для делегирования утверждений аутентификации и авторизации поставщику услуг.
Если вас не устраивает внешний вид WAYF вашей федерации или IdP учреждения, обратитесь к своей федерации или IdP.
(В качестве примечания, брендинг и внешний вид WAYF и IdP для улучшения пользовательского опыта были одной из тем, обсуждаемых на Конференция по управлению федеративным доступом (FAM10): вероятно, в британской федерации появятся новые вещи, если вы будете ее частью.)
Если кто-то все еще хочет использовать этот подход, мы обнаружили, что это можно сделать, но следует тщательно оценить безопасность (например, SSL-шифрование повсюду, локальные ссылки, как показано ниже).
Вызов директивы SSO клиента с указанной конечной точкой перенаправления (например, / shib / protected /) https://acmesite.com/Shibboleth.sso/Login?target=%2Fshib%2Fprotected%2F
а. Это действительно можно сделать только с помощью перенаправления, поскольку вы начинаете сталкиваться с проблемами CORS, если пытаетесь выполнить это с помощью AJAX или даже JSONP.
Публикация с использованием правильно названных элементов
<form id = "login" action = "https://sso-dev.acme.com/idp/Authn/UserPassword" method = "post">
<input class = "form-element поле формы" name = "j_username" type = "text" value = "">
<input class = "form-element form-field" name = "j_password" type = "password" value = "">
<button class = "form-element form-button" type = "submit"> Войти </button>
</form>