Использовать проверку подлинности Azure Active Directory без перенаправления в Microsoft - PullRequest
0 голосов
/ 23 января 2019

Можно ли просто передать имя пользователя и пароль в Azure Active Directory и получить токен-носитель вместо отправки пользователя на веб-сайт login.microsoft.com?

Перенаправление прерывает мою отладку Visual Studio и делает невозможным увидеть, что происходит.

1 Ответ

0 голосов
/ 23 января 2019

Не совсем уверен, какая у вас точная настройка. Однако можно напрямую получить токен на предъявителя, используя пароль.

Я бы рекомендовал это только для целей тестирования. Использование этого гранта в производственном сценарии следует рассматривать только в унаследованных целях.

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>'
...