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

通过默认成员身份提供程序进行WebService身份验证

  •  3
  • Mickel  · 技术社区  · 14 年前

    当您需要验证特定的 OperationContracts ,同时使用默认值 MembershipProvider 为了安全起见(为了安全) FormsAuthentication )

    我想是这样的 Membership.ValidateUser Membership.GetUser 只是在使用WebServices时不会切断它,对吗?

    换言之:如何验证允许用户在WebService中使用特定方法(用户已通过身份验证/“登录”)?

    2 回复  |  直到 14 年前
        1
  •  3
  •   sblom    14 年前

    是的——你不能真的用 FormsAuthentication 在这种情况下。但是,在WCF中有优秀的基础设施可用于管理基于角色的对单个方法的访问: http://msdn.microsoft.com/en-us/magazine/cc948343.aspx

        2
  •  1
  •   Bennett Dill    14 年前

    我已经知道过度工程的事情,所以当我在我的Web应用程序中使用WCF时,我将服务包装在我的Web应用程序中。这样我的web应用程序就调用了抽象。

    现在,您可以在包装器上应用代码访问安全性(CA)。

    示例代码可能如下所示(为了简洁起见,省略了大量细节)

    internal class ServiceWrapper
    {
        Service Svc;
        public ServiceWrapper()
        {
            Svc = ServiceClient();
        }
    
        [System.Security.Permissions.PrincipalPermission(System.Security.Permissions.SecurityAction.Demand, Role = "HelloWorld")]
        public string HelloWorld()
        {
            return Svc.HelloWorld();
        }
    }
    

    在一个完美的世界里,我们希望CAS更干燥一点(不要重复你自己),这意味着按照你的建议在WCF中处理。但如果你知道你可以锁定你的WCF应用程序并控制谁调用它,那么这可能是一条很好的道路中间路线。

    这将帮助你简化让球滚动的过程…

    祝你好运!