我想检查我的理解。 这是一个完全假设的情况,因为我目前正在学习authentication。
我有一个IIS应用程序池与一个基本的网站,从SQL后端访问数据。 我想设置Kerberos身份validation,因此委派。
运行该站点的AppPool的身份是IISApp01并具有设置为HTTP/IISSRV01.serverfault.local的SPN。
现在,这一切都很好,但是在Active Directory中,我可以在承载IIS应用程序池的计算机对象或用户帐户IISApp01 (AppPool的身份)上设置委派选项。 谁将实际上将凭据委托给我的SQL框? 那么 – 如何将服务添加到我允许授权的受限服务列表中?
谢谢!
短版本:您可以在AD用户和计算机中为该主体的“委派”选项卡上的刚刚configurationSPN的安全主体(即用户或计算机)设置委派选项。
更长的版本:不,不,不!
您不需要设置Kerberos身份validation,因此也不需要委派。 这些是独立的概念,相互独立。
您可以使用Kerberos进行身份validation,而无需委托任何内容。 事实上,Windows 2008的IIS 7和更高版本提供了一个默认configuration,这意味着任何使用其真实主机名的单个域成员框都将能够执行Curb身份validation。 请参阅“内核模式authentication”和破坏者! 你需要closures你的场景才能像你描述的那样工作*。
限制委派要求使用一个主体来终止一个Kerberosauthentication的跳,然后代表原始的请求安全主体(用户)执行另一个主体。
回到解决scheme:
所以对于PC – > IIS – > SQL,你需要确定每个进程运行的是谁:
PC(用户) – > IIS(应用程序池帐户(IISApp01)) – > SQL(服务帐户(“SQLService”))
在这种情况下,每个帐户都必须是域用户帐户,为了简单起见,您需要在Windows集成身份validation选项中禁用有关网站的内核模式身份validation。
然后,您需要确定每一跳使用的SPN,并确保每个SPN都注册一次:
PC(用户)并不重要
IIS层:SETSPN -S IISApp01 http / name.used.by.client(这永远不会自动)
SQL层:SETSPN -S SQLService mssql / name.used.by.iis.app:1433(这可能是自动的)
那么您应该有一个可用于IISApp01的委派选项卡,您可以在其中指定IISApp01受信任用于(search,selectSqlService,然后select针对SqlService注册的相应SPN)。
有一个名为DelegConfig的网站/程序,可以帮助您映射这些东西。
*不完全正确; 有很多解决scheme。