Не совсем уверен, какая у вас точная настройка. Однако можно напрямую получить токен на предъявителя, используя пароль.
Я бы рекомендовал это только для целей тестирования. Использование этого гранта в производственном сценарии следует рассматривать только в унаследованных целях.
https://github.com/AzureAD/microsoft-authentication-library-for-dotnet/wiki/Username-Password-Authentication
string authority = "https://login.microsoftonline.com/contoso.com";
string[] scopes = new string[] { "user.read" };
PublicClientApplication app = new PublicClientApplication(clientId, authority);
try
{
var securePassword = new SecureString();
foreach (char c in "dummy") // you should fetch the password
securePassword.AppendChar(c); // keystroke by keystroke
result = await app.AcquireTokenByUsernamePasswordAsync(scopes, "joe@contoso.com",
securePassword);
}
catch(MsalException)
{
// See details below
}
Console.WriteLine(result.Account.Username);
Вы также можете использовать Почтальон или аналогичные инструменты:
curl -X POST \
https://login.windows.net/<tenant>/oauth2/token \
-H 'Accept: application/json' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'grant_type=password&scope=openid&resource=<resourceUri>&client_id=<yourClientId>&client_secret=<clientSecret>&username=<username>&password=<password>'