내 이벤트 허브 발행자 코드에서 device-ID (또는 publisher-Id)와 함께 SAS 토큰 인증을 사용하고 있습니다. 하지만 장치 ID를 사용하여 인증 한 경우에도 "CreatePartitionedSender"클라이언트를 사용하여 모든 파티션 ID에 이벤트를 보낼 수 있음을 알 수 있습니다. 반면에 두 개의 다른 device-Id가 같은 파티션에 이벤트를 게시하는 것을 원하지 않습니다. 일부 사용자 정의 "인증"코드를 SAS 인증과 함께 추가하여 모든 장치에 대한 제한된 파티션 액세스를 허용 할 수 있습니까?이벤트 허브의 인증
장치 및 파티션 -ID 조합에 대한 권한 부여를 추가하는 아이디어는 여러 테넌트에 대해 단일 이벤트 허브를 수용하는 것이 었습니다. 내가 누락 된 부분이 있으면 알려주십시오.
출판사의 코드는 아래를 참조하십시오 : 현재 인증 모델
var publisherId = "1d8480fd-d1e7-48f9-9aa3-6e627bd38bae";
string token = SharedAccessSignatureTokenProvider.GetPublisherSharedAccessSignature(
new Uri("sb://anyhub-ns.servicebus.windows.net/"),
eventHubName, publisherId, "send",
sasKey,
new TimeSpan(0, 5, 0));
var factory = MessagingFactory.Create(ServiceBusEnvironment.CreateServiceUri("sb", "anyhub-ns", ""), new MessagingFactorySettings
{
TokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider(token),
TransportType = TransportType.Amqp
});
var client = factory.CreateEventHubClient(String.Format("{0}/publishers/{1}", eventHubName, publisherId));
var message = "Event message for publisher: " + publisherId;
Console.WriteLine(message);
var eventData = new EventData(Encoding.UTF8.GetBytes(message));
await client.SendAsync(eventData);
await client.CreatePartitionedSender("5").SendAsync(eventData);
await client.CreatePartitionedSender("6").SendAsync(eventData);
농구대를 뛰어 넘지 않으면 파티션을 공유 할 부분에 대해서는 http://stackoverflow.com/questions/28292330/azure-eventhub-multiple-partition-key-points-to-same-partition을 참조하십시오. SAS 토큰을 직접 사용하지는 않았지만 SAS에서 제한된 게시자 URI ( .servicebus.windows.net/<이벤트 허브 이름>/publishers/)를 사용하여 추측하겠습니다. URI는 필요한 제한을 제공 할 수 있습니다. 결코 사용하지 않았지만 문서는 나에게 그것을 암시합니다. –
cacsar