Аутентификация и авторизация пользователей в MVC и WCF - PullRequest
1 голос
/ 22 сентября 2011

Я так мало знаю о WCF, ASP.Net и аутентификации / авторизации, что мне трудно объяснить, что меня беспокоит.

Я использую приложение ASP.Net MVC 3 в качестве внешнего интерфейса для разрабатываемой системы. Этот веб-сайт общается с веб-сервисом WCF и получает от него всю информацию.

Будут заранее определенные пользователи, и у каждого пользователя будет уникальный доступ (поэтому действие может разрешаться в информации, относящейся к этому пользователю). Также логин для пользователей будет храниться сервисной стороной.

Теперь вопрос в том, как мне обрабатывать аутентификацию и / или авторизацию?

Я хочу, чтобы пользователи могли входить на веб-сайт, поэтому я предполагаю, что он совершит проверочный вызов для веб-службы и, в случае проверки, установит клиентскую сторону cookie-файлов forms.authentication.

Тогда, если он сделает новый запрос, такой как ChangePassword (уникальный для него), я должен как-то проверить его еще раз? Возможно, создали для него токен для отправки его запроса?

Могу ли я просто выполнить все действия службы валидации, чтобы служба знала, кто пользователь, и возвращала только связанные с ним данные (без необходимости специально упоминать его в вызове метода?

Различает ли подобный сервис каким-либо образом авторизацию клиентского веб-сайта и самого пользователя? Я имею в виду, что хочу убедиться, что используемый инструмент является законным и что действие, которое пытается выполнить пользователь, в порядке.

Мне трудно понять, как все это работает вместе, и я хотел бы получить объяснение о том, как это работает, а не учебник о том, как это сделать (как это делает поиск в Google).

1 Ответ

1 голос
/ 22 сентября 2011

«Мне трудно понять, как все это работает вместе»

Это довольно хорошее резюме WCF.:)

WCF будет использовать поставщики членства / роли для входа в систему.Их необходимо настроить в разделе serviceModel файла конфигурации.

Пользователи вашей службы будут использовать либо свойства username / password прокси-сервера, либо они должны будут сами сгенерировать конфигурацию ws-security xml, если не используютсгенерированный прокси.

Я удалил все, кроме членства / ролей, так что это (вероятно) не рабочий раздел конфигурации.

 <system.serviceModel>
<behaviors>
  <serviceBehaviors>
    <behavior name="MyCompany.Api.Services.WebService.MyProductServiceBehavior">
      <serviceCredentials>
        <userNameAuthentication
        userNamePasswordValidationMode="MembershipProvider"
        membershipProviderName="MyCompanyMembershipProvider" />
      </serviceCredentials>
      <serviceAuthorization principalPermissionMode='UseAspNetRoles' roleProviderName='MyCompanyRoleProvider' />
    </behavior>
  </serviceBehaviors>
</behaviors>
<bindings>
  <basicHttpBinding>
    <binding name="MembershipBinding">
      <security mode="TransportWithMessageCredential">
        <transport clientCredentialType="None" />
        <message clientCredentialType="UserName" />
      </security>
    </binding>
  </basicHttpBinding>
</bindings>
<services>
  <service behaviorConfiguration="MyCompany.Api.Services.WebService.MyProductServiceBehavior" name="MyCompany.Api.Services.WebService.MyProductService">
    <endpoint address="" binding="basicHttpBinding"  bindingConfiguration="MembershipBinding" contract="MyCompany.Api.Services.WebService.IMyProductService" />
  </service>
</services>

Вот пример использования сгенерированного прокси:

        api = new MyProxyService.MyProxyServiceClient();

        api.ClientCredentials.UserName.UserName = userAcct;
        api.ClientCredentials.UserName.Password = password;

        api.MethodCall();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...