PrincipalPermission.Demand() failing once WCF Service was moved to SSL

◇◆丶佛笑我妖孽 提交于 2019-12-19 11:41:15

问题


My Silverlight/WCF application uses PrincipalPermission in each service method to ensure the user is Authenticated. This works just fine when I have everything configured to HTTP, but once I configured my service endpoints/bindings to support HTTPS (SSL), I get an exception thrown when I call the Demand() method of my PrincipalPermission object.

EDIT: I should mention I am using IIS 7.5 Express to host and debug this project.

Here is the method that checks to make sure the user is authendicated. It's called from each of my service methods:

 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); }
}

}

The execption thown is "Request for principal failed."

Here are the important bits of my web.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>

Here is the 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" />

I'm hoping someone can point in in the right direction here. Again, this configuration works just fine until I configure my services for SSL. Any thoughts?

Thanks,

-Scott


I thought I found the problem, and answered my own question - but I was wrong. Still have the same issue.

来源:https://stackoverflow.com/questions/6085730/principalpermission-demand-failing-once-wcf-service-was-moved-to-ssl

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!