Вы можете использовать сертификаты для обеспечения безопасности или отправить имя пользователя и пароль в заголовке. Затем вы можете добавить поведение, выполнив IAuthorizationPolicy
службе, чтобы вам не приходилось выполнять проверку безопасности в каждом методе веб-службы, который вы раскрываете.
public class CertificateAuthorizationPolicy : IAuthorizationPolicy
{
public bool Evaluate(EvaluationContext evaluationContext, ref object state)
{
IIdentity identity;
object untypedIdentities;
if (!evaluationContext.Properties.TryGetValue("Identities", out untypedIdentities))
{
identity = null;
return false;
}
var identities = (IEnumerable<IIdentity>)untypedIdentities;
identity = identities.Where(item => item.AuthenticationType == "X509").FirstOrDefault();
var claimSet = (X509CertificateClaimSet)evaluationContext.ClaimSets[0];
var certificate = claimSet.X509Certificate;
}
В web.config вы говорите службы использовать политику авторизации
<behavior name="CertificateSecurityServiceBehavior">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="false" />
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceAuthorization principalPermissionMode="Custom">
<authorizationPolicies>
<add policyType="CertificateAuthorizationPolicy, MyAssembly.Security" />
</authorizationPolicies>
</serviceAuthorization>
<dataContractSerializer maxItemsInObjectGraph="2147483647" />
</behavior>
Другой вариант заключается в настройке SSL на сервере IIS так, что он требует SSL и сертификата клиента для подключения к любой странице ,
@simchona SOAP - Протокол простого доступа к объектам – Ilan
Можете ли вы опубликовать часть своего конфигурационного файла, чтобы узнать, как реализована ваша служба REST? Это через Restful API или использование конечных точек, определенных с помощью webHttpBinding? – Rajesh