Aar*_*ner 11 forms-authentication active-directory trustedconnection asp.net-mvc-3
这是我一直在努力做的事情
使用表单身份验证和活动目录成员身份构建ASP.NET MVC 3应用程序.Web服务器和数据库是不同的物理服务器,因此是双跃点.
我认为答案是这篇关于约束委派和协议转换的旧文章?到目前为止,我还没有能够使用该技术.
在生产设置中部署到Windows 2008(IIS7)之前,我正在从我的DEV机器(Windows 7,IIS7)中为Web服务器测试这个.Windows 2008会有所作为吗?
什么有效,什么失败
我可以使用表单身份验证和AD成员身份登录.这似乎工作得很好.当我尝试使用此代码进行数据库调用时:
public void AsUser(Action action)
{
using (var id = new WindowsIdentity(User.Identity.Name + @"@example.com"))
{
WindowsImpersonationContext context = null;
try
{
context = id.Impersonate();
action.Invoke();
}
catch (Exception ex)
{
// ex.Message is The type initializer for System.Data.SqlClient.SqlConnection threw an exception
// buried inner exeption is Requested registry access is not allowed
}
finally
{
if (context != null)
{
context.Undo();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
它失败了一个例外,让我相信我在本地DEV服务器上设置了问题.内在的例外是Requested registry access is not allowed.
如果我设置断点并WindowsIdentity在Impersonate()通话后检查,我会看到ImpersonationLevel设置为Identification.这似乎是一个线索,它没有正确设置.谁能确认一下?
我是在正确的轨道上,甚至可以设置吗? 任何指针将不胜感激.
我认为你走在正确的轨道上.您只需要对协议转换设置进行更多故障排除工作.
我假设您正确配置了Active Directory成员资格提供程序,以便您可以使用Active Directory用户名和密码成功登录Web页面.如果不是这样,请忽略我的其余答案:)
从我在您的问题中看到的,您使用WindowsIdentity的S4USelf获得了用户的令牌.然后,您正在使用S4UProxy将模拟的令牌传递给SQL Server.既然你说你ImpersonationLevel.Identification只有,那就意味着你没有进行协议转换.
您需要了解允许一台计算机在域中执行协议转换是非常高的权限.授予服务器进行协议转换几乎意味着您相信该服务器几乎就像一个域控制器.您需要在AD中有意识地做出这个决定,以使服务器具备此功能,并且您必须成为domian管理员才能进行此更改.如果你还没有这样做,你可能没有正确设置你的东西.
有几件事需要检查.
首先,确保选择"信任此计算机以仅委派给指定的服务",然后在服务帐户上选择"选择使用任何身份验证协议".您可能想要创建域帐户. 以下是有关如何为ASP.NET创建服务帐户的链接.请记住,您需要一个域帐户.创建域服务帐户后,请确保转到该帐户的委派选项卡并选择正确的选项.
其次,您需要确保正确设置SPN.我意识到您发布的链接仅提及ASP.NET服务帐户的SPN.实际上,您还需要确保SQL服务器上的服务帐户也正确设置.其他,Windows根本不会使用Kerberos身份验证.它将回归使用NTLM.在SQL Server上正确设置SPN有很多细节.你可以先在这里查看,看看你有没有运气.根据我的经验,大多数DBA都不知道如何正确设置它们.他们甚至都没有意识到这一点,因为大多数应用程序都可以正常使用NTLM.您需要注意SQL Server服务帐户及其使用的端口号.
第三,您需要确保没有禁用Kerberos委派的任何内容.默认情况下,某些敏感的AD帐户不允许委派.例如,内置管理员帐户.因此,您最好使用其他一些普通用户帐户进行测试.
UPDATE
我刚刚发现另一篇文章,教你如何设置ASP.NET的协议转换.它提到您需要向TC服务帐户授予TCB权限,以确保它可以创建Impersonation类型WindowsIdentity.你可以试一试.
| 归档时间: |
|
| 查看次数: |
2444 次 |
| 最近记录: |