代码之家  ›  专栏  ›  技术社区  ›  aquinas

使用ASP.NET和WCF跨层传递用户标识

  •  4
  • aquinas  · 技术社区  · 15 年前

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

    浏览器-->ASP.NET-->WCF。当调用在wcf层结束时,我需要知道ASP.NET获得的用户名(user.identity.name)。

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

    对于WCF,正确的方法是什么?同样,我的WCF服务只能由运行ASP.NET的服务帐户调用,但我需要知道最终代表谁调用。

    2 回复  |  直到 15 年前
        1
  •  2
  •   to StackOverflow    15 年前

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

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

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

        2
  •  1
  •   sebagomez    15 年前

    我想你要检查一下WCF成员资格提供者。我发表了几个月的文章 http://sgomez.blogspot.com/2007/12/wcf-membership-provider-sample.html 按照链接,我也会推荐这本书 Learning WCF 通过 Michele LeRoux Bustamante .

    祝你好运!(你需要它)