Использование API управления Azure из AzureWebJob

Я разрабатываю приложение, которое должно запускать AzureWebJob для развертывания новых экземпляров сайта, когда сообщение помещается в AzureQueue. Я использую CertificateCloudeCredentials для аутентификации запроса. Я создаю учетные данные с помощью следующего кода:

var certificateString = "<the certificate string>";
var certificateString = ConfigurationManager.AppSettings["Base64Certificate"];
var certificate = new X509Certificate2(Convert.FromBase64String(certificateString));
var credentials = new CertificateCloudCredentials("67baa805-e391-4e9a-a26e-aa76d33f6475", certificate);
var managementClient =  new WebSiteManagementClient(credentials);

На моей машине разработки это работает нормально, но когда я загружаю WebJob в Azure, я получаю исключение, когда пытаюсь сделать запрос с экземпляром клиента управления. В сообщении об исключении говорится: «Сообщение: ForbiddenError: серверу не удалось аутентифицировать запрос. Убедитесь, что сертификат действителен и связан с этой подпиской».

Очевидно, мне нужен сертификат, установленный на машине, на которой будет выполняться код, но поскольку это веб-задание, выполняющееся в Azzure WebApplication, как я могу этого добиться?

Другой вариант аутентификации для API управления использует TokenCredentials, но я не мог заставить их работать в моей локальной среде. Я пробовал это руководство безрезультатно https://msdn.microsoft.com/en-us/library/dn722415.aspx. Также я сомневаюсь, что это сработает, поскольку вам нужно войти в систему с учетной записью Azzure, чтобы получить токен.

Итак .. ¿Как я могу использовать API управления из веб-задания?


person andyroschy    schedule 10.03.2016    source источник


Ответы (1)


Я думаю, что Token Credentials - лучший способ. У меня есть полный образец здесь, который вы можете использовать для вдохновения. Вам нужно будет настроить участника-службы, который вы можете передать своему приложению с помощью параметров приложения Azure.

person David Ebbo    schedule 10.03.2016
comment
Большое спасибо за ответ, образец кода и особенно сообщение в блоге, указанное в app.config образца, очень помогли. Я все еще получаю запрещенное исключение с учетными данными токена, но я предполагаю, что это потому, что я установил разрешения делегата для ManagementApi в приложении AD. Жду, пока администратор выставит разрешения приложения, чтобы потом посмотреть, работает ли оно. - person andyroschy; 11.03.2016