ISA Server 2004 Web代理服务拒绝用户再次进行身份验证
2006-08-24 10:55
561 查看
可能很多人都遇到过这个问题,当配置ISA防火墙(ISA Server 2004)的Web代理使用集成身份验证时,如果当前登录的用户没能通过验证,那么ISA防火墙就会直接拒绝用户的访问,而不是和ISA Server 2000中一样弹出窗口要求用户输入账户信息进行身份验证,这让许多ISA防火墙管理员在选择Web代理的身份验证方式时,不得不选择基本身份验证。
其实从集成身份验证的原理来说,当用户没有通过身份验证时,是会弹出窗口要求用户输入账户信息进行身份验证的。但是在ISA Server 2004中从安全角度考虑,当用户提交的账户信息未能通过身份验证时,ISA Server 2004会返回代码为502的错误信息(ISA防火墙拒绝了对指定URL的访问)拒绝客户的访问,而不是返回另外一个代码为407(要求客户进行身份验证)的错误信息,所以浏览器就不会再次提示用户进行身份验证,而是显示用户的访问被拒绝。
这个配置通过ISA防火墙中某个ISA防火墙网络所对应的Web代理服务侦听器(默认侦听8080端口)的ReturnDeniedIfAuthenticated属性来进行控制,它的值默认设置为FALSE;如果你将其设置为TRUE,那么当用户提交的身份验证信息未能通过身份验证时,ISA Server 2004会返回另外一个代码为407(要求客户进行身份验证)的错误信息,此时浏览器就会再次提示你进行身份验证。
Tristank在他的Blog上提供了一个用于修改此属性的脚本,如下面所示,其中的Internal代表你想要修改的代理服务侦听器所对应的网络名,在此我们想要修改默认的内部网络。请根据你的需要修改此脚本文件中第一行的网络名,支持中文网络名,但是必须保存为ANSI文件格式。你可以点击此下载完整的脚本文件,使用之前请记得做好ISA防火墙当前配置的备份:
ISA2004-neverdeny.vbs
----------------------------------------------------------------------------------
TheOnlyOneOfInterest = "Internal" 'we want to reset the internal network listener
setting = True 'True = Enabled, False = Disabled (default)
found = 0
set root = CreateObject("FPC.Root")
set firewall = root.GetContainingArray
set networks = firewall.NetworkConfiguration.Networks
for each network in networks
'Wscript.echo network.name
if TheOnlyOneOfInterest = network.name then
found = found + 1
Wscript.echo "Found network: " + network.name
network.WebListenerProperties.ReturnAuthRequiredIfAuthUserDenied = setting
' this is pure bumf- feel free tocomment it out if you don't want to be prompted
' the Wscript.stdin.readline line requires the latest version of the VBScript/WSH components
' Wscript.echo "Property Set - press Enter to Save the change."
' Wscript.stdin.readline
Wscript.echo "Please wait..."
' Commit the configuration change
network.WebListenerProperties.Save
end if
next
if found = 0 then
Wscript.echo "Target network was not found."
else
Wscript.echo "Done."
end if
----------------------------------------------------------------------------------
执行方式为运行
Cscript ISA2004-neverdeny.vbs
命令完成后,复位对应网络的Web代理服务(禁用再启用此网络的Web代理服务,记得每个步骤都必须点击 应用 按钮保存修改和更新防火墙策略)即可。
在此我给大家演示一下:
我在ISA Server 2004的访问规则中要求进行用户身份验证,如下图所示,默认内部网络中启用了Web代理服务,并且只使用了集成身份验证,
[align=center][/align]
配置客户为Web代理客户,
[align=center][/align]
当我在浏览器中输入ISA中文站的地址时,由于当前登录账户未能通过ISA Server 2004的集成身份验证,所以访问被拒绝,错误代码是502,ISA防火墙拒绝了指定的URL地址。
[align=center][/align]
从Sniffer上捕获的数据可以看出,ISA防火墙在用户提交的身份验证信息未能通过验证时,返回了一个502的错误信息,拒绝用户的访问。
[align=center][/align]
现在,我执行脚本文件来修改ReturnDeniedIfAuthenticated属性,命令成功完成,
[align=center][/align]
然后复位内部网络的Web代理服务(禁用再启用内部网络的Web代理服务,记得每次修改后点击应用按钮保存修改和更新防火墙策略)。
现在我们再打开浏览器来访问ISA中文站,注意,此时虽然同样未能通过ISA防火墙的集成身份验证,但是浏览器却弹出对话框提示你输入身份验证信息,
[align=center][/align]
输入可以通过验证的账户信息,
[align=center][/align]
此时,用户输入的身份验证信息通过ISA防火墙的验证,ISA防火墙允许客户的访问。
[align=center][/align]
同样在Sniffer上查看捕获的数据包,你可以发现ISA防火墙这次返回的是407的错误信息(要求用户进行身份验证)而不是返回502来拒绝客户的访问。
如果你查看一下ISA防火墙中的会话,你会发现比较有趣的事情,会话中相同的客户IP地址却有三个不同的Web代理会话,这是为什么呢?
[align=center][/align]
这是因为ISA防火墙认为Web代理客户会话是IP地址和用户名的结合,在这个客户的IP地址上,总共有三个用户登录(虽然Anonymous和前面一个s开头的用户被ISA防火墙拒绝访问),所以ISA防火墙认为有三个Web代理客户会话。
该脚本支持ISA Server 2004的标准版和企业版。对于企业版的环境,可以在任何一台ISA Server服务器上执行此脚本。
其实从集成身份验证的原理来说,当用户没有通过身份验证时,是会弹出窗口要求用户输入账户信息进行身份验证的。但是在ISA Server 2004中从安全角度考虑,当用户提交的账户信息未能通过身份验证时,ISA Server 2004会返回代码为502的错误信息(ISA防火墙拒绝了对指定URL的访问)拒绝客户的访问,而不是返回另外一个代码为407(要求客户进行身份验证)的错误信息,所以浏览器就不会再次提示用户进行身份验证,而是显示用户的访问被拒绝。
这个配置通过ISA防火墙中某个ISA防火墙网络所对应的Web代理服务侦听器(默认侦听8080端口)的ReturnDeniedIfAuthenticated属性来进行控制,它的值默认设置为FALSE;如果你将其设置为TRUE,那么当用户提交的身份验证信息未能通过身份验证时,ISA Server 2004会返回另外一个代码为407(要求客户进行身份验证)的错误信息,此时浏览器就会再次提示你进行身份验证。
Tristank在他的Blog上提供了一个用于修改此属性的脚本,如下面所示,其中的Internal代表你想要修改的代理服务侦听器所对应的网络名,在此我们想要修改默认的内部网络。请根据你的需要修改此脚本文件中第一行的网络名,支持中文网络名,但是必须保存为ANSI文件格式。你可以点击此下载完整的脚本文件,使用之前请记得做好ISA防火墙当前配置的备份:
ISA2004-neverdeny.vbs
----------------------------------------------------------------------------------
TheOnlyOneOfInterest = "Internal" 'we want to reset the internal network listener
setting = True 'True = Enabled, False = Disabled (default)
found = 0
set root = CreateObject("FPC.Root")
set firewall = root.GetContainingArray
set networks = firewall.NetworkConfiguration.Networks
for each network in networks
'Wscript.echo network.name
if TheOnlyOneOfInterest = network.name then
found = found + 1
Wscript.echo "Found network: " + network.name
network.WebListenerProperties.ReturnAuthRequiredIfAuthUserDenied = setting
' this is pure bumf- feel free tocomment it out if you don't want to be prompted
' the Wscript.stdin.readline line requires the latest version of the VBScript/WSH components
' Wscript.echo "Property Set - press Enter to Save the change."
' Wscript.stdin.readline
Wscript.echo "Please wait..."
' Commit the configuration change
network.WebListenerProperties.Save
end if
next
if found = 0 then
Wscript.echo "Target network was not found."
else
Wscript.echo "Done."
end if
----------------------------------------------------------------------------------
执行方式为运行
Cscript ISA2004-neverdeny.vbs
命令完成后,复位对应网络的Web代理服务(禁用再启用此网络的Web代理服务,记得每个步骤都必须点击 应用 按钮保存修改和更新防火墙策略)即可。
在此我给大家演示一下:
我在ISA Server 2004的访问规则中要求进行用户身份验证,如下图所示,默认内部网络中启用了Web代理服务,并且只使用了集成身份验证,
[align=center][/align]
配置客户为Web代理客户,
[align=center][/align]
当我在浏览器中输入ISA中文站的地址时,由于当前登录账户未能通过ISA Server 2004的集成身份验证,所以访问被拒绝,错误代码是502,ISA防火墙拒绝了指定的URL地址。
[align=center][/align]
从Sniffer上捕获的数据可以看出,ISA防火墙在用户提交的身份验证信息未能通过验证时,返回了一个502的错误信息,拒绝用户的访问。
[align=center][/align]
现在,我执行脚本文件来修改ReturnDeniedIfAuthenticated属性,命令成功完成,
[align=center][/align]
然后复位内部网络的Web代理服务(禁用再启用内部网络的Web代理服务,记得每次修改后点击应用按钮保存修改和更新防火墙策略)。
现在我们再打开浏览器来访问ISA中文站,注意,此时虽然同样未能通过ISA防火墙的集成身份验证,但是浏览器却弹出对话框提示你输入身份验证信息,
[align=center][/align]
输入可以通过验证的账户信息,
[align=center][/align]
此时,用户输入的身份验证信息通过ISA防火墙的验证,ISA防火墙允许客户的访问。
[align=center][/align]
同样在Sniffer上查看捕获的数据包,你可以发现ISA防火墙这次返回的是407的错误信息(要求用户进行身份验证)而不是返回502来拒绝客户的访问。
如果你查看一下ISA防火墙中的会话,你会发现比较有趣的事情,会话中相同的客户IP地址却有三个不同的Web代理会话,这是为什么呢?
[align=center][/align]
这是因为ISA防火墙认为Web代理客户会话是IP地址和用户名的结合,在这个客户的IP地址上,总共有三个用户登录(虽然Anonymous和前面一个s开头的用户被ISA防火墙拒绝访问),所以ISA防火墙认为有三个Web代理客户会话。
该脚本支持ISA Server 2004的标准版和企业版。对于企业版的环境,可以在任何一台ISA Server服务器上执行此脚本。
相关文章推荐
- ISA server的常见身份验证方式
- C# WCF简单实例 出错:调用方未由服务进行身份验证
- 用WSE在Web服务中验证用户身份
- 通过使用客户端证书调用 Web 服务以便在 ASP.NET Web 应用程序中进行身份验证
- 在ISA Server 2004上发布使用非标准的21端口进行连接的FTP服务器
- Java界面开发——登录并对用户身份进行验证
- SQL-Server2005 sa用户设置,身份验证模式修改
- 可使用两种方法之一生成窗体身份验证 Cookie,并将用户重定向到 cmdLogin_ServerClick 事件中的相应页。
- 关于SQLServer2000中windows身份验证Builtin/Administrator用户误删除,引发的关于MSSQLSERVER服务的启动权限联想
- ISA Server 2006中的身份验证
- 统一身份认证服务(客户端用户身份验证)
- IdentityServer4 使用OpenID Connect添加用户身份验证
- IdentityServer4 使用OpenID Connect添加用户身份验证
- 关于WCF的“调用方未由服务进行身份验证”的另一解决方法
- 从 ASP .NET 进行 Active Directory 域服务身份验证
- 调用方未由服务进行身份验证
- 使用 Apache Shiro 为 web 应用程序进行用户身份验证
- 如何根据用户所在分组进行身份验证
- 用WSE在Web服务中验证用户身份(1)
- dhl:The request for security token could not be satisfied because authentication failed. 调用方未由服务进行身份验证。