开发者

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

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