Подключитесь к Azure, чтобы создать регистрацию приложения

Я пытаюсь написать консольное приложение C #, которое будет регистрировать приложение в Azure Active Directory. Он должен работать так же, как Мастер создания проекта веб-приложения в VS 2013 при изменении аутентификации и выборе организационных учетных записей в Azure.

Следуя трассировке скрипта, я вижу, что он аутентифицирует пользователя с помощью wsfederation и токена oauth2, а затем использует graph.windows.net graph api для настройки субъекта-службы AAD directoryObjects и приложения.

Я пробовал использовать образец приложения Graph API, но для этого требуется, чтобы приложение было зарегистрировано. сначала, чтобы у меня был clientId (идентификатор приложения) и пароль (ключ) для отправки в запросе Acquire Token с помощью Библиотека аутентификации Windows Azure AD для .NET.

Я пробовал использовать несколько различных API-интерфейсов Azure, но у всех есть проблема с курицей и яйцом. Я хочу использовать незарегистрированное клиентское приложение для регистрации приложения в AAD. Мне нужно избегать настройки аутентификации и авторизации приложений для Graph API, поэтому что у пользователя нет ручных шагов.

Кто-нибудь знает, как это делает Visual Studio, используя только логин пользователя с приглашением браузера или если есть стандартный идентификатор приложения и пароль, которые можно использовать для доступа к графическому API, например, есть стандартный URL-адрес входа, https://login.windows.net/common? Будем очень признательны за некоторые образцы C #.

Этот пост выполняет создание приложения, но требует clientId и пароль, которого, по-моему, у меня нет.


person mgrowan    schedule 17.04.2014    source источник


Ответы (1)


Вы не можете зарегистрировать новое приложение с помощью Graph API от незарегистрированного клиента. Единственная причина, по которой поток VS2013 работает, заключается в том, что VS2013 уже зарегистрирован особым образом в Azure AD - это приложение первой стороны и имеет уникальные разрешения. В моей трассировке Fiddler VS2013 использует идентификатор клиента 872cd9fa-d31f-45e0-9eab-6e460a02d1f1. Технически вы можете использовать этот идентификатор клиента и URI перенаправления VS2013, чтобы инициировать вход с помощью Azure AD. Это по-прежнему связано с взаимодействием с пользователем (пользователь должен пройти аутентификацию через всплывающее окно браузера), поэтому он не соответствует вашему требованию «никаких ручных действий», но в некоторой степени полезен для понимания потоков протокола и того, как работает регистрация.

Суть в том, что если вы хотите вызвать Graph API без взаимодействия с пользователем (поток учетных данных клиента), клиент должен быть зарегистрирован с соответствующими разрешениями приложения.

person Sean Osterberg    schedule 17.04.2014
comment
Спасибо @ sean-osterberg. Когда я сказал, что никаких ручных действий не требуется, я имел в виду, что мне нужно пойти куда-нибудь еще, чтобы настроить что-то перед запуском приложения для настройки. Запрос у пользователя учетных данных и необходимых URL-адресов конфигурации и т. Д. В порядке. Тем не менее, использование идентификатора клиента VS, похоже, работает: _authenticationContext = new AuthenticationContext("https://login.windows.net/common"); var token = _authenticationContext.AcquireToken("https://graph.windows.net", "872cd9fa-d31f-45e0-9eab-6e460a02d1f1", new Uri("urn:ietf:wg:oauth:2.0:oob")); Спасибо! - person mgrowan; 18.04.2014
comment
Да, это работает, но не рекомендуется. Мне любопытно, почему вы хотите это сделать. Похоже, вы хотите загрузить некоторую конфигурацию для приложения, которое может аутентифицироваться для любого клиента. Если это так, вам действительно следует зарегистрировать мультитенантное приложение в своем каталоге, а затем разрешить пользователям давать согласие на использование этого приложения. Хотите поделиться своим вариантом использования? - person Sean Osterberg; 18.04.2014
comment
Мы хотим, чтобы наше приложение размещалось у наших партнеров и проходило проверку подлинности с помощью AAD существующих клиентов Office 365. Когда партнер хочет подготовить нового клиента, мы хотим, чтобы он мог создать новый экземпляр и зарегистрировать его в клиентском AAD. На данный момент клиенту необходимо активировать свой портал Azure, перейти в раздел «Каталог» ›Приложение› Добавить ›Копировать ключ› изменить web.config и т. Д. Мы просто хотим предоставить им инструмент, который они запускают, отвечают на запросы, и все настроено. . Я рассмотрел вариант с несколькими арендаторами, но я понимаю, что он работает только в том случае, если у вас есть один размещенный экземпляр? - person mgrowan; 18.04.2014
comment
Я думаю, что это был бы лучший способ, чем использование идентификатора клиента VS: попросите вашего партнера создать единую регистрацию собственного приложения в своем собственном каталоге. Делайте все, как сейчас, но вместо этого используйте новый идентификатор клиента, указывающий на общую конечную точку. Таким образом, вы не используете собственный идентификатор клиента, что не рекомендуется и может стать неприемлемым в будущем. UX немного отличается, но, на мой взгляд, лучше для клиентов - им будет предложено диалоговое окно согласия, показывающее запрошенные разрешения. В этом диалоговом окне отображается название компании вашего партнера. Все остальное будет работать так же. - person Sean Osterberg; 19.04.2014