3

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

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

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

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

4

2 回答 2

3

ADFS 在 IdP 端登录用户的默认行为是 401 (NTLM) 挑战,所有主流浏览器都会缓存用户的 id/pw 输入。即使您指定“ForceAuthn=\“true\””,它也无济于事,因为客户端浏览器将再次发送您缓存的 id/pw。

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

于 2013-05-23T05:51:55.013 回答
1

我偶然发现了 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 的请求的确切含义:

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

于 2018-05-21T04:31:00.383 回答