Как участник службы может войти в мою службу приложений Azure? - PullRequest
1 голос
/ 25 апреля 2019

Я включил аутентификацию в своей службе приложений, выполнив https://docs.microsoft.com/en-us/azure/app-service/configure-authentication-provider-aad Теперь, когда я получаю доступ к конечной точке своего веб-сайта, меня перенаправляют на страницу входа в Azure AD, и я могу продолжить работу после ввода своих учетных данных.Как я могу войти, используя учетные данные участника службы?Страница входа, очевидно, не принимает идентификатор клиента.Есть ли какой-нибудь заголовок, который я должен заполнить, чтобы сделать успешный запрос, используя учетные данные участника службы?

Информация будет высоко оценена.

1 Ответ

0 голосов
/ 25 апреля 2019

Вы правы, интерактивные потоки аутентификации (например, страница входа в систему) не применяются к приложениям и принципалам службы, они предназначены только для конечных пользователей.

Несколько важных моментов о дальнейших действиях:

  1. Использование неинтерактивного потока аутентификации, например Предоставление учетных данных клиента OAuth 2.0 для получения токена.

    Вы можете использовать соответствующий ADALБиблиотеки в зависимости от вашей платформы или напрямую нажмите конечную точку Azure AD.

    Вот пример, который напрямую касается конечной точки Azure AD.В этом примере используется секрет клиента, также возможно использовать сертификат вместо секрета, если это уместно для вашего случая.Пример в ссылке на предоставление учетных данных клиента, которой я поделился выше, показывает, что.

    POST /contoso.com/oauth2/token HTTP/1.1
    Host: login.microsoftonline.com
    Content-Type: application/x-www-form-urlencoded
    
    grant_type=client_credentials&client_id=625bc9f6-3bf6-4b6d-94ba-e97cf07a22de&client_secret=qkDwDJlDfig2IpeuUZYKH1Wb8q1V0ju6sILxQQqhJ+s=&resource=https%3A%2F%2Fservice.contoso.com%2F
    

    Вот еще один пример, который использует ADAL для .NET - Вызов веб-API в приложении демонаили длительный процесс

    Одна важная часть кода, которую вы должны заметить, находится в Program.cs

    authContext = new AuthenticationContext(authority);
    clientCredential = new ClientCredential(clientId, appKey);
    AuthenticationResult result = await authContext.AcquireTokenAsync(todoListResourceId, clientCredential);
    

    Вы не упомянули, какая платформавы используете явно, поэтому я поделился примером .NET, который мне наиболее знаком.Если вам нужен другой, обратитесь к этому руководству по документам Microsoft - Библиотеки проверки подлинности Active Directory Azure , в нем приведены ссылки на все различные поддерживаемые библиотеки Microsoft, и у каждой есть несколько соответствующих примеров.

  2. С точки зрения разрешений вашему субъекту службы необходимо будет назначить Application Permissions для соответствующего веб-приложения.Другой тип разрешений - Delegated Permissions, но они применимы только для пользователей.

  3. Когда вы спросите, какой заголовок нужно заполнить, это будет стандартный заголовок Authorization.Формат значения Bearer <access token>.В случае, если вы используете библиотеки аутентификации, такие как ADAL, библиотека позаботится об этой части, но если вы выполняете прямое попадание в конечные точки REST, вам нужно заполнить заголовок.

...