Настраиваемая авторизация и аутентификация в 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.
Мой недавний вопрос, описывающий основную проблему:
Мой метод 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>