PrincipalPermission.Demand () falhou depois que o Serviço WCF foi movido para SSL
aplicativo @My Silverlight / WCF usa PrincipalPermission em cada método de serviço para garantir que o usuário seja autenticado. Isso funciona muito bem quando tenho tudo configurado para HTTP, mas depois que configurei meus pontos de extremidade / ligações de serviço para suportar HTTPS (SSL), recebo uma exceção lançada quando chamo o método Demand () do meu objeto PrincipalPermissio
EDIT: devo mencionar que estou usando o IIS 7.5 Express para hospedar e depurar este projet
Aqui está o método que verifica se o usuário é autorizado. É chamado a partir de cada um dos meus métodos de serviço:
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); }
}
}
A execução apresentada é "Falha na solicitação de principal"
Aqui estão os bits importantes do meu arquivo web.config:
<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>
Aqui está o 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" />
Espero que alguém possa apontar na direção certa aqui. Novamente, essa configuração funciona muito bem até eu configurar meus serviços para SSL. Alguma ideia
Obrigado
-Scott
Pensei ter encontrado o problema e respondi minha própria pergunta - mas estava errado. Ainda tem o mesmo problema.