我正在为我的公司开发一个ASP.net Web应用程序.有些用户在内部网络(Intranet)中使用此站点,有些用户使用Internet站点.我正在使用Windows身份验证模式.
我需要找到一种方法,不为Intranet用户提示 Windows身份验证模式,并为Internet用户提示 Windows身份验证模式.
我怎样才能做到这一点?
根据您的描述,IIS中的Windows身份验证将起到作用.
首先是一些链接:
Technet是一篇关于IIS中的Windows身份验证的文章
MSDN告诉您如何在此处使用Windows身份验证和ASP.NET 2.0应用程序
但请注意以下事项:
如果满足以下所有条件,将发生单点登录(SSO)(即访问应用程序而不提供用户名和密码):
客户端计算机和服务器是同一Active Directory域的一部分.
客户端计算机上的用户会话是AD域中的用户.
客户端计算机可以访问域服务器(即负责用户登录的服务器)
浏览器是Internet Explorer.
使用的URL指向服务器的FQDN(即http://SERVERNAME.DOMAIN.NAME/,而不仅仅是http:// SERVERNAME /
如果您使用模拟,则授权用户必须具有对应用程序目录的读取权限.该应用程序将基本上与他们的凭证一起运行.(MSDN文章中的更多细节)
在任何其他情况下,将提示用户输入Active Directory域中的帐户的凭据(用户名和密码).因此,用户从互联网访问您的网络服务器会弹出一个要求他们提供用户名和密码的弹出窗口.
请注意,对于不使用单点登录(用户被提示输入用户名和密码)的用户,HTTP身份验证模式很可能是BASIC,这意味着任何可以拦截该连接的人都可以看到正在交换的用户名和密码.如果您使用此技术,请将客户端和服务器之间的连接加密(HTTPS或VPN).