2013-11-13 4 views
2

У меня возникли проблемы с использованием API управления ACS и симметричных ключей. Когда я добавляю идентификатор службы в ACS через API и устанавливаю симметричный ключ, кажется, что ACS меняет ключ, который я отправляю.Как получить симметричный ключ от Azure ACS?

Если я передаю «xyz123» в качестве моего значения для симметричного ключа ... когда я иду на портал управления ACS и смотрю на это значение своей другой строкой; скажем, «AHDyDG6236 =».

Если я попрошу API для значения, которое он возвращает мне «xyz123» (ServiceIdentityKey.Value).

Значение, которое необходимо ввести в систему «AHDyDG6236 =», но нет способа получить это значение без перехода на портал ACS и нажатия кнопки «показать ключ»?

Есть ли способ получить полезное значение для симметричного ключа, не заходя в портал управления ACS?

вот пример кода, который иллюстрирует то, о чем я говорю. Его построена на примере здесь: http://msdn.microsoft.com/en-us/library/hh135148.aspx

var svc = ManagementServiceHelper.CreateManagementServiceClient(); 
    var password = Encoding.UTF8.GetBytes("password"); 
    var serviceIdentity = svc.CreateServiceIdentity("testSI", password, ServiceIdentityKeyType.Symmetric, ServiceIdentityKeyUsage.Password); 
    serviceIdentity.Description = "service identity for testing"; 
    svc.SaveChangesBatch(); 
    var svc2 = ManagementServiceHelper.CreateManagementServiceClient(); 
    var si = svc2.GetServiceIdentityByName("testSI"); 
    Console.WriteLine(Encoding.UTF8.GetChars(si.ServiceIdentityKeys[0].Value)); //prints out "password" 

После выполнения этого кода перейдите к ACS портала и нажмите на симметричном ключе, а затем нажмите кнопку «показать ключ», и это показывает сгенерированный/хэш-значение ... это это значение, необходимое для аутентификации ... но нет способа получить это значение из API?

ответ

0

Я ожидаю, что он проигнорирует передаваемый вами ключ - вы создадите идентификатор службы, и ACS создаст новый ключ и сделает доступным для вас будущие сеансы. См. «Руководство по управлению сертификатами и ключами» на этой странице: http://www.windowsazure.com/en-us/manage/services/other/manage-acs/, чтобы понять, как ACS позволяет управлять ключами.

+0

Да, я подумал об этом, но API требует, чтобы вы отправили пароль. Кроме того, если он игнорирует то, что я передаю, тогда это не будет передавать мне то же самое значение при последующих вызовах. Кроме того, портал ACS позволяет вам установить свой симметричный ключ вручную. Я могу войти в портал и установить ключ на все, что захочу. Я ожидаю, что API будет поддерживать тот же тип работы. Несмотря на это, мне все еще нужно знать, как получить правильное значение из API, если я не могу установить его явно. – Jez

2

Проблема, с которой вы работаете, находится в Encoding.UTF8.GetBytes ("password").

Строка, которая отправляется на сервер, кодируется в base64, поэтому вам нужно использовать другую функцию для получения вашего байтового массива. Convert.FromBase64String («пароль»)

Пример на этой странице неправильно, но я связался с их командой, чтобы сообщить им, и мы надеемся, что они будут это исправить. How to use Access Control Service

Смежные вопросы