2011-09-15 5 views
0

사용자 지정 만든 vb.net 응용 프로그램에서 CRM 2011 관리에 대한 CRM 2011 배포 서비스를 활용하려고합니다. 조직의 특정 요구 사항에 맞게 조정 된이 사용자 지정 응용 프로그램을 개발해야하므로 Deployment Manager를 사용해야한다고 말하지 마십시오. 내가 HTTP를 사용하지만 난 배포 서비스하는 방법 SSL을 사용하여 전화 연결하려고 할 때 다음발신자가 서비스 오류 (SSL을 통한 CRM 2011 배포 wcf 서비스 메서드 호출)로 인증되지 않았습니까?

(HTTPS가 서버에서 사용 가능) 때

모든 것이 잘 작동 내 관련 클라이언트 configurtion는 HTTPS /입니다 SSL 만

<binding name="CustomBinding_IDeploymentServiceHttps"> 
     <security defaultAlgorithmSuite="Default" authenticationMode="SspiNegotiatedOverTransport" 
        requireDerivedKeys="false" securityHeaderLayout="Strict" includeTimestamp="true" 
        keyEntropyMode="CombinedEntropy" protectTokens="false" messageSecurityVersion="WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10" 
        requireSecurityContextCancellation="true"> 
     <localClientSettings cacheCookies="true" detectReplays="false" 
      replayCacheSize="900000" maxClockSkew="00:05:00" maxCookieCachingTime="Infinite" 
      replayWindow="00:05:00" sessionKeyRenewalInterval="10:00:00" 
      sessionKeyRolloverInterval="00:05:00" reconnectTransportOnFailure="true" 
      timestampValidityDuration="00:05:00" cookieRenewalThresholdPercentage="60" /> 
     <localServiceSettings detectReplays="false" issuedCookieLifetime="10:00:00" 
      maxStatefulNegotiations="128" replayCacheSize="900000" maxClockSkew="00:05:00" 
      negotiationTimeout="00:01:00" replayWindow="00:05:00" inactivityTimeout="00:02:00" 
      sessionKeyRenewalInterval="15:00:00" sessionKeyRolloverInterval="00:05:00" 
      reconnectTransportOnFailure="true" maxPendingSessions="128" 
      maxCachedCookies="1000" timestampValidityDuration="00:05:00" /> 
     <secureConversationBootstrap /> 
     </security> 
     <textMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16" 
      messageVersion="Default" writeEncoding="utf-8"> 
     <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" 
      maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
     </textMessageEncoding> 
     <httpsTransport manualAddressing="false" maxBufferPoolSize="524288" 
      maxReceivedMessageSize="65536" allowCookies="false" authenticationScheme="Anonymous" 
      bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" 
      keepAliveEnabled="true" maxBufferSize="65536" proxyAuthenticationScheme="Anonymous" 
      realm="" transferMode="Buffered" unsafeConnectionNtlmAuthentication="false" 
      useDefaultWebProxy="true" requireClientCertificate="false" /> 
    </binding> 

<client> 
    <!-- Deployment Service Endpoints HTTP,HTTPS--> 
    <endpoint address="http://10.40.30.20:5555/XRMDeployment/2011/Deployment.svc" 
    binding="customBinding" bindingConfiguration="CustomBinding_IDeploymentService" 
    contract="CRM2011DeploymentSvc.IDeploymentService" name="CustomBinding_IDeploymentService"> 
    <identity> 
     <userPrincipalName value="LAB2010\administrator" /> 
    </identity> 
    </endpoint> 
    <endpoint address="https://www.mydomain.com/XRMDeployment/2011/Deployment.svc" 
      binding="customBinding" bindingConfiguration="CustomBinding_IDeploymentServiceHttps" 
      contract="CRM2011DeploymentSvc.IDeploymentService" name="CustomBinding_IDeploymentServiceHttps" /> 
</client> 
0 123,414,내 asp.net 응용 프로그램을 위의 코드는 단지 서비스의 초기화에 사용되는

