c# - WCF 模拟/身份验证

标签 c# wcf

我已经查看了假冒示例,但仍然遇到问题。

结构的一些细节:

ASP.net:Windows 身份验证
WCF:托管在 IIS 中,当前使用允许匿名用户

我想要实现的是允许将经过身份验证的 Windows 登录传递到 WCF 进行访问控制,例如阻止匿名用户尝试调用服务。

使用 ASP.net 应用程序时,如果计算机以管理员身份登录,但由于不是 AD 下定义的用户而在 Active Directory 中失败,浏览器将弹出窗口提示输入用户 ID 和密码。

出现提示时,用户将输入与 AD 对应的正确用户 ID 和密码。至此,登录成功。
但是当我使用 WCF 的模拟将窗口身份验证凭据传递给 WCF 时, 它显示我作为管理员,而不是 ASP.net 验证的用户信息。

我应该如何获取正确的 ASP.net 身份验证用户信息而不是用户在 Windows 中登录的信息。

最佳答案

在您的 ASP.Net 应用程序中,您必须设置 <identity impersonate="true"/>在您的 web.config 中。

然后,您必须在 ASP.Net 应用程序中使用类似以下内容在对 WCF 服务的调用中添加模拟:

using (((WindowsIdentity)HttpContext.Current.User.Identity).Impersonate())
{
    WebClient client = new WebClient
       {
        Credentials = CredentialCache.DefaultNetworkCredentials
       };
    string result = client.DownloadString("http://someserver");
}

另请查看patterns & practices: WCF Security Guidance有关如何从 Web 应用程序对 WCF 调用添加模拟的分步教程。

关于c# - WCF 模拟/身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5619227/

相关文章:

c# - 通用应用程序和 AdMediation - 测试不同的广告尺寸?

c# - 异步方法阻止 WPF 中的 UI

.net - 使用 WCF 进行动态编程

c# - 两个应用程序之间的声音交互

c# - 如何使属性设置一次且不能更改?

c# - 如何显示自定义 404 错误页面

wcf - 在 Silverlight 中绑定(bind)来自 WCF 的对象集合的好模式是什么?

c# - EF Core 播种机制不插入数据

c# - 我可以强制 svcutil.exe 为 WCF 服务生成数据协定吗?

asp.net - 处理响应流时出错。 XML 元素包含混合内容