WCF的表单身份验证

时间:2013-12-19 12:58:37

标签: c# .net asp.net-mvc wcf .net-4.5

如何使用WCF概念保护简单的FormsAuthentication服务?

ServiceContract看起来与此相似:

    [ServiceContract]
    public interface MovieDb
    {
        [OperationContract]
        string GetData(int value);

        [OperationContract]
        string Login(int value);

        [OperationContract]
        string Logout(int value);

    }

我在我的MVC 4应用程序中使用FormsAuthentication进行身份验证和授权。

我能想到的就是在Authorize类的顶部添加ServiceContract过滤器属性。

非常感谢简单术语中的任何指针。感谢。

2 个答案:

答案 0 :(得分:3)

您可以使用用户名/密码(表单身份验证)保护您的WCF:

Message Security with a User Name Client

如果您决定在服务器端使用WFC配置中的身份验证成员身份,则添加配置成员身份的行为:

<behavior name="myBehavior"> 
    <serviceAuthorization principalPermissionMode="UseAspNetRoles" roleProviderName="myRoleProvider"/>
    <serviceCredentials>
        <serviceCertificate findValue="*.mycert.net" storeLocation="LocalMachine" x509FindType="FindBySubjectName"/>
        <userNameAuthentication userNamePasswordValidationMode="MembershipProvider" membershipProviderName="myMembershipProvidewr"/>
    </serviceCredentials>
</behavior>

您的WCF可以像

一样简单验证
  [PrincipalPermission(SecurityAction.Demand, Role = "My Role")]
        public bool GetSomething(string param1)
        {
...

您可以在此处找到更多信息: http://msdn.microsoft.com/en-us/library/ff650067.aspx

答案 1 :(得分:1)

我知道MVC中非常有用的Authorize关键字但是我在WCF中找不到类似的东西。

如果您在同一个IIS应用程序中使用WCF服务,您可能希望编写自己的Authorize关键字实现,但是对于WCF。您可以参考HttpContext来查看请求是否已自动化。

可在此处找到一些额外信息:

Does WCF have an equivalent of MVC's [Authorize] attribute?

相关问题