我正在使用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 / '.". I know that url isn' t o-auth的 endpoints 时尝试获取令牌时超时;我不想试图去那里 .
所以我试过了:
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 回答
你试过这个吗?
使用serviceid / password从ACS获取包装令牌
使用您在ACS的第一步中再次获得的Wrap Token获取签名SWT
使用您在步骤2中获得的SWT令牌创建SimpleTokenProvider(
TokenProvider.CreateSimpleWebTokenProvider
) .这个doc有一些示例可以帮助您完成第1步和第2步 . 这有点像我猜的方式,但如果有更好的方法,我想听听它 . 顺便发送只是WRAP令牌似乎不起作用 .