로컬 작업 그룹 시스템 (Windows 7)에서 메시지를 보내고 받으려는 경우 작업 그룹 서버에 설정된 서비스 버스 1.0으로 '클라이언트'라고합니다. AWS EC2에서 호스팅). 많은 시련과 연구 끝에 클라이언트 컴퓨터에서 서버로 메시지를 보낼 수 없습니다. 나는 그것이 가능하다는 것을 나타내는 것으로 보이는 다수의 기사를 따라 왔지만 지금보고있는 인증 문제를 해결할 수는 없습니다.AWS의 Windows Service Bus 1.0에 대한 인증 오류가 발생했습니다.
Microsoft Service Bus on a Windows Workgroup
Connecting to Windows Server Service Bus on AWS
나는 마이크로 소프트 시스템 요구 사항은 "지원되지 않음"과 "불가능"을 나타 내기 위해 표시주의. 내 질문은이 일을 할 수 있는가? 그리고 누구에게 성공을 가져 왔는가? 어떤 도움이라도 대단히 감사하겠습니다.msdn.microsoft.com/en-us/library/windowsazure/jj193011(v=azure.10).aspx
내 시도는 WindowsTokenProvider 및 OAuthTokenProvider를 사용하여 포함한다.
System.UnauthorizedAccessException : 토큰 공급자가 'https://xx.xx.xx.xx:9355/ServiceBusDefaultNamespace/ $ STS/Windows /'에 액세스하는 동안 토큰 공급자가 보안 토큰을 제공하지 못했습니다. 토큰 공급자가 메시지를 반환했습니다 : ''. ---> System.IdentityModel.Tokens.SecurityTokenException : 'https://xx.xx.xx.xx:9355/ServiceBusDefaultNamespace/ $ STS/Windows /'에 액세스하는 동안 토큰 공급자가 보안 토큰을 제공하지 못했습니다. 토큰 공급자가 메시지를 반환했습니다 : ''. ---> System.Net.WebException : 원격 서버가 오류를 반환했습니다 : (401) Unauthorized.
서비스 버스 네임 스페이스는 작업 그룹 설치를 위해 AddressingScheme "경로"로 설정됩니다. 클라이언트 측 연결 문자열에는 서버에 연결할 IP가 포함되어 있으며 큐를 만들기 전에 RemoteCertificateValidationCallback을 설정했습니다.
Endpoint=sb://xx.xx.xx.xx/ServiceBusDefaultNamespace;StsEndpoint=https://xx.xx.xx.xx:9355/ServiceBusDefaultNamespace;RuntimePort=9354;ManagementPort=9355;WindowsUsername=SBUser;WindowsDomain=[NotUsed];WindowsPassword=[Password]
코드는 원격 큐에 연결하고 다음과 같은 메시지가 보내 :
ServiceBusConnectionStringBuilder connBuilder = new ServiceBusConnectionStringBuilder(ConfigurationManager.AppSettings["Microsoft.ServiceBus.ConnectionString"]); // Gets the connection string above
TokenProvider tokenProvider = WindowsTokenProvider.CreateWindowsTokenProvider(connBuilder.StsEndpoints, new NetworkCredential(connBuilder.WindowsCredentialUsername, connBuilder.WindowsCredentialPassword));
MessagingFactorySettings messagingFactorySettings = new MessagingFactorySettings();
messagingFactorySettings.TokenProvider = tokenProvider;
MessagingFactory messagingFactory = MessagingFactory.Create(connBuilder.GetAbsoluteRuntimeEndpoints(), messagingFactorySettings);
requestQueue = messagingFactory.CreateQueueClient("RequestQueue");
...
requestQueue.Send(sendMessage); // Fails here
서버 계정에 암호로 SBUser 내가 도메인/호스트가 토큰에 빈 지정 떠났다 공급자. 서버의 이벤트 뷰어는 시도중인 인증이 토큰 제공자의 클라이언트가 아니라 클라이언트의 사용자 계정임을 보여줍니다. 왜 이런거야? 분명히 서버에서 인증하기 위해 뭔가 빠졌습니다.
An account failed to log on.
Subject:
Security ID: NULL SID
Account Name: -
Account Domain: -
Logon ID: 0x0
Logon Type: 3
Account For Which Logon Failed:
Security ID: NULL SID
Account Name: [ClientLogin]
Account Domain: [ClientMahcine]
Failure Information:
Failure Reason: Unknown user name or bad password.
Status: 0xc000006d
Sub Status: 0xc0000064
감사합니다. 감사.
내가 OAuthTokenProvider 다시 테스트 및 전달되는 올바른 자격 증명 (SBUser 플러스 암호)를 확인한를. 이것은 초기에 다음과 같은 오류를 표시합니다. X.509 인증서 CN = AMAZONA-PQxxxxx가 신뢰할 수있는 사용자 저장소에 없습니다. 인증서를 내보내고 클라이언트로 가져 와서 해결할 수 있습니다. 이제이 오류가 발생합니다. MessagingCommunicationException : 보내는 메시지의 신원 확인이 실패했습니다. 원격 종단점의 예상 DNS 신원은 '54 .214.245.186 '이었지만 원격 종점은 DNS 청구'AMAZONA-PQxxxxx '를 제공했습니다. – Lewis
초기 게시물 당 동일한 연결 문자열을 사용하고 있습니다. 서버의 서비스 버스 이벤트 로그에는 아무 것도 없습니다. 올바른 위치입니까? 이벤트 뷰어 -> 응용 프로그램 및 서비스 로그 -> Microsoft-> ServiceBus-> CASSink 및 클라이언트. – Lewis