Получение графического API-токена с использованием метода AcquireTokenByUsernamePassword для федеративного пользователя - PullRequest
1 голос
/ 06 мая 2019

Я попытался получить токен, используя ROPC, используя имя пользователя и пароль, предоставленные клиентом. Но сообщение об ошибке было «parsing_wstrust_response_failed». То же, что и сообщение об ошибке (последняя ошибка), описанное здесь

Из этого сообщения об ошибке я понял, что мой пользователь является федеративным и не может использовать этот метод. Есть ли другой способ получить токен для федеративного пользователя, используя имя пользователя и пароль?

try
{
  result = await app.AcquireTokenByUsernamePassword(scopes,
               "joe@contoso.com",
               securePassword)
               .ExecuteAsync();
}
catch (MsalClientException ex) when  (ex.ErrorCode=="parsing_wstrust_response_failed"){
}

Ответы [ 2 ]

2 голосов
/ 07 мая 2019

Во-первых, предупреждение: вы действительно не должны использовать имя пользователя / пароль в вашем приложении.В целом, это менее безопасно и увеличивает риск, которому вы подвергаете связанную среду.Это также хрупкий подход, поскольку вы, скорее всего, обнаружите, что Azure AD потребует интерактивного входа в будущем в какое-то время - возможно, в очень неудобное для вас время.

Во-вторых, уточнение: AcquireTokenByUsernamePassword не всегда будет использовать OAuth 2.0 потока учетных данных владельца ресурса (ROPC).Когда MSAL обнаруживает, что пользователь является частью имени федеративного домена, библиотека попытается выполнить неинтерактивную аутентификацию имени пользователя / пароля , если поставщик федеративных удостоверений публикует документ обмена метаданными, который включает конечную точку, поддерживающую этот метод.Если этот запрос будет выполнен успешно, MSAL попытается обменять ответ (выданный федеративным поставщиком удостоверений) на обычный набор токенов из Azure AD (выданный Azure AD).

Итак, чтобы ответить на ваш вопрос:зависит. возможно использовать AcquireTokenByUsernamePassword с федеративным пользователем.Однако для этого требуется, чтобы служба федеративной идентификации поддерживала это.AD FS, которая является наиболее распространенным IdP для федерации с Azure AD, поддерживает эту конечную точку с «смешанным именем пользователя».

1 голос
/ 06 мая 2019

Нет.Выхода нет.Вам нужно обработать аутентификацию с помощью другого потока.

Я упоминал об этом недостатке в моей недавней статье: https://joonasw.net/view/ropc-grant-flow-in-azure-ad

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...