首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将NetworkCredentials对象传递给WCF服务

将NetworkCredentials对象传递给WCF服务
EN

Stack Overflow用户
提问于 2013-01-05 06:36:35
回答 1查看 1.1K关注 0票数 0

编辑-我重写了这个问题以(希望)更好地聚焦它。

需要交互的组件有: ASP.NET网站<--> WCF服务<-->第三方web服务

第3方web服务需要Windows身份验证,方法是在构造代理期间指定网络凭据。例如:

代码语言:javascript
复制
ICredentials myCredentials = new NetworkCredential("myUsername", "myPassword", "myADdomain");
VendorWebService webService = new VendorWebService {Credentials = myCredentials};

据我所知,这是我们的WCF服务可以向第三方web服务模拟用户的唯一方式。Windows身份验证(通过网络凭据)是唯一受支持的模拟方法-无法在第三方web服务和WCF服务之间建立某种信任。

网站在服务账户下运行,而不是在个人用户的账户下运行。当我们的用户登录到我们的网站时,我们使用ActiveDirectory验证他们,但我们只是使用AD来说“是的,这是一个有效的名称和密码组合”。

我需要一种方法来采取我在网站上知道的东西(用户名,密码),并将其转变为WCF服务上的网络凭证。我读到的所有内容都表明,传递用户名/密码甚至是网络凭据对象(如果可能的话)是一个很大的安全风险,而且是一种非常糟糕的做法。

当网站不在用户帐户下运行时,可以使用哪些选项/技术来使网站用户的Windows标识可用于WCF服务?

谢谢你的见解。

附言:我确实找到了这篇文章:在我发布了我的问题并正在阅读它的内容之后,我找到了How do you pass user credentials from one process to another for Impersonation in .NET 1.1?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-06 23:30:26

我正在张贴我自己的问题的答案,以向未来的读者确认缺乏其他答案已经意味着什么-不要这样做。

我认为我的问题的核心是我试图让一个匿名进程(在系统帐户下运行的网站会话)以一种Microsoft / Active Directory (也不是最明智的安全战略家)不支持的方式向接收者(WCF服务)标识自己。我试图在通信内容中传递身份,而不是作为通信协议的一部分。在我的网络和系统安全速成课程中,这将是一个非常危险的策略。

简而言之,一端要求对Active Directory (第三方软件)进行身份验证,而另一端要求匿名(网站会话)。

展望未来,我们有两种可能的解决方案-围绕通信构建我们自己的安全性,以便我们可以尽可能安全地传递Active Directory名称/密码,或者说服第三方供应商放宽其身份验证要求(即票务代理)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14166123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档