public static void SaveRecentEnv(AzureEnvs env) { var path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".csm"); Directory.CreateDirectory(path); File.WriteAllText(Path.Combine(path, "recent_env.txt"), env.ToString()); }
public static async Task AcquireToken(AzureEnvs env) { var tokenCache = new Dictionary <TokenCacheKey, string>(); _env = new Lazy <AzureEnvs>(() => env); var authResult = await GetAuthorizationResult(tokenCache, AADTenantId); Console.WriteLine("Welcome {0} (Tenant: {1})", authResult.UserInfo.UserId, authResult.TenantId); var tenants = await GetTokenForTenants(tokenCache, authResult); SaveRecentEnv(env); SaveRecentToken(authResult); TokenCache.SaveCache(tokenCache); }
private static Uri GetCSMUri(AzureEnvs envs) { if (envs == AzureEnvs.Next) { return(new Uri("https://api-next.resources.windows-int.net")); } else if (envs == AzureEnvs.Current) { return(new Uri("https://api-current.resources.windows-int.net")); } else if (envs == AzureEnvs.Dogfood) { return(new Uri("https://api-dogfood.resources.windows-int.net")); } else { return(new Uri("https://management.azure.com")); } }
static int Main(string[] args) { try { if (args.Length > 0) { if (String.Equals(args[0], "login", StringComparison.OrdinalIgnoreCase)) { AzureEnvs env = AzureEnvs.Prod; if (args.Length > 1) { env = (AzureEnvs)Enum.Parse(typeof(AzureEnvs), args[1], ignoreCase: true); } TokenUtils.AcquireToken(env).Wait(); return(0); } else if (String.Equals(args[0], "listcache", StringComparison.OrdinalIgnoreCase)) { TokenUtils.DumpTokenCache(); return(0); } else if (String.Equals(args[0], "clearcache", StringComparison.OrdinalIgnoreCase)) { TokenUtils.ClearTokenCache(); return(0); } else if (String.Equals(args[0], "token", StringComparison.OrdinalIgnoreCase)) { AuthenticationResult authResult; if (args.Length >= 2) { string tenantId = Guid.Parse(args[1]).ToString(); string user = null; AzureEnvs?env = null; if (args.Length >= 3) { user = args[2].Contains("@") ? args[2] : null; env = user == null ? (AzureEnvs?)Enum.Parse(typeof(AzureEnvs), args[2], true) : null; if (args.Length >= 4) { env = env ?? (AzureEnvs)Enum.Parse(typeof(AzureEnvs), args[3], true); user = user ?? args[3]; } } authResult = TokenUtils.GetTokenByTenant(tenantId).Result; } else { authResult = TokenUtils.GetRecentToken().Result; } var bearer = authResult.CreateAuthorizationHeader(); Clipboard.SetText(bearer); Console.WriteLine(bearer); Console.WriteLine(); DumpClaims(authResult.AccessToken); Console.WriteLine(); Console.WriteLine("Token copied to clipboard successfully."); return(0); } else if (String.Equals(args[0], "spn", StringComparison.OrdinalIgnoreCase)) { if (args.Length >= 4) { AzureEnvs env = AzureEnvs.Prod; if (args.Length >= 5) { env = (AzureEnvs)Enum.Parse(typeof(AzureEnvs), args[4], ignoreCase: true); } string tenantId = Guid.Parse(args[1]).ToString(); string appId = Guid.Parse(args[2]).ToString(); string appKey = args[3]; var authResult = TokenUtils.GetTokenBySpn(tenantId, appId, appKey, env); var bearer = authResult.CreateAuthorizationHeader(); Clipboard.SetText(bearer); Console.WriteLine(bearer); Console.WriteLine(); DumpClaims(authResult.AccessToken); Console.WriteLine(); Console.WriteLine("Token copied to clipboard successfully."); return(0); } } else if (String.Equals(args[0], "get", StringComparison.OrdinalIgnoreCase) || String.Equals(args[0], "delete", StringComparison.OrdinalIgnoreCase) || String.Equals(args[0], "put", StringComparison.OrdinalIgnoreCase) || String.Equals(args[0], "post", StringComparison.OrdinalIgnoreCase)) { if (args.Length >= 2) { Dictionary <string, string> parameters; args = ParseArguments(args, out parameters); var addOutputColor = !parameters.ContainsKey("-nocolor"); var verb = args[0]; var uri = new Uri(args[1]); var subscriptionId = GetSubscription(uri); AuthenticationResult authResult; if (String.IsNullOrEmpty(subscriptionId)) { authResult = TokenUtils.GetRecentToken().Result; } else { authResult = TokenUtils.GetTokenBySubscription(subscriptionId).Result; } string content = null; string file = null; if (parameters.TryGetValue("-content", out file)) { content = File.ReadAllText(file); } HttpInvoke(uri, authResult, verb, addOutputColor, content).Wait(); return(0); } } } PrintUsage(); return(1); } catch (Exception ex) { Console.WriteLine(ex); return(-1); } }
public static AuthenticationResult GetTokenBySpn(string tenantId, string appId, string appKey, AzureEnvs env) { var tokenCache = new Dictionary <TokenCacheKey, string>(); var authority = String.Format("{0}/{1}", AADLoginUrls[(int)env], tenantId); var context = new AuthenticationContext( authority: authority, validateAuthority: true, tokenCacheStore: tokenCache); var credential = new ClientCredential(appId, appKey); var authResult = context.AcquireToken("https://management.core.windows.net/", credential); SaveRecentToken(authResult); //TokenCache.SaveCache(env, tokenCache); return(authResult); }