Dim DomainCredentials As New NetworkCredential(ADUserName, ADPassword, DomainNETBIOS) 
If CRMDeploymentServiceURl.Trim().ToLower().StartsWith("https://") Then 
      _CrmDeployService = New DepSvc.DeploymentServiceClient("CustomBinding_IDeploymentServiceHttps") 
     Else 
      _CrmDeployService = New DepSvc.DeploymentServiceClient("CustomBinding_IDeploymentService") 
     End If 
     _CrmDeployService.ClientCredentials.Windows.ClientCredential = DomainCredentials 
     _CrmDeployService.Endpoint.Address = New EndpointAddress(New Uri(CRMDeploymentServiceURl)) 
     _CrmDeployService.Endpoint.Binding.CloseTimeout = New TimeSpan(0, 30, 0) 
     _CrmDeployService.Endpoint.Binding.OpenTimeout = New TimeSpan(0, 30, 0) 
     _CrmDeployService.Endpoint.Binding.ReceiveTimeout = New TimeSpan(0, 30, 0) 
     _CrmDeployService.Endpoint.Binding.SendTimeout = New TimeSpan(0, 30, 0) 

에 다음 코드를 사용하고 있습니다. 나중에 _CrmDeployService 개체를 사용하여 메서드를 호출하면 https가 아닌 http에서 제대로 작동합니다.

클라이언트 인증서를 사용하지 않고 HTTPS 보안 배포 서비스와 통신하려면 어떻게해야합니까? (DigiCert의 SSL 인증서가 이미 서버에 설치되어 있으며 웹 브라우저에서 SSL을 통해 웹 사이트를 탐색 할 수 있습니다.) 다른 인증서가 필요한 이유는 무엇입니까?

IIS 설정은 필요에 따라 완료되었습니다. WCf 서비스는 웹 브라우저를 통해 SSL/https를 통해 탐색 할 수 있습니다.) 서버에서 도메인 사용자를 통한 인증뿐 아니라 익명 인증을 시도하고 코드에서도 동일한 처리를 수행했습니다.

구성 변경이 필요합니까? 이것이 WCF 특정 문제입니까? 나는 stackoverflow에 게시 된 솔루션을 시도했지만 msdn을 통해 사용할 수는 있지만 아무 소용이 없습니다. 서버의 web.config를 변경할 수없고 클라이언트 인증서를 사용해서는 안되지만 인증에 필요한 자격 증명을 사용할 수 있으며 SSL을 통해이를 획득해야합니다. 도와주세요. 감사합니다

답변

-1

SSL은 인증서가 필요하다는 것을 의미합니다. 먼저 WCF가 ssl로 작동하는지 확인하는 예제 응용 프로그램을 만들어 확인하십시오. 그 이유는 CRM 서버가 문제 (인증서를 찾고 있습니다)이거나 WCF가 먼저 도달하지 못한 경우 악화 될 수 있기 때문입니다 그 점. WCF가 실패하면 임시 인증서를 만들어야합니다. 여기에 인터넷에 충분한 도움말 코드가 있습니다. (만약 당신이 좋아하면 서로 다른 전송/메시지 보안 모드를 함께 놀러)

http://msdn.microsoft.com/en-us/library/ff648498.aspx

및 응용 프로그램의

다음 바인딩이 사용
<basicHttpBinding> 
<binding name="basicHttp"> 
<security mode="TransportWithMessageCredential" > 
<transport/> 
<message clientCredentialType=”UserName”/> 
</security> 
</binding> 
</basicHttpBinding> 

또한 IIS를 구성해야합니다.iis에서 https을 사용하도록 설정하고 인증서가 Directory Security | Server Certificate.

인 것으로 생각하고 실버 라이트 애플리케이션 인 경우 추가 개발이 필요합니다. 행복 코딩 마하 :

+0

SSL 인증서가 이미 서버에 설치되어 있습니다. 어떤 다른 인증서가 필요합니까? 또한 필요에 따라 IIS 설정이 완료되었습니다. WCF는 웹 브라우저를 통해 SSL/htps를 통해 브라우즈 할 수 있습니다. –