我最近部署了一个服务器和网站,使用我所在大学的 Shibboleth 身份验证系统进行身份验证。从功能上讲,它运行良好。从美学上讲,它有很多
当您进入登录页面时,登录页面会重定向到 Shibboleth 的服务器用户身份验证页面。虽然它可以工作,但我宁愿在我的网站上放置用户名和密码文本框,并在提交时将它们传递给 Shibboleth。
是否可以使用备用 Web 表单并将信息传递给 Shibboleth?
答案1
拥有自己的自定义登录表单会使使用 Shibboleth 失去意义。它旨在将您的用户发送到他们的 IdP,他们可以将其识别为值得信赖并在那里进行身份验证,然后将身份验证和授权断言委托给服务提供商。
如果您对联盟 WAYF 或机构 IdP 的外观和感觉不满意,请与您的联盟或 IdP 联系。
(顺便提一下,WAYF 和 IdP 的品牌和外观设计如何改善用户体验是本次会议上讨论的主题之一。联合访问管理 (FAM10) 会议:如果你是英国联邦的一部分,那么英国联邦很可能会出现新事物。)
答案2
如果有人仍然想使用这种方法,我们发现这是可以做到的,但应该对安全性进行严格评估(例如,整个过程 SSL 加密,如下所示的本地引用)。
调用具有指定重定向端点的客户端 SSO 指令(例如 /shib/protected/) https://acmesite.com/Shibboleth.sso/Login?target=%2Fshib%2Fprotected%2F
a. 这实际上只能通过重定向来实现,因为如果你尝试使用 AJAX 甚至 JSONP 来实现,就会遇到 CORS 问题
使用正确命名的元素发布
<form id="login" action="https://sso-dev.acme.com/idp/Authn/UserPassword" method="post">
<input class="form-element form-field" 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>