【问题标题】:Pass ASP.NET membership credentials from MVC application to WCF application将 ASP.NET 成员身份凭据从 MVC 应用程序传递到 WCF 应用程序
【发布时间】:2012-03-01 21:05:57
【问题描述】:

我开发了一个 MVC 应用程序,它使用 ASP.NET 成员资格提供程序建立在表单身份验证之上。

同一服务器还包含一个 WCF 应用程序,该应用程序指向与 MVC 应用程序相同的数据库(包括所有 aspnet 表)。

我想检查用户在服务中属于哪些组。

如何将凭据从 MVC 应用程序传递到 WCF 应用程序?

【问题讨论】:

    标签: .net asp.net-mvc wcf wcf-security


    【解决方案1】:

    你也可以

    • 在 MVC 应用程序上开发任何类型的 API,以供 WCF 应用程序与之交互(这将允许您在未来将这两个东西部署到任何您想要的地方),

    • 尝试让 WCF 服务使用 Membership 提供程序进行身份验证,并将 wcf 端的成员资格提供程序指向同一个 db。

    看看这个

    [谈到成员资格提供程序] Windows Communication Foundation (WCF) 开发人员可以利用这些功能来实现安全目的。当集成到 WCF 应用程序中时,用户必须向 WCF 客户端应用程序提供用户名/密码组合。要将数据传输到 WCF 服务,请使用支持用户名/密码凭据的绑定,例如 WSHttpBinding(在配置中为 wsHttpBinding 元素)并将客户端凭据类型设置为 UserName。在服务上,WCF 安全根据用户名和密码对用户进行身份验证,还分配了 ASP.NET 角色指定的角色

    That's the article containing configuration samples

    希望我了解您的需求。

    【讨论】:

      【解决方案2】:

      由于您使用的是Membership Provider,因此您可以检查运行线程的Identity(经过身份验证的用户),该线程通过System.Threading.Thread.CurrentPrincipal.Identity 在WCF 应用程序中访问您的资源。

      例子:

      在您的 WCF 应用程序中,您可以使用一种方法来发现经过身份验证的用户,然后从那里查询您的数据库以获取该用户所属的组:

      static List<UserGroup> GetUserGroups()
      {
      
      // Get the authenticated username
      string username = System.Threading.Thread.CurrentPrincipal.Identity.Name;
      
      // Get the user's groups from your data store and pack them up in a list
      ...
      etc
      
      }
      

      【讨论】:

      • 我没有通过System.Threading.Thread.CurrentPrincipal.Identity 获得对用户的引用。 Name 为空白,IsAuthenticated 为假。请注意,MVC 应用程序和 WCF 应用程序是 IIS 中的两个独立的 .NET 应用程序(但它们共享同一个 AppPool)。
      • 对不起 - 我解释错了你的 OP。我认为您的 MVC 应用程序正在通过 WCF 端的成员资格提供程序登录到 WCF 应用程序。也就是说,我不知道将 MVC 凭据传递给 WCF 的方法。如果有办法,我的想法是您不应该 pass 凭据(隐式登录到另一个系统对我来说似乎不安全)。也许你应该考虑在你的 WCF 端实现一个 Membership Provider - 然后,当用户登录到你的 MVC 应用程序时,你的 MVC Membership Provider 的 ValidateUser 方法将在你的 WCF 端调用 ValidateUser。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-02
      • 2019-11-21
      相关资源
      最近更新 更多