Używam API usługi Azure REST do pobierania informacji o korzystaniu z Billing Usage i Ratecard. Aby zdobyć token za pomocą AcquireToken() Metoda, początkowo użyłem tylko klienta Id, który następnie prosi o poświadczenia użytkownika w oknie logowania.Interfejs API korzystania z usługi Azure Billing zwraca 401 Nieautoryzowane
jednak szukam nieinterakcyjnym podejścia, więc użyłem poświadczeń klienta w którym przekazywane identyfikatora klienta i Client tajny klucz.
Ale daje „Remote Server zwraca błąd 401 Nieautoryzowany”
Kiedy patrzę w błąd głęboko, stwierdziliśmy, że to daje błąd „Żeton dostępu jest z niewłaściwym publiczności lub zasobu”
Podaj mi rozwiązanie, za pomocą którego mogę uzyskać dostęp do interfejsu API bez żadnej interakcji użytkownika.
Dzięki z góry.
Oto mój kod:
{
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="*******-****-****-****-********" />
Proszę udostępnić swój kod, a także ustawienia aplikacji utworzonej w usłudze Azure AD. –
Dodano we wpisie. – Tejas
Jedno szybkie pytanie - czy podczas konfigurowania aplikacji w usłudze Azure AD dodano uprawnienia do wykonywania operacji interfejsu API zarządzania usługami? –