服务提供商如何在IdP服务器上强化密码提示?

时间:2013-03-15 21:49:28

标签: saml saml-2.0

带有“POST”绑定的SAML 2.0:服务提供商有没有办法让IdP对特定请求进行用户重新认证?我的意思是网络用户第一次输入登录名/密码,而不是将某种cookie存储在浏览器内存中,以便它记住用户,并且下次在会话中不再要求他输入密码。我希望SP能够强制执行重新身份验证,这意味着要求用户再次输入密码的命令

我找到的唯一类似的东西(ForceAuthn)并没有帮助我:

<samlp:AuthnRequest ForceAuthn="true" ... >

根据文档ForceAuthn正是我所需要的,但由于某种原因,Microsoft ADFS 2.0完全忽略了它而不是要求用户输入密码

2 个答案:

答案 0 :(得分:3)

ADFS&#39;在IdP端登录用户的默认行为是401(NTLM)质询,并且所有主流浏览器将缓存用户的id / pw输入。即使您指定&#34; ForceAuthn = \&#34; true \&#34;&#34;,它也无济于事,因为客户端浏览器将再次发送您的缓存ID / pw。

有一种方法可以更改ADFS登录策略的默认行为,以采用html表单登录。假设您在默认位置安装ADFS,可以找到c:\ inetpub \ adfs \ ls \ web.config。并且有<localAuthenticationTypes>元素,并确保将<add name="Forms" page="FormsSignIn.aspx" />作为其中的第一个元素。您也可以根据需要自定义登录表单页面。

答案 1 :(得分:0)

我偶然发现了ForceAuthn参数和ADFS的类似问题。

特别要求ACR与ForceAuthn属性结合使用似乎对我有用:

<samlp:AuthnRequest ForceAuthn="true" [...]>
    <samlp:RequestedAuthnContext Comparison="exact">
        <saml:AuthnContextClassRef>
            urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
        </saml:AuthnContextClassRef>
    </samlp:RequestedAuthnContext>
    [...]
</samlp:AuthnRequest>

这实际上是我打算发送给ADFS的请求的确切含义:

  

忽略您的身份验证上下文并确保用户的密码是   提供。