我们有一个 SSRS(SQL Server Reporting Services)实例,它使用 Kerberos 约束委派代表其用户从 SQL Server 获取其报告的数据。
为此,SSRS 配置为使用<RSWindowsNegotiate/>
身份验证选项。
不幸的是,此选项也允许 NTLM 登录。用户成功使用 NTLM 登录,然后在尝试启动报告时收到错误(因为委派显然失败了)。
还有<RSWindowsKerberos>
选项,但不幸的是浏览器不支持它。
更值得一提的是,在进行这样的 NTLM 登录后,SSRS 不会在一段时间内尝试代表用户获取 Kerberos 票证 - 即使用户现在使用 Kerberos 登录,即使是从另一个浏览器或另一个站点登录。我猜,这是因为 SSRS 在用户成功登录后为用户启动了一些会话对象,并将新登录与此会话关联起来 - 因此在它过期之前(大约 10 分钟),不会尝试任何委派。
有没有办法让 NTLM 登录失败,或者至少向用户发出警告,让他关闭浏览器,等待一段时间,然后通过 Kerberos 重新登录?