Мое приложение Silverlight / WCF использует PrincipalPermission в каждом методе службы, чтобы обеспечить проверку подлинности пользователя.Это прекрасно работает, когда у меня все настроено на HTTP, но как только я настроил конечные точки / привязки службы для поддержки HTTPS (SSL), я получаю исключение при вызове метода Demand () моего объекта PrincipalPermission.
РЕДАКТИРОВАТЬ: я должен упомянуть, что я использую IIS 7.5 Express для размещения и отладки этого проекта.
Вот метод, который проверяет подлинность пользователя.Он вызывается из каждого из моих методов обслуживания:
protected void SecurityCheck(string roleName, bool authenticated)
{
System.ServiceModel.Web.WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.OK;
PrincipalPermission p = new PrincipalPermission(null, roleName, authenticated);
try
{
p.Demand();
}
catch (Exception ex)
{
/* wrap the exception so that Silverlight can consume it */
ServiceException fault = new ServiceException()
{
/* Code = 1 will mean "unauthenticated!" */
Code = 1, Message = ex.Message
};
throw new FaultException<ServiceException>(fault); }
}
}
Исключением является запрос "Ошибка основного участника".
Вот важные биты моей сети.config file:
<behavior name="BinarySSL">
<serviceMetadata httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
<dataContractSerializer maxItemsInObjectGraph="6553600"/>
<serviceTimeouts transactionTimeout="00:10:00"/>
</behavior>
<binding name="MyApp.Web.Services.ProjectService.customBinding0"
receiveTimeout="00:10:00" sendTimeout="00:10:00">
<binaryMessageEncoding />
<httpsTransport authenticationScheme="Basic"/>
</binding>
<service name="MyApp.Web.Services.ProjectService" behaviorConfiguration="BinarySSL">
<endpoint address="" binding="customBinding" bindingConfiguration="MyApp.Web.Services.ProjectService.customBinding0"
contract="MyApp.Web.Services.ProjectService" />
</service>
Вот ClientConfig:
<binding name="CustomBinding_ProjectService">
<binaryMessageEncoding />
<httpsTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" />
</binding>
<endpoint address="https://localhost:44300/Services/ProjectService.svc"
binding="customBinding" bindingConfiguration="CustomBinding_ProjectService"
contract="ProjectProxy.ProjectService" name="CustomBinding_ProjectService" />
Я надеюсь, что здесь кто-то может указать в правильном направлении. Опять же, эта конфигурация работает нормально, пока я не настрою свои службы для SSL .Есть мысли?
Спасибо,
-Скотт
Я подумал, что нашел проблему, и ответил на свой вопрос - но я ошибался.Все еще есть та же проблема.