使用 ASP.NET 和 WCF 跨层传递用户身份

发布于 2024-08-11 13:37:28 字数 472 浏览 2 评论 0原文

我是 WCF 新手。假设我有两个 ASP.NET 应用程序,一个使用 Windows 身份验证(一个 Intranet 应用程序),另一个使用 Forms 身份验证(一个 Internet 应用程序)。我希望这两个应用程序都具有对物理上独立的机器的服务引用,我的所有业务逻辑都将驻留在其中(在 WCF 中)。所以,应用程序是这样的:

浏览器 --> ASP.NET-->世界CF。当调用在 WCF 层结束时,我需要知道 ASP.net 获得的用户名 (User.Identity.Name)。

通过 .NET Remoting,我创建了一个自定义主体,并将其保存在 LogicalCallContext 中。然后,通过远程服务器端的自定义远程接收器,我将当前线程主体设置为 LogicalCallContext 中的主体。

使用 WCF 执行此类操作的正确方法是什么?同样,我的 WCF 服务可能只能由运行 ASP.NET 的服务帐户调用,但我需要知道该调用最终代表谁。

I'm new to WCF. Let's say I have two asp.net apps, one that uses windows authentication (an intranet app), and one that uses forms authentication (an internet app). I want both of these applications to have a service reference to a physically separate machine where all my business logic will live (in WCF). So, the app is like this:

Browser --> ASP.NET --> WCF. When the call ends up in the WCF tier, I need to know the username that ASP.net obtained (User.Identity.Name).

With .NET Remoting, I created a custom principal that I stashed in the LogicalCallContext. Then with a custom remoting sink on the remoting server side, I set the current thread principal to the principal in the LogicalCallContext.

What is the correct way to do something like this with WCF? Again, my WCF service may only be called by the service account running ASP.NET, but I need to know who the call is ultimately on behalf of.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

冰葑 2024-08-18 13:37:28

您的 WCF 服务是否验证并信任 ASP.NET 应用程序(例如,使用 Windows 身份验证来验证运行 ASP.NET 应用程序的服务帐户)。

如果是这样,您可以考虑在自定义 SOAP 标头中传递有关最终调用者的信息。

您可以使用自定义 WCF 行为以及在客户端添加 SOAP 标头的 ClientMessageInspector 和在服务器端处理 SOAP 标头的 DispatchMessageInspector 来隐藏应用程序代码中的详细信息。

Does your WCF service authenticate and trust the ASP.NET apps (e.g. using Windows Authentication to authenticate the service account under which the ASP.NET apps run).

If so, you could consider passing information about the ultimate caller in a custom SOAP header.

You can hide the gory details from your application code using a custom WCF behavior with a ClientMessageInspector that adds the SOAP header on the client side and a DispatchMessageInspector that processes the SOAP header on the server side.

祁梦 2024-08-18 13:37:28

我猜您需要检查 WCF 会员提供商。我发布了几个月的相关内容 http://sgomez.blogspot .com/2007/12/wcf-membership-provider-sample.html 点击链接,我还推荐这本书学习 WCF,作者:Michele LeRoux Bustamante

祝你好运! (你会需要它)

I guess you'll want to check WCF Membership provider. I posted a few months about it http://sgomez.blogspot.com/2007/12/wcf-membership-provider-sample.html follow the links and also I'd recommend the book Learning WCF by Michele LeRoux Bustamante.

Good luck! (you're gonna need it)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文