无Active Directory域环境下ASP.NET站点使用Windows身份验证咨询
结论
在未加入Active Directory域的Windows服务器上运行使用Windows身份验证的ASP.NET站点是完全可行的。
实现原理
Windows身份验证的底层依赖NTLM或Kerberos两种认证协议,两种协议本身均不要求Web服务器加入域,核心逻辑是IIS将客户端提交的身份凭证转发给域控制器完成校验,而非依赖服务器自身的域成员身份缓存凭证:
- NTLM认证流程(未加入域场景下最常用)
- 客户端首次访问站点时无身份凭证,IIS返回401未授权响应,携带
WWW-Authenticate: NTLM头发起认证挑战 - 客户端将当前登录的域用户的NTLM凭证加密后提交给IIS
- 未加入域的IIS服务器无需本地存储域账号信息,直接将加密凭证转发给可连通的域控制器进行合法性校验
- 域控制器返回校验结果,校验通过后IIS允许客户端访问站点资源
- 客户端首次访问站点时无身份凭证,IIS返回401未授权响应,携带
- Kerberos认证适配说明
若要使用安全性更高的Kerberos协议替代NTLM,仅需将站点URL对应的服务主体名称(SPN)注册到运行IIS应用池的域账号下,同时保证服务器与域控制器的Kerberos相关端口(默认88端口)网络连通即可,不需要将服务器本身加入域。
核心配置前提
要让该方案正常运行,仅需要满足几个基础条件:
- 未加入域的Web服务器可以正常解析域控制器域名,且和域控制器之间的认证相关端口(NTLM需要135、139、445端口,Kerberos需要88端口)网络连通
- IIS站点的应用池运行身份配置为有权限访问域资源的域账号,或配置了正确的域控制器转发规则
内容的提问来源于stack exchange,提问作者Shane Callanan
相关产品推荐
相关产品推荐

