Microsoft.IdentityModel.Clients.ActiveDirectory.UserCredential不接受2个参数?

9
我在我的代码中使用ADAL。我想要使用不同的凭证,这样我就可以在控制台程序中授权不同的用户对Azure AD进行授权。
Microsoft.IdentityModel.Clients.ActiveDirectory.UserCredential cred = new Microsoft.IdentityModel.Clients.ActiveDirectory.UserCredential("username", "password");

这是我用来创建用户凭据的代码行。我使用NuGet获取最新的ADAL。然而,此行显示错误:
"The best overloaded method match for 'Microsoft.IdentityModel.Clients.ActiveDirectory.UserCredential.UserCredential(string, Microsoft.IdentityModel.Clients.ActiveDirectory.UserAuthType)' has some invalid arguments"
根据https://msdn.microsoft.com/en-us/library/microsoft.identitymodel.clients.activedirectory.usercredential.aspx的说明:
UserCredential(String, String)
Constructor to create credential with client id and secret 

有人知道我做错了什么吗?

谢谢


当我使用UserCredential时,我没有遇到这个错误,请提供更多的代码。这个错误很奇怪,你正在new一个Microsoft.IdentityModel.Clients.ActiveDirectory.UserCredential,而错误显示Microsoft.IdentityModel.Clients.ActiveDirectory.UserCredential.UserCredential具有无效参数? - forester123
1
请使用UserPasswordCredential,因为它继承了UserCredential。 - A.P.S
1个回答

29

ADAL .NET v3 中,UserCredential 构造函数 不再支持第二个参数 (password),相反你需要使用 UserPasswordCredential

示例

var credentials = new UserPasswordCredential(userName, password);
var context = new AuthenticationContext(authorityUri);
var authResult = context.AcquireTokenAsync(resource, clientId, credentials).Result;

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