【问题标题】:What is the use of Default Issuer and Default Key in Windows Azure Service Bus? Does the key need to be secured?Windows Azure 服务总线中的默认颁发者和默认密钥有什么用?是否需要保护密钥?
【发布时间】:2013-11-01 07:00:30
【问题描述】:

我们创建了一个下载客户端服务模型应用程序,其中 WCF 服务托管在我们的一台服务器上,客户端应用程序分布在合作伙伴之间。 合作伙伴将获得唯一的 pin,他们可以使用该 pin 向 WCF 服务进行身份验证,并可以向 WCF 服务发出下载请求。

客户端通过 Windows Azure 服务总线连接到 WCF 服务,我们在其中创建了一个命名空间,客户端应用程序可以使用该命名空间连接到服务。 每个命名空间都有一个Default IssuerDefault Key。当连接到服务总线时,我们在代码中嵌入了这个 Default 键。 有人告诉我需要保护密钥,并且您需要对应用程序进行签名以保护嵌入式密钥。这是真的吗?

我们真的需要保护这个密钥吗? 如果是,那怎么办?有没有一种方法可以简单地在服务总线中提供身份验证,从他们的引脚识别客户端并只允许一组人访问服务总线命名空间? 或者 我无用地担心这些问题? :)

我们正在使用服务总线中继。 我一直在阅读有关 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

通过在我的客户端 App.Config 中使用以下标记

<security relayClientAuthenticationType="None" />

我试过这个,但得到以下错误: “通用:授权失败。确保您已指定正确的 SharedSecret、SimpleWebToken、SharedAccessSignature 或 Saml 传输客户端凭据。MissingToken:需要中继安全令牌。”

我正在寻找有关此错误的更多信息。但很少有问题出现。 如果我们让 azure 服务总线无需身份验证即可访问,那么有人会为了自己的利益而滥用服务总线吗?

【问题讨论】:

    标签: c# wcf client-server azureservicebus azure-servicebusrelay


    【解决方案1】:

    我们真的需要保护这个密钥吗?

    您将颁发者和默认密钥存储在服务器端。 为了在 Azure 服务总线上进行授权,Service Bus WCF 端点使用颁发者和默认密钥创建一个令牌,该令牌将使用默认密钥进行签名,这意味着默认密钥将永远不会发送到 Azure。

    有没有一种方法可以简单地在服务总线中提供身份验证 它从他们的引脚识别客户,并且只允许一组 访问服务总线命名空间的人?或者我没用 担心这些问题?

    据我了解,您已经在 WCF 方面实施了某种安全措施。 还有另一种方法可以做到这一点。您可以使用 ACS 来验证客户端。默认情况下,Azure 中继服务提供对简单 Web 令牌的支持。

    这是工作流程:

    1. 客户端将用户名/密码(或用户名/密钥)发送到 ACS。
    2. ACS 验证凭据是否有效。
    3. ACS 将 SWT 令牌发送回客户端。
    4. 客户端将 SWT 令牌打包到 HTTP 请求中(例如放入 标题)
    5. 客户端使用 Header 中的令牌向 Web Service 发送请求。
    6. WCF Web 服务接收令牌并使用 从 ACS 命名空间提供的安全共享密钥。(请注意 此密钥在通信期间未发送,必须手动发送 从 ACS 门户复制到 Web 服务配置文件)
    7. 如果令牌有效,则 Web 服务向客户端发送数据。

    【讨论】:

    • 我的客户端应用程序分布在 80 多个合作伙伴中。有没有可能他们中的任何人都可以反编译代码,获得默认发行者和默认密钥并将其用于自己的目的?
    • 如果他们会得到你的服务端程序集或 web.config 文件,换句话说,你的“默认发行者和默认密钥”存储的文件,那么答案是肯定的。
    • 如何保护默认密钥不被他人使用?我一直在阅读有关 ACS 的文章(不多),并且可以理解 ACS 可用于服务总线级别的身份验证。但是与服务总线连接仍然需要密钥。对?如果是这样,那么密钥是否可以共享?是否建议分享?如果没有,那么如何保护它(在客户端)?
    • 为了创建一个通道,中继绑定已经针对服务总线命名空间进行了身份验证。所以这就是为什么你必须在 Web 服务端的某个地方有一个私钥。此密钥仅用于针对已经存在的 ACS 命名空间进行身份验证。(每个服务总线命名空间都有自己的 ACS 命名空间)。“Authentificate”表示中继绑定创建一个使用该密钥签名的 TOKEN。不会发送密钥本身。ACS 会验证您是否可以在服务总线命名空间上托管 Web 服务。如果您的服务器足够安全并且没有人可以下载您的 web.config 文件,那么您就是安全的。
    • 我的 WCF 服务有默认密钥,我不担心它被滥用。问题是,我正在使用客户端应用程序上的密钥连接到服务总线。 a)这是正确的方法吗? b)如何保护客户端的密钥?密钥嵌入在我的客户端应用程序代码中。但我想,任何人都可以反编译代码并获得密钥并为自己的利益使用。客户端应用程序正在被 80 多个客户使用,因此只是想确保密钥不被暴露。如果您想查看代码,我可以将其粘贴到我的问题中。
    猜你喜欢
    • 2014-11-06
    • 1970-01-01
    • 1970-01-01
    • 2011-11-22
    • 1970-01-01
    • 2019-07-10
    • 2021-07-19
    • 2021-12-25
    • 1970-01-01
    相关资源
    最近更新 更多