Это в основном то, для чего предназначен поток грантов ROPC.
Вы предоставляете Azure AD учетные данные своего приложения с учетными данными пользователя и получаете токен доступа.
Этот поток обычно не следует использовать для аутентификации, поскольку он существует в стандарте в основном как устаревший путь обновления.
И он не работает с федеративными пользователями, пользователями с MFA или с просроченным паролем.
Тем не менее, ваш случай автоматизированного тестирования является одним из сценариев, где я думаю, что его использование является приемлемым.
Вот пример вызова в C #:
string tokenUrl = $"https://login.microsoftonline.com/joonasapps.onmicrosoft.com/oauth2/token";
var req = new HttpRequestMessage(HttpMethod.Post, tokenUrl);
req.Content = new FormUrlEncodedContent(new Dictionary<string, string>
{
["grant_type"] = "password",
["client_id"] = "23d3be1b-a671-4452-a928-78fb842cb969",
["client_secret"] = "REDACTED",
["resource"] = "https://graph.windows.net",
["username"] = "testuser@joonasapps.onmicrosoft.com",
["password"] = "REDACTED"
});
using (var client = new HttpClient())
{
var res = await client.SendAsync(req);
string json = await res.Content.ReadAsStringAsync();
}
ADAL.NET не предоставляет перегрузки для этого AFAIK, поэтому вам нужно сделать это вручную, как это.
Вам нужно будет заменить параметры учетными данными вашего приложения + учетными данными вашего пользователя, конечно.
URL токена также должен быть указан ваш идентификатор клиента или имя домена.
Измените параметр ресурса на URI идентификатора клиента / идентификатора приложения вашего API.