2013-12-19 2 views
1

Как обеспечить мой простой сервис WCF с использованием концепции FormsAuthentication?Аутентификация форм для WCF

ServiceContract выглядит примерно так:

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

     [OperationContract] 
     string Login(int value); 

     [OperationContract] 
     string Logout(int value); 

    } 

Я использовал FormsAuthentication в моем MVC 4 Применение для аутентификации и авторизации.

Все, что я мог придумать, это как добавить Authorize Атрибут фильтра в верхней части класса ServiceContract.

Любые указатели в простых выражениях в высоко ценится. Благодарю.

ответ

3

Вы можете обеспечить безопасность WCF с помощью имени пользователя/пароля (Forms Authentication):

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

Я знаю очень полезное ключевое слово Authorize в MVC, но sofar Я не нашел что-то подобное в WCF.

Если вы используете службу WCF в (и для) тем же самым IIS-приложением, вы можете написать собственную реализацию ключевого слова Authorize, но затем для WCF. Вы можете обратиться к HttpContext, чтобы посмотреть, является ли запрос авторизованным или нет.

Некоторые дополнительную информацию можно найти здесь:

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

Смежные вопросы