ADAL.NET v3 不支持带 UserCredential 的 AcquireToken?

ADAL.NET v3 does not support AcquireToken with UserCredential?

在 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 解决此问题?

使用 UserPasswordCredential class,它是 UserCredential

的子class

尝试 UserPasswordCredential,class 必须在 v3 中重命名。

这解决了 UserCredentials 的问题,但您似乎也更改了 AuthenticationContext 类型,它似乎不再具有 AcquireToken 方法。您可以使用 AcquireTokenAsync

解决此问题

仅供参考,他们似乎已从 ADAL 中删除了此功能。 source

要通过用户 username/password 组合进行身份验证,我相信您必须使用 HttpClient 并自己发出 post 请求。

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}

在请求中