2016-11-07 3 views
0

Ich versuche, die Konfiguration einer meiner Web-Anwendungen mit dem C# .NET SDK zu bekommen. Ich möchte eine Azure AD-Anwendung anstelle eines Management-Zertifikats verwenden (das ich zuvor funktionierte).Ausnahme versucht, Konfiguration mit Azure .NET SDK zu erhalten

Ich habe den folgenden Code:

var subscriptionId = "<subscription-guid>"; 
var appId = "<app-guid>"; 
var appKey = "<app-key>"; 
var tenantId = "<tenant-guid>"; 

var context = new AuthenticationContext("https://login.windows.net/" + tenantId); 
ClientCredential clientCredential = new ClientCredential(appId, appKey); 
var tokenResponse = context.AcquireTokenAsync("https://management.core.windows.net/", clientCredential).Result; 
var accessToken = tokenResponse.AccessToken; 

var myWebspace = "<my-webspace>"; 
var myWebsite = "<my-website>"; 

var client = new WebSiteManagementClient(new TokenCloudCredentials(subscriptionId, accessToken)); 
var config = client.WebSites.GetConfigurationAsync(myWebspace, myWebsite).Result; 

... aber es wird den folgenden Fehler in der letzten Zeile zu werfen:

Microsoft.WindowAzure.CloudException 
ForbiddenError: The server failed to authenticate the request. Verify that the certificate is valid and is associated with this subscription. 

Was könnte falsch sein? Ich habe die Anwendung erstellt und die folgenden Berechtigungen gegeben:

Windows Azure Service Management

Applikationsrechte: 0

delegierte Berechtigungen: 1

Zugang Azure Service Management als Organisation Benutzer (Vorschau)

Windows Azure Active Directory

Applikationsrechte: 0

delegierte Berechtigungen: 1

Anmelden und Benutzerprofil

Vielen Dank im Voraus

Chris

+0

dieses Thema finden Sie mögliche Gründe für den Fehler, den Sie sind bekommen: http://stackoverflow.com/questions/35190866/error-making-azure-management-library-api-call-when-authenticating-with-azure-ac –

+0

Gibt es oben Daten über diesen Thread? –

Antwort

0

Als Gaurav in einem anderen SO thread erwähnt lesen. Wir können zur Azure Resource Manager-API wechseln. Eine weitere wichtige Sache ist, dass wir auch ein Service-Prinzipal für den Zugriff auf Ressourcen erstellen müssen. Wir können den azure PowerShell-Befehl verwenden, um das problemlos durchzuführen. Weitere Informationen zum Registrieren einer Webanwendung in Azure AD und zum Erstellen eines Dienstprinzipals finden Sie unter article.

New-AzureRmRoleAssignment -RoleDefinitionName Contributor -ServicePrincipalName $app.ApplicationId.Guid 

Microsoft.Azure.Management.WebSites SDK, die WebApp Ressource Management API implementieren. Es ist eine Vorabversion Version. Das folgende ist mein Codebeispiel:

var subscriptionId = "Your subscription Id"; 
var appId = "Application Id"; 
var appKey = "secret key"; 
var tenantId = "tenant id"; 
var serviceCreds = ApplicationTokenProvider.LoginSilentAsync(tenantId, appId, appKey).Result; 
var webClient = new WebSiteManagementClient(serviceCreds) { SubscriptionId = subscriptionId }; 
var result = webClient.Sites.GetSiteConfigWithHttpMessagesAsync("ResourceGroup Name", "Web App name").Result; 

Paketdatei:

<?xml version="1.0" encoding="utf-8"?> 
<packages> 
    <package id="Microsoft.Azure.Management.Websites" version="1.3.2-preview" targetFramework="net452" /> 
    <package id="Microsoft.IdentityModel.Clients.ActiveDirectory" version="2.28.1" targetFramework="net452" /> 
    <package id="Microsoft.Rest.ClientRuntime" version="2.3.1" targetFramework="net452" /> 
    <package id="Microsoft.Rest.ClientRuntime.Azure" version="3.1.0" targetFramework="net452" /> 
    <package id="Microsoft.Rest.ClientRuntime.Azure.Authentication" version="2.2.4.1-preview" targetFramework="net452" /> 
    <package id="Newtonsoft.Json" version="6.0.8" targetFramework="net452" /> 
</packages> 

Demo Tester:

enter image description here

Verwandte Themen