IDP和SP身份验证流程无需重定向到IDP

时间:2015-02-11 20:51:13

标签: security oauth identity saml wso2is

标准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>
  1. 在SP的网站中加入上述表格。
  2. IDP接受POST,验证凭据并创建SAML响应
  3. IDP通过自动提交表单返回网站,该表单是发布者SAML2端点网址的SAML响应(例如https://sp.contoso.com/saml
  4. SP接受POST,验证SAML响应并根据SP特定条件构建用户会话
  5. 这是一个可行的解决方案吗?如果是这样,这可以通过WSO2 Identity Server等符合标准的产品以任何方式支持吗?如果没有,在使用SP的登录表单时,针对IDP对用户进行身份验证的正确方法是什么?

2 个答案:

答案 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

查看