我只想启用1域绑定的基本身份validation,其余的公共访问。 这可能与IIS?
网站的绑定信息用于确定传入的请求路由到哪个网站。 (通过Windows激活服务和http.sys)。
对于每个网站,您可以启用整个站点的各种身份validation方法,或站点内的特定url,但不能基于主机名称。
你至less有两个select:
选项一是使用两个单独的网站指向相同的物理目录,并在站点根目录中使用相同的web.config。
您仍然可以为这两个站点使用不同的身份validation方法。
这里的缺点是你有两套日志文件,对configuration的某些更改也必须做两次。
选项二涉及URL重写模块
让我们假设你有两个主机名绑定到网站normal.serverfault.com和secure.serverfault.com 。
在站点根目录下创build一个secure的虚拟目录,但将其指向站点本身的同一物理目录(与根目录相同)。
对于虚拟目录,禁用匿名身份validation并启用basicAuthentication。
现在添加一个重写规则到网站:
<rewrite> <rules> <rule name="Secure"> <match url=".*" /> <conditions> <add input="{SERVER_NAME}" pattern="^secure\.serverfault\.com$" /> </conditions> <action type="Rewrite" url="/secure/{R:0}" /> </rule> </rules> </rewrite>
我们正在重新编写使用secure虚拟目录的所有请求,但secure.serverfault.com是主机名是secure.serverfault.com
现在,使用normal.serverfault.com用户仍然可以不经身份validation访问该站点,但是在使用secure.serverfault.com他们必须login。
我用这个选项看到的一个问题是,网站根目录下的web.config基本上是为重写的请求处理两次。
即使它在物理上只存在一次,但在\secure\执行请求时,它曾经被视为虚拟目录的本地目录,并且一次被视为父目录。 所以你必须确保你没有任何不支持的设置。 例如<add...节点不能被复制,您必须使用<clear...或<remove...来解决这个问题。 或者您将设置移到ApplicationHost.config。
你应该用这个设置来testing你的网站,但是因为浏览器不知道这个URL已经被重写了,所以它应该可以正常工作。