First of all you need clientID, clientSecret and tenentID of your Azure account. Make sure you have given reuired permission to access and modify azure resources via API. Hint Use rbac command in azure cloudshell.
// Get Access token to use azure management API end points.
public static string GetAzureAccessToken()
{
// Get Access token for azure api
string AccessToken = "";
var tenantId = System.Configuration.ConfigurationManager.AppSettings["AzureTenantID"];
var clientId = System.Configuration.ConfigurationManager.AppSettings["AzureClientID"];
var secret = System.Configuration.ConfigurationManager.AppSettings["AzureSecret"];
var resourceUrl = "https://management.azure.com/";
var requestUrl = $"https://login.microsoftonline.com/{tenantId}/oauth2/token";
// in real world application, please use Typed HttpClient from ASP.NET Core DI
var httpClient = new System.Net.Http.HttpClient();
var dict = new Dictionary<string, string>
{
{ "grant_type", "client_credentials" },
{ "client_id", clientId },
{ "client_secret", secret },
{ "resource", resourceUrl }
};
var requestBody = new System.Net.Http.FormUrlEncodedContent(dict);
var response = httpClient.PostAsync(requestUrl, requestBody).Result;
if (response != null)
{
response.EnsureSuccessStatusCode();
string responseContent = response.Content.ReadAsStringAsync().Result;
if (!string.IsNullOrEmpty(responseContent))
{
var TokenResponse = JsonConvert.DeserializeObject<AzureTokenResponseModel>(responseContent);
if (TokenResponse != null)
{
AccessToken += TokenResponse?.access_token;
}
}
}
return AccessToken;
}
// create azure resource group by calling API
var clientResourceGroup = new RestClient($"https://management.azure.com/subscriptions/{SubscriptionID}/resourcegroups/{ResourceGroupName}?api-version=2022-05-01");
clientResourceGroup.Timeout = -1;
var requestResourceGroup = new RestRequest(Method.PUT);
requestResourceGroup.AddHeader("Authorization", "Bearer " + GetAzureAccessToken());
requestResourceGroup.AddHeader("Content-Type", "application/json");
var bodyResourceGroup = @"{'location':'" + AzLocation + @"','Name':'" + ResourceGroupName + @"'}}";
requestResourceGroup.AddParameter("application/json", bodyResourceGroup, ParameterType.RequestBody);
IRestResponse responseResourceGroup = clientResourceGroup.Execute(requestResourceGroup);
Post down here if still facing difficulties. We can create other azure resources like storage account, functions, app service etc..