gpt4 book ai didi

c# - WCF 模拟/身份验证

转载 作者:行者123 更新时间:2023-11-30 21:15:41 24 4
gpt4 key购买 nike

我已经看过模拟示例,但仍有问题。

结构的一些细节:

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com