- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我一直在尝试做的
使用表单例份验证和事件目录成员身份构建 ASP.NET MVC 3 应用程序。 Web 服务器和数据库是不同的物理服务器,因此是双跳。
我认为答案是 constrained delegation and protocol transition 上的这篇较早的文章?到目前为止,我还不能让这项技术发挥作用。
在部署到生产设置中的 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();
}
}
}
}
Requested registry access is not allowed
.
WindowsIdentity
在
Impersonate()
之后打电话我看到
ImpersonationLevel
设置为
Identification
.这似乎是它设置不正确的线索。任何人都可以确认吗?
最佳答案
我认为你在正确的轨道上。您只需要对协议(protocol)转换设置进行更多故障排除工作。
我假设您正确配置了 Active Directory 成员资格提供程序,以便您可以使用 Active Directory 用户名和密码成功登录您的网页。如果不是这样,请忽略我的其余答案:)
根据我在您的问题中看到的,您使用 WindowsIdentity 的 S4USelf 获得了用户的 token 。然后,您使用 S4UProxy 将模拟 token 传递给 SQL 服务器。既然你说你得到了ImpersonationLevel.Identification
只是,这意味着您没有进行协议(protocol)转换。
您需要了解允许一台机器在域中进行协议(protocol)转换是非常高的特权。授予服务器进行协议(protocol)转换几乎意味着您相信该服务器几乎就像一个域 Controller 。您需要有意识地在 AD 中做出此决定以使服务器具有此功能,并且您必须是域管理员才能进行此更改。如果你还没有这样做,你可能没有正确设置你的东西。
有几件事要检查。
首先,确保您选择了“仅信任此计算机以委派指定的服务”,然后在您的服务帐户上选择“选择使用任何身份验证协议(protocol)”。您可能想创建一个域帐户。 Here是有关如何为 ASP.NET 创建服务帐户的链接。请记住,您需要一个域帐户。创建域服务帐户后,请确保转到该帐户的委派选项卡并选择正确的选项。
其次,您需要确保正确设置 SPN。我意识到您发布的链接仅提及您的 ASP.NET 服务帐户的 SPN。实际上,您还需要确保您的 SQL 服务器上的服务帐户也设置正确。否则,Windows 根本不会使用 Kerberos 身份验证。它将回退到使用 NTLM。在 SQL Server 上正确设置 SPN 有很多细节。您可以查看here先看看你有没有运气。根据我的经验,大多数 DBA 都不知道如何正确设置它们。他们甚至没有意识到这一点,因为大多数应用程序都可以在 NTLM 上正常工作。您需要注意 SQL Server 服务帐户和它使用的端口号。
第三,您需要确保没有禁用您的 Kerberos 委派。一些敏感的 AD 账户默认是不允许委托(delegate)的。例如,内置管理员帐户。因此,您最好使用其他一些普通用户帐户进行测试。
更新
我刚刚找到 another article教你如何设置 ASP.NET 的协议(protocol)转换。它提到您需要向 IIS 服务帐户授予 TCB 权限,以确保它可以创建 Impersonation
。键入 WindowsIdentity。你可以试一试。
关于active-directory - 我可以模拟通过表单例份验证的客户端并建立与 SQL Server 的受信任连接吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4947462/
从今天早上开始,我的证书在 Android 上不再受信任,然后我的应用程序无法再连接: Catch exception while startHandshake: javax.net.ssl.SSL
我想知道是否有人有解决方案允许从usize类型(从访问数组索引或获取矢量长度中获得)的隐式转换为i32?可能吗? 当然,我假设矢量长度和数组范围在i32限制之内。 最佳答案 您可以在函数参数中使用 T
我用 mitmproxy从离开我们网络的出站 AS2 (HTTP) 请求中收集情报。架构是这样的: Mendelson AS2 ➡ mitmproxy ➡ partner AS2 server
我有几个实例,我的 Javascript 代码似乎在泄漏内存,但我不确定我应该从垃圾收集器那里得到什么。 例如 var = new Object() 在 Firefox 中运行的间隔计时器函数似乎会随
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwa
我想我在这里没有想法。 我正在尝试使用具有 ssl 证书的 java 中的 Web 服务。 我创建了一个 keystore 文件,并在其中添加了证书。该文件位于我的项目文件夹中。 我使用以下方式导入它
我在/etc/pki/ca-trust/source/anchors 中添加了一个 crt,这样服务器证书就可以被 ssl 客户端信任。所以,例如,当我 curl https://证书自动受信任。 有
我搜索了很多帖子,但找不到任何解决方案或问题的答案。如何从安装了中间证书的站点下载文件?使用 DownloadManager 时,出现错误“java.security.cert.CertPathVal
我无法使用 SSL: 我从服务器下载了证书,它运行良好。 我还使用本文中的代码将 myCertificate.cert 添加到我的 iPhone 钥匙串(keychain)线程:Importing a
首先,我知道信任所有证书可能存在的风险,但是出于某些测试目的,我必须实现这一点。 如何强制我的客户信任所有证书?我正在使用 javax.websocket 来实现 我所做的只是像连接到 ws 一样 W
信任 $_SERVER['REMOTE_ADDR'] 是否安全?可以通过更改请求的 header 或类似的东西来代替吗? 这样写安全吗? if ($_SERVER['REMOTE_ADDR'] ==
我有一个产品由内部 ASP.NET/MVC 网站组成,所有网站都使用 WIF 通过自定义 STS/IdP 服务启用 SSO。我们现在有一个新的合作伙伴站点托管在我们网络之外的另一个域上,并且希望在用户
我在我开始构建的 Rails 应用程序上使用 sendgrid。我处于测试模式,主要做本地工作,但我发送了很多电子邮件来检查我的流程或电子邮件布局。 我用来接收电子邮件的电子邮件是在 Gmail 上。
我一直在研究我得到的原因: java.util.concurrent.ExecutionException: javax.net.ssl.SSLException: Received fatal al
我有 SVN 服务器通过 HTTPS 在 Apache 下运行 这是我的服务器端配置,“/etc/httpd/conf.d/subversion.conf”: SSLRequireSSL S
我有一个用于开发测试的自签名证书。我已将它添加到证书管理器中的“受信任的根证书颁发机构”文件夹下,当在 IE 或 Chrome 下访问该站点时,它被认为是有效的(在 Firefox 下它不喜欢它是自签
我遇到了 android 4 设备的问题,这些设备在连接到服务器时收到以下异常: java.security.cert.CertPathValidatorException: Trust anchor
我是一个安卓新手。这个问题已经被问过很多次了,但我已经解决了这里几乎所有的问题。 我正在尝试在 Node.Js 服务器(使用 express)和 Android 上的 Volley 上使用自签名证书。
我想使用 WebClient 从安全服务器检索 JSON 文件,但我的 Windows Phone 8 不允许我这样做,因为如果 WebCLient 不信任 SSL 证书,它会抛出异常。 问题在于它不
我正在编写服务器以支持适用于 iOS 和 Android 的基于位置的应用程序。该应用程序要求我们验证用户的身份及其位置。我知道如何做前者,但不知道后者。 是否可以验证客户端发送给我的纬度/经度实际上
我是一名优秀的程序员,十分优秀!