Azure Bus,具有ACS服务标识的TokenProvider,使用密码

时间:2013-12-04 17:44:30

标签: authentication azure oauth swt servicebus

我正在使用Azure总线进行消息传递。我们正在使用适当的安全实践来配置ACS,即使用代表不同主题的不同依赖方和订阅。

我们正在使用ACS服务标识来访问总线。到目前为止,我们使用的是对称密钥,但我们正在使用具有这些身份的密码。

我未能找到设置TokenProvider(传递给MessagingFactory)来验证我的服务标识的方法。

我试过了:

        var serviceUri = ServiceBusEnvironment.CreateServiceUri(
            "sb",
            serviceBusNamespace,
            string.Empty);
        var tokenProvider = TokenProvider.CreateOAuthTokenProvider(
            new[] { serviceUri },
            new NetworkCredential(serviceIdentityName, serviceIdentityPassword));

抛出,抱怨“在访问'https://XYZ.servicebus.windows.net/ $ STS / OAuth /'时尝试获取令牌时超时”。“我知道url不是o-auth的终点;我不知道为什么要去那里。

所以我试过了:

        var tokenProvider = TokenProvider.CreateOAuthTokenProvider(
            new[] { new Uri("https://XYZ-sb.accesscontrol.windows.net/v2/OAuth2-13") },
            new NetworkCredential(serviceIdentityName, serviceIdentityPassword));

在访问'https://XYZ-sb.accesscontrol.windows.net/v2/OAuth2-13/ $ STS / OAuth /'时尝试获取令牌时超时“超时”。“

网址再次不好......

所以我改变了策略并尝试了:

        var tokenProvider = TokenProvider.CreateSharedSecretTokenProvider(
            serviceIdentityName,
            serviceIdentityPassword);

接收异常“令牌提供商在访问”https://XYZ-sb.accesscontrol.windows.net/WRAPv0.9/“时无法提供安全令牌”

那么......使用密码验证服务标识的正确咒语是什么?

1 个答案:

答案 0 :(得分:1)

你试过这个吗?

  1. 使用serviceid / password
  2. 从ACS获取包装令牌
  3. 使用您在ACS的第一步中获得的Wrap Token获取签名SWT
  4. 使用您在步骤2中获得的SWT令牌创建SimpleTokenProvider(TokenProvider.CreateSimpleWebTokenProvider)。
  5. 这个doc有一些示例可以帮助您完成第1步和第2步。这有点像我猜的方式,但如果有更好的方法,我想听听它。顺便发送只是WRAP令牌似乎不起作用。