我正在为我的公司开发一个ASP.net Web应用程序。有些用户在内部网络(Intranet)中使用此站点,有些用户使用Internet站点。我正在使用Windows身份验证模式。
我需要为Intranet用户找到不提示 Windows身份验证模式的方法,为Internet用户找到提示 Windows身份验证模式。
我该怎么做?
答案 0 :(得分:19)
根据您的描述,IIS中的Windows身份验证可以解决问题。
首先是一些链接:
但请注意以下事项:
如果满足以下所有条件,则会发生单点登录(SSO)(即访问应用程序而不提供用户名和密码):
在任何其他情况下,系统都会提示用户输入Active Directory域中帐户的凭据(用户名和密码)。因此,用户从互联网访问您的网络服务器会弹出一个要求他们提供用户名和密码的信息。
请注意,对于不使用单点登录(用户被提示输入用户名和密码)的用户,HTTP身份验证模式很可能是BASIC,这意味着任何可以拦截该连接的人都可以看到正在交换的用户名和密码。如果您使用此技术,请将客户端和服务器之间的连接加密(HTTPS或VPN)。
答案 1 :(得分:2)
确保您的网络服务器在域上运行,并且您的所有Intranet用户都对Web服务器上包含您网站的文件夹具有读取权限。
然后,确保您拥有web.config(假设您要检测哪个域用户正在访问您的网站。
最后,打开IIS管理器并右键单击该网站,然后选择“属性”。从那里单击“目录安全性”选项卡,然后单击“身份验证和访问控制”中的“编辑”。取消选中“匿名访问”并确保选中“集成Windows身份验证”。这应该使网站按预期运行(假设您的Intranet客户端使用IE)
答案 2 :(得分:0)
据我所知,Windows身份验证只能用于Intranet,但您也可以使用表单身份验证来验证Internet用户。 This page有一些信息和一个关于如何执行此操作的教程的链接。
答案 3 :(得分:0)
我可能会在两台不同的服务器上部署该应用程序。防火墙内的服务器上的Windows身份验证,可供Windows身份验证的用户访问和使用。在公共面上,您将Web配置设置为使用表单身份验证,然后担心保护与后端的连接。
但是,如果您想为此使用单个服务器,则可能需要阅读此MSDN文章:Mixing Forms and Windows Security in ASP.NET