Ejemplo n.º 1
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);

            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);
        }
Ejemplo n.º 2
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);
        }
Ejemplo n.º 3
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);
        }
Ejemplo n.º 4
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);
        }
Ejemplo n.º 6
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));