我需要创建一个ASP .NET网页(托管在WindowsServer2008R2和IIS7.5上),域用户和匿名用户应该可以看到该网页,而不需要提示他们两人的凭据请求。应该授权域用户查看整个页面,而匿名用户则可以查看页面的公共部分。
我使用以下字符串来区分匿名用户和域用户:
HttpContext.Current.Request.LogonUserIdentity.Name; WindowsAccountName =
如果WindowsAccountName为空用户,则为匿名用户,否则为域用户。不幸的是,当启用匿名身份验证时,WindowsAccountName始终是空的(即使对于域用户也是如此),但是当禁用匿名身份验证时,非域用户将被提示输入凭据。
你对这些问题有什么解决办法吗?请记住,域用户分布在不同的网络中,因此IP地址并不是区分域用户和非域用户的好选择。
对我来说,这似乎是一次接球。
谢谢。
发布于 2016-01-23 13:35:17
这个术语是混合模式认证.我已经做过好几次了。
这可以通过使用windows身份验证站点来实现,该站点不会再从AD中提取用户凭据并将这些凭据传递给匿名站点。我使用了一个自定义票据(数据库中的GUID),它在5秒内过期。匿名站点获取传递的GUID,查询DB并获取用户id。我用一个加密的URL参数(包含用户id和时间戳)来实现这一点。
内部站点
创建一个重定向URL站点:将此站点设置为Window Auth,以便您可以从中提取用户ID。给您的用户这个URL和/或使它的链接,他们点击您的内联网。然后,这个站点调用您的匿名站点并传递用户凭据(登录id)。
这可以通过URL上的加密字符串或cookie中的加密值来完成。您也可以使用过期日期/时间值加密。
(从Forms )创建一个带有该用户ID的窗体身份验证票据。运行任何其他登录逻辑。好了。
外部站点-不需要更改。让用户按原样登录。
https://stackoverflow.com/questions/34963618
复制相似问题