' UserPasswordCredential'无法找到

时间:2018-03-16 12:13:14

标签: c# azure azure-active-directory azure-functions nuget-package

我正在尝试在C#,Visual Studio 17中对Azure功能进行身份验证。此行显示错误:

    var credentials = new UserPasswordCredential(UserName, Password);

如果我没有包含NuGet包,它会给出错误:"类型或命名空间名称" UserpasswordCredential"找不到(你错过了使用指令或汇编引用吗?)"。

我已经包含了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;
    }

1 个答案:

答案 0 :(得分:3)

您是否正在使用.NET Core? .NET Core不支持UserPasswordCredential。仅供参考:https://github.com/AzureAD/azure-activedirectory-library-for-dotnet/issues/482

我也遇到了这个问题。建议不要对用户名和密码进行硬编码,并且可以使用应用程序权限而不是委派权限。但有时某些API需要委派权限。因此,我想实现一种无用户交互方法来调用Graph API。看起来像是一个僵局。