ToF*_*oFo 5 c# azure nuget-package azure-active-directory azure-functions
我正在尝试在 C#、Visual Studio 17 中对 Azure 函数进行身份验证。这一行给出了错误:
var credentials = new UserPasswordCredential(UserName, Password);
Run Code Online (Sandbox Code Playgroud)
它给出了错误,就像我没有包含 NuGet 包一样:“找不到类型或命名空间名称“UserpasswordCredential”(您是否缺少 using 指令或程序集引用?)”。
我已经包含了包 Microsoft.IdentityModel.Clients.ActiveDirectory(v. 3.19.2 - 最新稳定版)。但由于某种原因,这一点丢失了(我也尝试过旧版本)。微软自己说它应该是包https://docs.microsoft.com/en-us/dotnet/api/microsoft.identitymodel.clients.activedirectory.userpasswordcredential?view=azure-dotnet 的一部分。但事实并非如此。
有人知道如何解决这个问题吗?
完整代码如下:
/// <summary>
/// Generates a new Azure Active Directory access token
/// </summary>
/// <param name = "url" > A URL for the end-point for which the access token is requested</param>
/// <returns>The access token</returns>
public static string GenerateActiveDirectoryAccessToken(string url)
{
var authority = AuthorityUrl;
var authContext = new AuthenticationContext(authority);
var credentials = new UserPasswordCredential(UserName, Password);
var authResult = authContext.AcquireTokenAsync(url, ClientId, credentials);
return authResult.Result.AccessToken;
}
Run Code Online (Sandbox Code Playgroud)
小智 11
你在使用 .NET Core 吗?.NET Core 不支持 UserPasswordCredential。仅供参考:https : //github.com/AzureAD/azure-activedirectory-library-for-dotnet/issues/482
我也遇到过这个问题。不推荐对用户名和密码进行硬编码,您可以使用应用程序权限而不是委派权限。但有时某些 API 需要委托权限。所以我想实现一个无用户交互方法来调用Graph API。它看起来像一个僵局。