我们创建了一个下载客户端服务模型应用程序,其中 WCF 服务托管在我们的一台服务器上,客户端应用程序分布在合作伙伴之间。为合作伙伴提供了唯一的 PIN 码,他们可以使用该 PIN 对自己进行 WCF 服务验证,并可以请求下载到 WCF 服务。
客户端通过 Windows Azure 服务总线连接到 WCF 服务,我们已在其中创建了一个命名空间,客户端应用程序可以使用该命名空间连接到该服务。每个命名空间都有一个默认颁发者和默认密钥。在连接到服务总线时,我们已将此默认密钥嵌入到代码中。有人告诉我,密钥需要保护,你需要对应用程序进行签名以保护嵌入的密钥。这是真的吗?
我们真的需要保护这个密钥吗?如果是,那又如何呢?以及有没有办法简单地在服务总线中提供身份验证,以从客户端的引脚标识客户端,并仅允许一组人访问服务总线命名空间?或我在这些点上无用地担心?:)
我们正在使用服务总线中继。我一直在阅读有关 SAS 和 ACS 的信息,根据文档,继电器似乎不支持 SAS。以下是链接:"在不久的将来将添加对服务总线中继的支持。"http://msdn.microsoft.com/en-us/library/windowsazure/dn170477.aspx
我无法理解如何使用 ACS 对客户端进行身份验证。Windows Azure文档中提供的信息对我来说都是保镖,无论我多么努力,我都无法将它们与任何事情联系起来。
如果有人对我的担忧有任何信息,请通过适当的链接和指导帮助我。
谢谢!
编辑!!!我一直在搜索这个,以下链接提供了一种创建未经身份验证的客户端的方法:http://msdn.microsoft.com/en-us/library/microsoft.servicebus.nettcprelaybinding.aspx
通过在我的客户端应用程序配置中使用以下标记
<security relayClientAuthenticationType="None" />
我已经尝试过这个,但收到以下错误:"通用:授权失败。确保您指定了正确的 SharedSecret、SimpleWebToken、SharedAccessSignature 或 Saml 传输客户端凭据。缺少令牌:需要中继安全令牌。
我正在查看更多关于此错误的信息。但很少有问题出现。如果我们使 Azure 服务总线无需身份验证即可访问,那么是否有人可以简单地滥用服务总线来为自己谋取利益?
我们真的需要保护这个密钥吗?
将颁发者和默认密钥存储在服务器端。若要在 Azure 服务总线上授权,服务总线 WCF 终结点使用颁发者和默认密钥创建将使用默认密钥签名的令牌,这意味着默认密钥永远不会发送到 Azure。
有没有办法简单地在服务总线中提供身份验证 从客户端的引脚识别客户端,并且只允许一组 访问服务总线命名空间的人员?或者我没用 担心这些点?
据我了解,您已经在 WCF 端实现了某种安全性。还有另一种方法可以做到这一点。可以使用 ACS 对客户端进行身份验证。默认情况下,Azure 中继服务提供对简单 Web 令牌的支持。
以下是工作流程:
- 客户端将用户名/密码(或用户名/密钥)发送到 ACS。
- ACS 验证凭据是否有效。
- ACS 将 SWT 令牌发送回客户端。
- 客户端将 SWT 令牌打包到 HTTP 请求中(例如标题)
- 客户端使用标头中的令牌向 Web 服务发送请求。
- WCF Web 服务接收令牌并使用从 ACS 命名空间提供的受保护共享密钥。(请注意此密钥在通信过程中不发送,必须手动发送从 ACS 门户复制到 Web 服务配置文件)
- 如果令牌有效,则 Web 服务将数据发送到客户端。