ADAL.NET v3不支持使用UserCredential进行AcquireToken吗?

17

在 ADAL.NET 2.x 中,我们使用以下代码使用 UserCredential 从 Azure AD 获取令牌,它完美地工作:

 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的新版本解决这个问题?

4个回答

26

请使用UserPasswordCredential类,它是UserCredential的子类。


我收到了AADSTS70002错误:请求正文必须包含以下参数:'client_secret或client_assertion'。 跟踪ID:8be09594-65c2-4e2d-bce2-17980f739371 相关ID:7312b657-f6d4-4d0b-8fc2-c66f1b9f0325 时间戳:2016年12月28日16:14:16Z - Russell at ISC
您正在尝试在本地应用程序中使用机密客户端(Web API)ID。您需要为您的流程创建一个新的本地应用程序ID。 - Kanishk Panwar
嘿,我正在使用这个程序,在调试配置下它可以正常工作,但在发布配置下却出现了AADSTS50126:无效的用户名或密码错误,尽管我使用的是相同的用户名和密码,你有什么想法是什么原因导致这种情况? - ZoomVirus

3
尝试使用UserPasswordCredential,该类在v3中必须改名。

3

提醒一下,看起来他们已经从ADAL中删除了这个功能。

来源

如果要使用用户的用户名/密码组合进行身份验证,我认为您将不得不使用HttpClient并自己进行POST请求。

发送到:

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}

在请求中


请求正文中“resource”参数的值是什么?我猜了,但不起作用。 - Sameeksha Kumari

2

这解决了UserCredentials的问题,但是似乎还对AuthenticationContext类型进行了更改,不再具有AcquireToken方法。您可以通过使用AcquireTokenAsync来解决此问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接