首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IIS混合匿名和Windows身份验证

问IIS混合匿名和Windows身份验证
EN

Stack Overflow用户
提问于 2016-01-23 12:43:50
回答 1查看 8.4K关注 0票数 8

我需要创建一个ASP .NET网页(托管在WindowsServer2008R2和IIS7.5上),域用户和匿名用户应该可以看到该网页,而不需要提示他们两人的凭据请求。应该授权域用户查看整个页面,而匿名用户则可以查看页面的公共部分。

  • 当我启用身份验证时:域用户可以看到整个页面,但是匿名用户会被提示提供凭据。
  • 当我启用匿名身份验证或两者(匿名和窗口)时,:匿名用户可以看到页面的公共部分,但域用户看不到整个页面(他们就像匿名用户)。

我使用以下字符串来区分匿名用户和域用户:

HttpContext.Current.Request.LogonUserIdentity.Name; WindowsAccountName =

如果WindowsAccountName为空用户,则为匿名用户,否则为域用户。不幸的是,当启用匿名身份验证时,WindowsAccountName始终是空的(即使对于域用户也是如此),但是当禁用匿名身份验证时,非域用户将被提示输入凭据。

你对这些问题有什么解决办法吗?请记住,域用户分布在不同的网络中,因此IP地址并不是区分域用户和非域用户的好选择。

对我来说,这似乎是一次接球。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 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的窗体身份验证票据。运行任何其他登录逻辑。好了。

外部站点-不需要更改。让用户按原样登录。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34963618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档