1

我正在使用下一个代码来获取 Azure AD 身份验证的令牌

errorMessage = "";
        AuthenticationResult result = null;
        var context = new AuthenticationContext(String.Format(CultureInfo.InvariantCulture, ConfigurationManager.AppSettings["login"], ConfigurationManager.AppSettings["tenantId"]),false);
        ClientCredential clientCredential = new ClientCredential(ConfigurationManager.AppSettings["clientId"], ConfigurationManager.AppSettings["key"]);
        try
        {
            result = context.AcquireToken(ConfigurationManager.AppSettings["apiEndpoint"], clientCredential);
        }
        catch (AdalException ex)
        {
            if (ex.ErrorCode == "temporarily_unavailable")
            {
                errorMessage = "Temporarily Unavailable";
                return null;
            }
            else
            {
                errorMessage = "Unknown Error";
                return null;
            }
        }
        string token = result.AccessToken;
        var credential = new TokenCloudCredentials(ConfigurationManager.AppSettings["subscriptionId"],token);
        //string certificateString = ConfigurationManager.AppSettings["managementCertificate"];
        //var cert = new X509Certificate2(Convert.FromBase64String(base64cer));
        return credential;

之后,我将在 Azure 中创建一个网站

            using (var computeClient = new WebSiteManagementClient(credentials))
        {
            var result = computeClient.WebSites.IsHostnameAvailable(websiteName);
            if (result.IsAvailable)
            {
                await computeClient.WebSites.CreateAsync(WebSpaceNames.WestEuropeWebSpace, new WebSiteCreateParameters() {
                    Name= websiteName,
                    ServerFarm= ConfigurationManager.AppSettings["servicePlanName"]
                });
            }
            else
            {
                return ResultCodes.ObjectNameAlreadyUsed;
            }
        }

但是每次我执行时都会出现以下错误:

ForbiddenError:服务器未能对请求进行身份验证。验证证书是否有效并且与此订阅相关联。

我尝试按照他们在这里所说的方式导入管理证书: https ://www.simple-talk.com/cloud/security-and-compliance/windows-azure-management-certificates/

并且还尝试了这个: http ://technetlibrary.com/change-windows-azure-subscription-azure-powershell/198

用于导入管理证书。
我还授予应用程序访问管理 API 的权限。

4

2 回答 2

0

Azure AD 身份验证不使用管理证书身份验证。

MSDN 上有一个很好的文档和代码示例,介绍了如何解决您当前的问题。 验证服务管理请求

于 2015-11-01T09:24:00.207 回答
0

看起来您的应用程序没有访问 Azure API 的权限。请使用此链接获取权限。在此之后,请在应用权限或用户权限中添加访问 API 的权限。

于 2017-09-12T14:35:45.900 回答