2015-09-28 2 views
0

Я разрабатываю собственное приложение, которое должно получить доступ к арендатору Azure клиента, который входит в систему (например, для входа в Azure PowerShell). Я попытался использовать идентификатор клиента Azure PowerShell, но токен обновления для обновления учетных данных кажется действительным только 12 часов. Послесловие пользователю пришлось снова войти в систему.Аутентификация с использованием API-интерфейсов Azure Service Management с использованием Azure AAD OAuth2

Я попытался создать многозадачное приложение Azure AAD, но многопользовательская аренда недоступна для собственных приложений AAD. Как я могу получить идентификатор клиента, похожий на идентификатор клиента PowerShell AAD 1950a258-227b-4e31-a9cf-717495945fc2, который позволяет мне использовать API управления Azure Service для пользователя loggin (у которого нет моего Azure AD).

ответ

2

Прежде всего, вы должны изучить список своих приложений в Azure Active Directory application gallery. Это правильный способ сделать то, что вы хотите. Они будут генерировать идентификатор клиента для вас. Вы не должны использовать тот, который уже создан для другого приложения. Тем не менее ...

Для целей тестирования я хотел сделать что-то подобное. Я использовал VS идентификатор клиента и был в состоянии успешно Auth, используя этот код:

public static string GetAuthorizationHeader() 
     { 
      AuthenticationResult result = null; 

      var context = new AuthenticationContext("https://login.windows.net/common"); // tenant agnostic endpooint 
      result = context.AcquireToken("https://management.core.windows.net/", 
              "1950a258-227b-4e31-a9cf-717495945fc2", // Windows Azure Management API's Client ID 
              new Uri("urn:ietf:wg:oauth:2.0:oob")); // standard redirect for native apps (console, desktop, mobile, etc) 

      if (result == null) 
      { 
       throw new InvalidOperationException("Failed to obtain the JWT token"); 
      } 

      return result.AccessToken; 
     } 

Я отправил код до GitHub здесь: devdash/EzAzureMgmtApiAuth, и более подробно на моем блоге: http://devian.co/2015/07/01/authenticate-to-the-azure-service-management-api/

+0

Спасибо Devian для намек на галерею приложений Azure AD. Однако проблема с вашим кодом заключается в том, что пользователю всегда нужно повторно зарегистрироваться через 12 часов, так как токен обновления, который может быть использован для обновления токена доступа, истекает через этот промежуток времени. Моим обходным решением пока является использование токена доступа олицетворенного пользователя для создания приложения Azure AD в арендодателе пользователя Azure AD, а затем использовать идентификатор клиента приложения для входа. Однако таким образом я могу использовать только новый API-интерфейс Azure Resource Manager. – Toni

+1

Опубликован пост в http://tripdubroot.com/azure/development/2015/07/01/authenticate-to-the-azure-service-management-api.html. –

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