protected override async Task <int> ExecuteAsync() { var clientId = _clientIdOption.GetValue("client-id", requireNotNull: true, promptIfNull: true); var clientSecret = _clientSecretOption.GetValue("client-secret", requireNotNull: true, promptIfNull: true, sensitive: true); string rootUrl = Application.IdentityRootUrl; var disco = await DiscoveryClient.GetAsync(rootUrl); if (string.IsNullOrEmpty(disco.TokenEndpoint)) { Console.WriteLine($"Unable to discover token endpoint from '{rootUrl}' - is the server online?"); return(-1); } // request token var tokenClient = new TokenClient(disco.TokenEndpoint, clientId, clientSecret); var tokenResponse = await tokenClient.RequestClientCredentialsAsync("nether-all"); if (tokenResponse.IsError) { Console.WriteLine(tokenResponse.Error); } Console.WriteLine("Token response:"); Console.WriteLine(tokenResponse.Json); Console.WriteLine("\n\n"); await EchoClaimsAsync(tokenResponse.AccessToken); return(0); }
protected override async Task <int> ExecuteAsync() { var clientId = _clientIdOption.GetValue("client-id", requireNotNull: true, promptIfNull: true); var clientSecret = _clientSecretOption.GetValue("client-secret", requireNotNull: true, promptIfNull: true, sensitive: true); var guestIdentifier = _guestIdentifierOption.GetValue("guest identifier", requireNotNull: true, promptIfNull: true); var username = _usernameOption.GetValue("username", requireNotNull: true, promptIfNull: true); var password = _passwordOption.GetValue("password", requireNotNull: true, promptIfNull: true, sensitive: true); string rootUrl = Application.IdentityRootUrl; var disco = await DiscoveryClient.GetAsync(rootUrl); if (string.IsNullOrEmpty(disco.TokenEndpoint)) { Console.WriteLine($"Unable to discover token endpoint from '{rootUrl}' - is the server online?"); return(-1); } if (string.IsNullOrEmpty(disco.TokenEndpoint)) { Console.WriteLine($"Unable to discover token endpoint from '{rootUrl}' - is the server online?"); return(-1); } var tokenClient = new TokenClient(disco.TokenEndpoint, clientId, clientSecret); var tokenResponse = await tokenClient.RequestCustomGrantAsync("guest-access", "nether-all", new { guest_identifier = guestIdentifier }); if (tokenResponse.IsError) { Console.WriteLine(tokenResponse.Error); return(-1); } Console.WriteLine("Token response:"); Console.WriteLine(tokenResponse.Json); Console.WriteLine("\n\n"); var payload = new { username, password }; var client = new HttpClient(); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", tokenResponse.AccessToken); var response = await client.PutAsJsonAsync($"{Application.ApiRootUrl}user/logins/password", payload); Console.WriteLine(response); dynamic responseBody = await response.Content.ReadAsAsync <dynamic>(); return(0); }
protected override async Task <int> ExecuteAsync() { var clientId = _clientIdOption.GetValue("client-id", requireNotNull: true, promptIfNull: true); var clientSecret = _clientSecretOption.GetValue("client-secret", requireNotNull: true, promptIfNull: true, sensitive: true); var username = _usernameOption.GetValue("username", requireNotNull: true, promptIfNull: true); var password = _passwordOption.GetValue("password", requireNotNull: true, promptIfNull: true, sensitive: true); string rootUrl = Application.IdentityRootUrl; var disco = await DiscoveryClient.GetAsync(rootUrl); if (string.IsNullOrEmpty(disco.TokenEndpoint)) { Console.WriteLine($"Unable to discover token endpoint from '{rootUrl}' - is the server online?"); return(-1); } if (string.IsNullOrEmpty(disco.TokenEndpoint)) { Console.WriteLine($"Unable to discover token endpoint from '{rootUrl}' - is the server online?"); return(-1); } var tokenClient = new TokenClient(disco.TokenEndpoint, clientId, clientSecret); var tokenResponse = await tokenClient.RequestResourceOwnerPasswordAsync(username, password, "nether-all"); if (tokenResponse.IsError) { Console.WriteLine(tokenResponse.Error); return(-1); } Console.WriteLine("Token response:"); Console.WriteLine(tokenResponse.Json); Console.WriteLine("\n\n"); Console.WriteLine("Calling echo API:"); await EchoClaimsAsync(tokenResponse.AccessToken); Console.WriteLine("\n\n"); Console.WriteLine("Checking role:"); await ShowPlayerInfoAsync(tokenResponse.AccessToken); Console.WriteLine("\n\n"); return(0); }
protected override async Task <int> ExecuteAsync() { var clientId = _clientIdOption.GetValue("client-id", requireNotNull: true, promptIfNull: true); var clientSecret = _clientSecretOption.GetValue("client-secret", requireNotNull: true, promptIfNull: true, sensitive: true); var guestIdentifier = _guestIdentifierOption.GetValue("guest identifier", requireNotNull: true, promptIfNull: true); string rootUrl = Application.IdentityRootUrl; var client = new HttpClient(); var requestBody = new FormUrlEncodedContent( new Dictionary <string, string> { { "guest_identifier", guestIdentifier }, { "grant_type", "guest-access" }, { "client_id", clientId }, { "client_secret", clientSecret }, { "scope", "nether-all" } } ); var response = await client.PostAsync($"{rootUrl}connect/token", requestBody); dynamic responseBody = await response.Content.ReadAsAsync <dynamic>(); if (responseBody.error != null) { Console.WriteLine((string)responseBody.Error); return(-1); } Console.WriteLine("Token response:"); Console.WriteLine(responseBody.ToString()); Console.WriteLine("\n\n"); string access_token = responseBody.access_token; Console.WriteLine("Calling echo API:"); await EchoClaimsAsync(access_token); Console.WriteLine("\n\n"); Console.WriteLine("Checking role:"); await ShowPlayerInfoAsync(access_token); Console.WriteLine("\n\n"); return(0); }
protected override async Task <int> ExecuteAsync() { var clientId = _clientIdOption.GetValue("client-id", requireNotNull: true, promptIfNull: true); var clientSecret = _clientSecretOption.GetValue("client-secret", requireNotNull: true, promptIfNull: true, sensitive: true); var facebookUserToken = _facebookTokenOption.GetValue("facebook-token", requireNotNull: true, promptIfNull: true, additionalPromptText: " (see https://developers.facebook.com/tools/accesstoken)"); string rootUrl = Application.IdentityRootUrl; var disco = await DiscoveryClient.GetAsync(rootUrl); if (string.IsNullOrEmpty(disco.TokenEndpoint)) { Console.WriteLine($"Unable to discover token endpoint from '{rootUrl}' - is the server online?"); return(-1); } if (string.IsNullOrEmpty(disco.TokenEndpoint)) { Console.WriteLine($"Unable to discover token endpoint from '{rootUrl}' - is the server online?"); return(-1); } var tokenClient = new TokenClient(disco.TokenEndpoint, clientId, clientSecret); var tokenResponse = await tokenClient.RequestCustomGrantAsync("fb-usertoken", "nether-all", new { token = facebookUserToken }); if (tokenResponse.IsError) { Console.WriteLine(tokenResponse.Error); return(-1); } Console.WriteLine("Token response:"); Console.WriteLine(tokenResponse.Json); Console.WriteLine("\n\n"); Console.WriteLine("Calling echo API:"); await EchoClaimsAsync(tokenResponse.AccessToken); Console.WriteLine("\n\n"); Console.WriteLine("Checking role:"); await ShowPlayerInfoAsync(tokenResponse.AccessToken); Console.WriteLine("\n\n"); return(0); }
/// <summary> /// Attempts to get the value of a <see cref="CommandOption"/> given the target type <typeparamref name="T"/>. /// </summary> /// <typeparam name="T">The expected type of the option's value.</typeparam> public static T GetValue <T>(this CommandOption option) => (T)option.GetValue(typeof(T));