如何使用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
过滤器属性。
非常感谢简单术语中的任何指针。感谢。
答案 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来查看请求是否已自动化。
可在此处找到一些额外信息: