导出 (0) 打印
全部展开

设置基于 REST 的 Service Bus 应用程序的安全性

更新时间: 2014年6月

本主题假定你的应用程序使用 Microsoft.ServiceBus.dll 程序集和 Azure 中提供的身份验证功能与 Service Bus 交互。特别是,本主题将介绍使用 WebHttpRelayBinding 绑定(Web 应用程序的默认绑定)的应用程序。

已根据最常见的方案创建了适用于 Web 客户端的中继身份验证选项,这些 Web 客户端用于访问构建在 WebHttpRelayBinding 绑定上的服务。Web 样式的客户端常常会与决定接受所有传入流量的服务通信。这些客户端会使用各种自定义技术,只执行轻型身份验证,以便启用并丰富 AJAX 样式的用户体验。可以通过将 WebHttpRelayBinding 绑定的 Security.Transport.RelayAuthenticationType 属性设置为 None,实现同样的效果并提供类似的保真度。 你可以在 Service Bus WebNoAuth 中继身份验证示例中看到此选项。稍后会在本部分描述设置此选项的简化过程。

  1. 在服务中,根据需要配置身份验证:

    Console.Write("Your Issuer Name: ");
    string issuerName = Console.ReadLine();
    Console.Write("Your Issuer Secret: ");
    string issuerSecret = Console.ReadLine();
    …
    TransportClientEndpointBehavior clientBehavior = new TransportClientEndpointBehavior();
    clientBehavior.CredentialType = TransportClientCredentialType.SharedSecret;
    clientBehavior.Credentials.SharedSecret.IssuerName = issuerName;
    clientBehavior.Credentials.SharedSecret.IssuerSecret = issuerSecret;
    

    与其他应用程序一样,你可以通过 App.config 文件或编程方式配置身份验证。

  2. RelayClientAuthenticationType 字段设置为 None

    <bindings>
      <!-- Application Binding -->
      <webHttpRelayBinding>
        <binding name="default">
          <security relayClientAuthenticationType="None" />
        </binding>
      </webHttpRelayBinding>
    </bindings>
    

    这就可以让服务通过 Service Bus(根据需要)进行身份验证,但同时也会使任何客户端无需身份验证即可进行连接。 在此方案中,App.config 文件定义了用于整个方案的安全类型,但编程配置(在步骤 1 中)将覆盖 App.config 文件 - 这是必要的,因为不可能对服务身份验证使用“None”。

如果你使用 RelayClientAuthenticationType 属性的 RelayAccessToken 选项,则 Service Bus 将在简单的 HTTP 服务之上提供一个安全层,使任何 HTTP 流量在转发到侦听服务之前都需要进行身份验证和授权。 如果在 Service Bus 上启用了 Relay 身份验证,则可以通过编程凭据提供所需的安全令牌。

如果你决定实现编程凭据,则可以通过 访问控制 服务使用适用于 Service Bus 的任何身份验证选项,如共享机密或简单 Web 令牌。 有关详细信息,请参阅 TechNet 上的 如何:在 Service Bus 应用程序上设置安全性和身份验证。以下过程显示了用于创建 Web 令牌的简化过程。

  1. 检索用户的颁发者名称和机密:

    Console.Write("Your Issuer Name: ");
    string issuerName = Console.ReadLine();
    Console.Write("Your Issuer Secret: ");
    string issuerSecret = Console.ReadLine();
    
  2. 将传输客户端凭据类型定义为 SimpleWebToken

    TransportClientEndpointBehavior behavior = new TransportClientEndpointBehavior();
    behavior.CredentialType = TransportClientCredentialType.SimpleWebToken;
    
    
  3. 通过调用 ComputeSimpleWebTokenString,计算并初始化 Web 令牌:

    behavior.Credentials.SimpleWebToken.SimpleWebToken = SharedSecretCredential.ComputeSimpleWebTokenString(issuerName, issuerSecret);
    

    创建 Web 令牌后,你可以向终结点添加行为、创建通道工厂以及打开 Service Bus 通道。

显示:
© 2014 Microsoft