using System.Text.RegularExpressions;
using System.Threading.Tasks;
using Microsoft.IdentityModel.Clients.ActiveDirectory;
public static async Task Main()
var cts = new CancellationTokenSource();
var cancellationToken = cts.Token;
var subscription = "c3c0a359-4420-4f84-8925-f642e2717296";
var hostName = "management.azure.com";
var apiVersion = "2020-08-01";
var requetUrl = $"https://{hostName}/subscriptions/{subscription}?api-version={apiVersion}";
var httpClient = new HttpClient();
var response = await httpClient.GetAsync(requetUrl, cancellationToken);
var authenticationParameters = await AuthenticationParameters.CreateFromUnauthorizedResponseAsync(response);
var authorizationHeaderRegex = new Regex(@"https://.+/(.+)/?", RegexOptions.Compiled | RegexOptions.CultureInvariant | RegexOptions.IgnoreCase);
var match = authorizationHeaderRegex.Match(authenticationParameters.Authority);
var tenantString = match.Success ? match.Groups[1].Value : null;
if (!Guid.TryParse(tenantString, out var tenantId))
throw new InvalidOperationException($"Received tenant id '{tenantString}' is not valid guid");
Console.WriteLine(tenantId);