【问题标题】:Authentication error sending messages to Windows Service Bus 1.0 on AWS向 AWS 上的 Windows Service Bus 1.0 发送消息的身份验证错误
【发布时间】:2013-07-12 00:34:50
【问题描述】:

我正在尝试从本地工作组计算机(Windows 7)(称为“客户端”)向设置在工作组服务器(托管在 AWS EC2 上)上的 Service Bus 1.0 发送和接收消息。经过多次试验和研究,我无法将消息从客户端机器发送到服务器。我关注了许多似乎表明可以这样做的文章,但我无法解决我看到的身份验证问题。

Connecting to Windows Server Service Bus on AWS

Microsoft Service Bus on a Windows Workgroup

我注意到 Microsoft 系统要求似乎表明它“不受支持”和“不可能”。我的问题是这可以做到吗,有人成功了吗?任何帮助将不胜感激。

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

感谢任何帮助。谢谢。

【问题讨论】:

    标签: amazon-web-services servicebus


    【解决方案1】:

    尝试使用 OAuthTokenProvider 并确保 connBuilder 传递正确的值。

    TokenProvider tokenProvider = TokenProvider.CreateOAuthTokenProvider(connBuilder.StsEndpoints, new NetworkCredential(connBuilder.WindowsCredentialUsername, connBuilder.WindowsCredentialPassword));

    一旦您尝试此操作,请回复您在客户端中遇到的例外情况。此外,在服务器中,搜索服务总线部分中的事件,该事件将提供有关异常的更多详细信息。

    有了这些信息,我们应该继续下一步。

    【讨论】:

    • 我用 OAuthTokenProvider 重新测试并验证了正确的凭据已通过(SBUser 加密码)。这最初给了我错误:X.509 证书 CN=AMAZONA-PQxxxxx 不在受信任的人员存储中。我可以通过导出证书并导入到客户端来解决。现在它给出了这个错误:MessagingCommunicationException:外发消息的身份检查失败。远程端点的预期 DNS 身份是“54.214.245.186”,但远程端点提供了 DNS 声明“AMAZONA-PQxxxxx”。
    • 我使用与初始帖子相同的连接字符串。服务器上的服务总线事件日志中没有任何内容。这是正确的位置吗?事件查看器->应用程序和服务日志->Microsoft->ServiceBus->CASSink 和客户端。
    【解决方案2】:

    你查到真相了吗?

    通过在客户端计算机主机文件中设置证书绑定到的服务器的完全限定域名,我设法解决了完全相同的问题。

    因此,如果您在连接字符串中输入了 IP 地址,则应改为输入“AMAZONA-PQxxxxx”。在您的主机文件中,将“AMAZONA-PQxxxxx”解析为 IP 地址。

    【讨论】:

    • 这并没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论 - 您可以随时评论自己的帖子,一旦您有足够的reputation,您就可以comment on any post
    • 如果您有新问题,请点击 按钮提出问题。如果有助于提供上下文,请包含指向此问题的链接。
    • 我从来没有设法解决这个问题。从那以后,我改用在域上的计算机上运行,​​这工作正常,足以满足我的需求。
    【解决方案3】:

    我们遇到了同样的问题。服务器 W2k12R2,独立,工作组;客户端 Windows 7,同一个工作组。

    必须在两个系统上拥有相同的用户帐户。看起来这是某种“身份验证代理”正在运行。

    看看上面提到的兼容性矩阵: http://msdn.microsoft.com/en-us/library/windowsazure/jj193011(v=azure.10).aspx

    谢谢,

    霍尔格

    【讨论】:

      猜你喜欢
      • 2018-07-25
      • 1970-01-01
      • 2015-12-14
      • 1970-01-01
      • 2013-06-08
      • 2019-11-10
      • 1970-01-01
      • 1970-01-01
      • 2021-03-17
      相关资源
      最近更新 更多