当Anon打开CFusion时获取Win登录信息

时间:2012-01-12 05:01:17

标签: iis coldfusion windows-authentication anonymous

基本上,如果用户正在访问Authenticated页面,我正在尝试创建一个显示Login的页面(例如#CGI.AUTH_USER#)。但是,如果用户不是Auth,我仍然希望用户能够访问该页面但使用登录UI。

我目前启用了Anon Access ON和Windows Authen模式,但看起来它不兼容。

如果我启用了Anon Access,则它不会检索CGI.AUTH_USER。 如果我有Windows Auth ON,它将在访问页面时提示用户登录。

有没有办法让IIS接受Anon用户并且能够检索用户的Auth信息(如果它是Windows Auth用户?)

谢谢!

3 个答案:

答案 0 :(得分:0)

我不相信这是可能的,IIS下的身份验证是打开还是关闭。如果你打开它,你需要在看到任何东西之前登录。如果你把它关掉,你就不要

大多数人只会编写自己的登录页面并以这种方式进行身份验证。如果愿意,您甚至可以使用<CFLDAP根据活动目录验证用户。

答案 1 :(得分:0)

这就是我们这样做的方式。我们为一个CFM页面打开它,然后我们对该页面进行JavaScript调用。根据该页面的标题响应,我们可以看到用户是否针对我们的IIS服务器识别的AD服务器进行了身份验证。如果他们没有经过身份验证,那么我们会向他们提供一个登录框,以便他们可以“登录”他们的登录信息。

答案 2 :(得分:0)

要解决您的特定技术问题 - 您不能拥有允许匿名访问和基于Windows的身份验证的单一资源。但是,您可以拥有一个允许匿名访问的主页面,以及使用Windows身份验证保护的子文件夹中的页面,这两个页面都可以共享相同的CF应用程序范围。将需要使用这种基本安排。

关于您尝试解决的基本问题,我们最近花了一些时间来研究将Windows身份验证方法与现有基于Web表单的登录混合的可行性,就像您所描述的那样。这实际上非常棘手,因为理想的情况将允许所有用户访问他们一直使用的相同基本URL,并在该选项可用时自动和自动地自动登录,但也不会受到基于浏览器的登录的困扰Windows身份验证不可用时提示。根据我们的确定,这种理想是不可能的(由于HTTP协议的一些限制,在访问安全资源时总是会出现登录提示)。但是,我们发现了一些可能足够接近理想的选项,有用且值得追求:

1)您可以为希望拥有此自动登录功能的用户指定一个特殊的URL;例如,https://baseUrl/autologin/之类的东西。域用户可以从域中的计算机为该URL添加书签,并使用该书签访问该站点。如果域计算机上的域用户以外的任何人都转到该URL,则会提示他们使用基于浏览器的登录对话框登录。非域用户将无法从该对话框继续,但域用户将能够。所有用户(域或非域)也可以通过通常可用的普通基于表单的登录屏幕登录。如果你使用这个选项,你也可以在主页上添加一个链接,让用户“自动登录”,将他们带到这个URL,这当然只适用于域上的用户。

2)您可以尝试识别您的环境中的某些网段,从这些网段中,请求这些网站的用户很可能会在受信任的域计算机上这样做。您可以以这样的方式构建应用程序,以便在这些用户来自这些已识别的网络时尝试自动登录这些用户。在来自这些网络的请求不受信任的情况下,最糟糕的事情是将意外地向用户呈现基于浏览器的用户名和密码提示。如果他们确实得到了提示,他们可以通过点击取消并进入普通登录页面来忽略它,或者他们可以输入他们的域凭据并登录(在这种情况下,可能是由于桌面没有配置由于某种原因正确 - 否则它会自动登录)。这种基于网络的检测方法可以通过IIS的URL重写模块来完成。