Интерактивный вход в систему с Azure SDK из ж / д VSCode DevContainer - PullRequest
0 голосов
/ 08 апреля 2020

При использовании devcontainers в проекте, в котором мы используем MSI для обмена данными между приложениями, мы используем DefaultAzureCredential в качестве класса для загрузки либо с компьютера локального разработчика, либо на Azure MSI запущенный сервис. Чтобы это заработало, я обнаружил, что нам нужно добавить параметр includeInteractiveCredentials: true в конструктор. Это приводит к тому, что окно браузера всплывает в момент нажатия на код (честно, довольно круто). Если у нас не было этого набора параметров, он не собирал никаких пользовательских кредитов для доступа к ресурсам.

Проблема, с которой мы сталкиваемся, заключается в том, что мы загружаем наше решение в его devcontainer * 1006. * вход в браузер, который обычно появляется во время отладки для получения учетных данных локального пользователя, не разрешается запускать. Вместо этого мы встречаемся со следующей ошибкой:

Azure.Identity: DefaultAzureCredential authentication failed. InteractiveBrowserCredential authentication failed. Microsoft.Identity.Client: Unable to open a web page using xdg-open. See inner exception for details. Possible causes for this error are: xdg-open is not installed or it cannot find a way to open an url - make sure you can open a web page by invoking from a terminal: xdg-open https://www.bing.com . System.Diagnostics.Process: No such file or directory.

Затем мы добавили xdg-utils к нашему вызову apt-get в нашем файле Docker, но теперь нас встретили с

/usr/bin/xdg-open: 870: /usr/bin/xdg-open: www-browser: not found
/usr/bin/xdg-open: 870: /usr/bin/xdg-open: links2: not found
/usr/bin/xdg-open: 870: /usr/bin/xdg-open: elinks: not found
/usr/bin/xdg-open: 870: /usr/bin/xdg-open: links: not found
/usr/bin/xdg-open: 870: /usr/bin/xdg-open: lynx: not found
/usr/bin/xdg-open: 870: /usr/bin/xdg-open: w3m: not found
xdg-open: no method available for opening 'https://login.microsoftonline.com/...'

Я зашел так далеко, что щелкнул ссылку / вставил ее в браузер моей операционной системы, вошел в систему, затем посмотрел на порт, который пытался выполнить обратный вызов (например, localhost:44663), и сразу выполнение «прямого порта» из командной строки VSCode, но это также не помогло, сказав, что объект состояния не совпадает.

Кроме того, выполнение az login w / в контейнере не устраняет проблему.

Как мы должны использовать локальные Azure учетные данные из контейнера Dev? Имейте в виду, что мы хотели бы избежать создания принципала службы в Azure только для того, чтобы локальная разработка работала.

...