标准SSO例程涉及主动将用户从SP重定向到IDP并返回。虽然这种机制有几个很大的优点,但缺点是重定向可能会使用户感到困惑。 ("嘿,我只是在azure.com上,现在我是live.com吧?")。
我想支持在SP的网站中包含用户名/密码登录表单的方案。在此特定方案中,我既是SP和IDP的所有者,也完全控制其实施。如何实现这样的情况?我可以想象以下方法:
<form action="https://idp.contoso.com/login" method="post">
<input type="hidden" name="issuer" value="sp.contoso.com">
Username: <input type="text" name="username"><br>
Password: <input type="text" name="password"><br>
<input type="submit" value="Submit">
</form>
这是一个可行的解决方案吗?如果是这样,这可以通过WSO2 Identity Server等符合标准的产品以任何方式支持吗?如果没有,在使用SP的登录表单时,针对IDP对用户进行身份验证的正确方法是什么?
答案 0 :(得分:3)
将登录推迟到外部机构的整个想法是不必处理登录界面。在许多情况下,Idp使用智能卡,一次短信代码或类似代码,因此登录时不仅仅是一个简单的用户名/密码组合。
如果您同时控制SP和Idp并希望避免重定向到Idp,我认为最好在Idp端创建一个API,让SP提供用户名/密码并获得身份验证结果直。该结果可以是SAML断言的形式,也可以是自定义的。
答案 1 :(得分:1)
我刚刚使用WSO2IS尝试了相同类型的场景,它包含一些称为请求路径的autenticators,用于验证登录请求中的用户凭据。是..例如,如果您采用SAML2 SSO方案,SP可以使用POST绑定向IDP发送SAML2 Auth请求。在同一请求中,SP可以发送从SP应用程序的登录页面检索的最终用户凭证。然后,您将看不到IDP中的登录页面,并且从auth请求中检索凭证并使用IDP的用户存储进行验证。如果生成SAML2响应成功。我已经用样本Serivice提供者应用程序和WSO2IS写了一些关于它的博客,我希望它可能对你有所帮助。请从here
查看