Настраиваемая авторизация и аутентификация в wcf webhttpbindig

Я создаю простой сервис wcf с webhttpbinding, как вы можете видеть:

    [OperationContract]
    [WebInvoke(Method = "GET", UriTemplate = "/Data/{data}")]
    string GetData(string data);

и реализация:

   public string GetData(string value)
        {

                return string.Format("You entered: {0}", value);

        }

Я хочу создать пользовательскую авторизацию и аутентификацию около 2 недель, но я не могу. Я много гуглял, но я могу найти аутентификацию для wshttpbinding, а не webhttpbinding.

Мой недавний вопрос, описывающий основную проблему:

Моя пользовательская функция авторизации в wcf не выполняется. Должен ли я определить ее в webconfig?

Мой метод CustomAuthorizationPolicy.Evaluate() никогда не срабатывает

1 ответ

Вы можете реализовать ServiceAuthorizationManager для предоставления авторизации вашей службе WCF с помощью привязки webhttp.

Ваш код может выглядеть примерно так:

public class CustomAuthorizationManager : ServiceAuthorizationManager
{
    protected override bool CheckAccessCore(OperationContext operationContext)
    {
        try
        {
            ServiceSecurityContext securityContext = operationContext.ServiceSecurityContext;
            WindowsIdentity callingIdentity = securityContext.WindowsIdentity;

            WindowsPrincipal principal = new WindowsPrincipal(callingIdentity);
            return principal.IsInRole("Administrators");
        }
        catch (Exception)
        {
            return false;
        }
    }
}

Затем зарегистрируйте свой пользовательский ServiceAuthorizationManager в файле web.config:

<serviceBehaviors>
  <behavior name="ServiceBehaviour">
    <serviceMetadata httpsGetEnabled="true"/>
    <serviceAuthorization serviceAuthorizationManagerType="YourNamespace.CustomAuthorizationManager, YourAssemblyName"/>
  </behavior>
</serviceBehaviors>
Другие вопросы по тегам