ADAL.NET v3 не поддерживает AcquireToken с UserCredential?

В ADAL.NET 2.x мы используем приведенный ниже код для получения токена из Azure AD с помощью UserCredential, и он отлично работает:

 var authContext = new AuthenticationContext(Authority);
 var userCredential = new UserCredential(username, password);
 var token = authContext.AcquireToken(ResourceUrl, ClientId, userCredential);

Когда я сегодня обновил ADAL.NET v3, код больше нельзя было скомпилировать, потому что в новой версии UserCredential не имеет перегруженного конструктора с именем пользователя и паролем.

Как я могу обойти это с помощью новой версии ADAL.NET v3?


person cuongle    schedule 26.05.2016    source источник


Ответы (4)


Вместо этого используйте класс UserPasswordCredential, который является подклассом UserCredential

person Kanishk Panwar    schedule 26.05.2016
comment
Я получаю AADSTS70002: тело запроса должно содержать следующий параметр: client_secret или client_assertion. Идентификатор трассировки: 8be09594-65c2-4e2d-bce2-17980f739371 Идентификатор корреляции: 7312b657-f6d4-4d0b-8fc2-c66f1b9f0325 Временная метка: 2016-12-28 16: 14: 16Z - person Russell at ISC; 28.12.2016
comment
вы пытаетесь использовать идентификатор конфиденциального клиента (веб-API) для собственного приложения. Вам необходимо создать новый собственный идентификатор приложения для вашего потока - person Kanishk Panwar; 29.12.2016
comment
Привет, я использую это, и в конфигурации отладки он работает нормально, но в выпуске я получаю AADSTS50126: недопустимое имя пользователя или пароль, хотя я использую тот же пароль, имя пользователя, есть идеи, что может вызвать это? - person ZoomVirus; 21.02.2017

Попробуй UserPasswordCredential, класс пришлось переименовать в v3.

person dstrockis    schedule 26.05.2016

К вашему сведению, похоже, что они удалили эту функцию из ADAL. исходный код

Я считаю, что для аутентификации с использованием комбинации имени пользователя и пароля вам придется использовать HttpClient и самостоятельно сделать почтовый запрос.

Опубликовать в:

https://login.microsoftonline.com/yourdomain.onmicrosoft.com/oauth2/token

с участием:

resource={resource}&client_id={clientid}&grant_type=password&username={username}&password={password}&scope=openid&client_secret={clientsecret}

в запросе

person Cameron W.    schedule 10.02.2017
comment
Какое значение параметра ресурса в теле запроса? Я предполагаю, но это не работает. - person Sameeksha Kumari; 08.06.2018
comment
Привет, @SameekshaKumari, это должно ответить на ваш вопрос: stackoverflow.com/questions/36297546/ - person Cameron W.; 08.06.2018

Это устраняет проблему для UserCredentials, но вы также, похоже, вносите изменения в тип AuthenticationContext, который больше не имеет метода AcquireToken. Вы можете решить эту проблему, используя AcquireTokenAsync.

person Taylor Maxwell    schedule 06.06.2016