У меня есть служба WCF, которая размещена в IIS 7.0 / 7.5 внутри веб-приложения ASP.NET MVC (с помощью файла .svc с директивой ServiceHost
).Параметры безопасности в моей конфигурации выглядят следующим образом:
<services>
<service name="MyServiceLib.MyService">
<endpoint address="" binding="wsHttpBinding"
bindingConfiguration="wsHttpBindingConfig"
contract="MyServiceLib.IMyService" />
</service>
</services>
<bindings>
<wsHttpBinding>
<binding name="wsHttpBindingConfig">
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="None" />
<message clientCredentialType="UserName" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceCredentials>
<userNameAuthentication
userNamePasswordValidationMode="MembershipProvider"
membershipProviderName="AspNetSqlMembershipProvider"/>
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
Как вы можете видеть, я использую SSL для обеспечения безопасности транспорта, а затем проверяю подлинность с использованием имени пользователя и пароля для поставщика членства ASP.NET.Пока это работает нормально.
Но я хочу ограничить доступ к этой службе не только для аутентифицированных пользователей, но и для пользователей, которые находятся в определенной роли и у которых определенное значение установлено в их профиле .(Я использую SqlProfileProvider в веб-приложении, и у каждого пользователя есть профиль с определенными назначенными значениями.)
Возможно ли добиться этого с помощью параметров конфигурации?Если нет, могу ли я создать какую-то специальную аутентификацию на стороне службы, которая позволила бы мне получить имя пользователя и пароль из входящего сообщения, а затем проверить членство и роль и извлечь профиль из хранилища профилей?Как я могу это сделать?