I use the Azure REST API to get billing and tariff card usage information. To purchase a token using the AcquireToken () method, initially I used only the client ID, which then asks for the user credentials in the login window.
However, I am looking for a non-interactive approach , so I used Client Credentials, in which I transmitted the client identifier and the client’s secret key.
But it gives "Remote server returns error 401" Unauthorized "
When I am deeply mistaken, I find that it gives the error "The access token is the wrong audience or resource"
Please give me some solution with which I can access the API without any user interaction.
Thanks at Advance.
Here is my code:
{ string token = GetOAuthTokenFromAAD(); string requestURL = String.Format("{0}/{1}/{2}/{3}", ConfigurationManager.AppSettings["ARMBillingServiceURL"], "subscriptions", ConfigurationManager.AppSettings["SubscriptionID"], "providers/Microsoft.Commerce/RateCard?api-version=2015-06-01-preview&$filter=OfferDurableId eq 'MS-AZR-*****' and Currency eq 'INR' and Locale eq 'en-IN' and RegionInfo eq 'IN'"); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(requestURL); request.Headers.Add(HttpRequestHeader.Authorization, "Bearer " + token); request.ContentType = "application/json"; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Console.WriteLine(String.Format("RateCard service response status: {0}", response.StatusDescription)); } public static string GetOAuthTokenFromAAD() { AuthenticationContext authenticationContext = new AuthenticationContext(string.Format("{0}/{1}",ConfigurationManager.AppSettings["ADALServiceURL"], ConfigurationManager.AppSettings["TenantDomain"])); AuthenticationResult result = null; ClientCredential uc = new ClientCredential(Client_Id, Secret_Key); try { result = authenticationContext.AcquireToken("https://management.core.windows.net/", uc); } return result.AccessToken; } //App Config File <add key="ADALServiceURL" value="https://login.microsoftonline.com" /> <add key="ADALRedirectURL" value="http://*****-authentication.cloudapp.net" /> <add key="ARMBillingServiceURL" value="https://management.core.windows.net" /> <add key="TenantDomain" value="********.onmicrosoft.com" /> <add key="SubscriptionID" value="*******-****-****-****-********" /> <add key="ClientId" value="*******-****-****-****-********" />
source share