Example #1
0
        /// <summary>
        /// 使用密码认证方式控制API访问
        /// </summary>
        private static async void Test2()
        {
            ////` 从元数据中发现客户端
            //var disco = await DiscoveryClient.GetAsync("http://localhost:5000");

            //// 请求令牌
            //var tokenClient = new TokenClient(disco.TokenEndpoint, "ro.client", "secret");
            //var tokenResponse = await tokenClient.RequestResourceOwnerPasswordAsync("bob", "password", "api1");//使用用户名密码

            var client = new HttpClient();
            var disco  = await client.GetDiscoveryDocumentAsync("http://localhost:5000");

            var tokenResponse = await client.RequestPasswordTokenAsync(new PasswordTokenRequest()
            {
                Address      = disco.TokenEndpoint,
                UserName     = "******",
                Password     = "******",
                Scope        = "api1",
                ClientId     = "ro.client",
                ClientSecret = "secret",
            });

            if (tokenResponse.IsError)
            {
                Console.WriteLine(tokenResponse.Error);
                return;
            }

            Console.WriteLine(tokenResponse.Json);

            SendGet(tokenResponse.AccessToken);
        }
Example #2
0
        private static async Task <TokenResponse> GetToken(string authAddress)
        {
            var client = new HttpClient();

            var disco = await client.GetDiscoveryDocumentAsync(authAddress);

            if (disco.IsError)
            {
                throw new Exception(disco.Error);;
            }

            var tokenResponse = await client.RequestPasswordTokenAsync(new PasswordTokenRequest
            {
                Address      = disco.TokenEndpoint,
                ClientId     = "ro.client",
                ClientSecret = "secret",
                Scope        = "api1",

                UserName = "******",
                Password = "******"
            });

            if (tokenResponse.IsError)
            {
                throw new Exception(tokenResponse.Error);
            }

            return(tokenResponse);
        }
Example #3
0
        private static async Task ResourceOwnerPassword(DiscoveryResponse disco)
        {
            var client = new HttpClient();
            // request token
            var tokenResponse = await client.RequestPasswordTokenAsync(new PasswordTokenRequest
            {
                Address      = disco.TokenEndpoint,
                ClientId     = "ro.client",
                ClientSecret = "secret",
                Scope        = "api1",

                UserName = "******",
                Password = "******",
                //UserName = "******",
                //Password = "******",
            });

            if (tokenResponse.IsError)
            {
                Console.WriteLine(tokenResponse.Error);
                return;
            }

            Console.WriteLine(tokenResponse.Json);
            Console.ReadKey();
        }
Example #4
0
        private static async Task <TokenResponse> RequestPasswordAccessToken(string server, string username, string password)
        {
            var client = new HttpClient();
            var disco  = await client.GetDiscoveryDocumentAsync(server);

            if (disco.IsError)
            {
                Console.Error.WriteLine(disco.Error);
                return(null);
            }

            var tokenResponse = await client.RequestPasswordTokenAsync(
                new PasswordTokenRequest
            {
                Address      = disco.TokenEndpoint,
                ClientId     = "client.ro",
                ClientSecret = "please-type-the-secret-here",

                UserName = username,
                Password = password,

                Scope = "api",
            });

            if (tokenResponse.IsError)
            {
                Console.Error.WriteLine(tokenResponse.Error);
                return(null);
            }

            Console.WriteLine(tokenResponse.Json);

            return(tokenResponse);
        }
        private static async Task Main()
        {
            //   await RequestWithResourceOwnerPasswordWithPolicy();
            // discover endpoints from metadata
            var client = new HttpClient();

            var disco = await client.GetDiscoveryDocumentAsync("http://localhost:5000");

            if (disco.IsError)
            {
                Console.WriteLine(disco.Error);
                return;
            }

            // request token
            var tokenResponse = await client.RequestClientCredentialsTokenAsync(new ClientCredentialsTokenRequest
            {
                Address      = disco.TokenEndpoint,
                ClientId     = "client",
                ClientSecret = "secret",
                Scope        = "api1"
            });

            tokenResponse = await client.RequestPasswordTokenAsync(new PasswordTokenRequest
            {
                Address      = disco.TokenEndpoint,
                ClientId     = "ro.client",
                ClientSecret = "secret",
                UserName     = "******",
                Password     = "******",
                Scope        = "api1"
            });

            if (tokenResponse.IsError)
            {
                Console.WriteLine(tokenResponse.Error);
                return;
            }

            Console.WriteLine(tokenResponse.Json);
            Console.WriteLine("\n\n");

            // call api
            var apiClient = new HttpClient();

            apiClient.SetBearerToken(tokenResponse.AccessToken);

            var response = await apiClient.GetAsync("http://localhost:5001/identity");

            if (!response.IsSuccessStatusCode)
            {
                Console.WriteLine(response.StatusCode);
            }
            else
            {
                var content = await response.Content.ReadAsStringAsync();

                Console.WriteLine(JArray.Parse(content));
            }
        }
Example #6
0
        private static async Task MainImpl()
        {
            var client = new HttpClient();
            var disco  = await client.GetDiscoveryDocumentAsync("http://localhost:5000");

            if (disco.IsError)
            {
                Console.WriteLine(disco.Error);
                return;
            }

            TokenResponse tokenRes = null;

            Console.WriteLine("输入模式,1为客户端模式,2为用户名密码模式");
            if ("1" == Console.ReadLine())
            {
                tokenRes = await client.RequestClientCredentialsTokenAsync(new ClientCredentialsTokenRequest
                {
                    Address      = disco.TokenEndpoint,
                    ClientId     = "client",
                    ClientSecret = "secret",
                    Scope        = "api1"
                });
            }
            else
            {
                tokenRes = await client.RequestPasswordTokenAsync(new PasswordTokenRequest
                {
                    Address      = disco.TokenEndpoint,
                    ClientId     = "ro.client",
                    ClientSecret = "secret",
                    Scope        = "api1",
                    UserName     = "******",
                    Password     = "******"
                });
            }
            if (tokenRes.IsError)
            {
                Console.WriteLine(tokenRes.Error);
                return;
            }
            Console.WriteLine(tokenRes.Json);

            client = new HttpClient();
            client.SetBearerToken(tokenRes.AccessToken);

            var res = await client.GetAsync("http://localhost:5001/identity");

            if (!res.IsSuccessStatusCode)
            {
                Console.WriteLine(res.StatusCode);
            }
            else
            {
                var content = await res.Content.ReadAsStringAsync();

                Console.WriteLine(JArray.Parse(content));
            }
        }
Example #7
0
        private static async Task Main()
        {
            // discover endpoints from metadata
            var client = new HttpClient();

            var disco = await client.GetDiscoveryDocumentAsync("https://*****:*****@3#2!2019",

                UserName = "******",
                Password = "******",
                Scope    = "api3 openid profile roles Gilgamesh"
            });

            if (tokenResponse.IsError)
            {
                Console.WriteLine(tokenResponse.Error);
                return;
            }

            Console.WriteLine(tokenResponse.Json);
            Console.WriteLine("\n\n");
            Console.Write("presione una tecla ");
            Console.ReadLine();

            // call api
            var apiClient = new HttpClient();

            apiClient.SetBearerToken(tokenResponse.AccessToken);

            var response = await apiClient.GetAsync("https://localhost:5001/account/login");

            if (!response.IsSuccessStatusCode)
            {
                Console.WriteLine(response.StatusCode);
                Console.ReadLine();
            }
            else
            {
                var content = await response.Content.ReadAsStringAsync();

                Console.WriteLine(JArray.Parse(content));
                Console.Write("presione una tecla ");
                Console.ReadLine();
            }
        }
Example #8
0
        private static async Task Main()
        {
            // discover endpoints from metadata
            var client = new HttpClient();

            var disco = await client.GetDiscoveryDocumentAsync("http://localhost:59001");

            if (disco.IsError)
            {
                Console.WriteLine(disco.Error);
                return;
            }

            var tokenResponse = await client.RequestPasswordTokenAsync(new PasswordTokenRequest()
            {
                Address      = disco.TokenEndpoint,
                UserName     = "******",
                Password     = "******",
                ClientId     = "client",
                ClientSecret = "secret",
                Scope        = "api1"
            });

            if (tokenResponse.IsError)
            {
                Console.WriteLine(tokenResponse.Error);
                return;
            }

            Console.WriteLine("--------------------------------------------------------------");
            Console.WriteLine("|\t TOKEN");
            Console.WriteLine("--------------------------------------------------------------");
            Console.WriteLine(tokenResponse.Json);
            Console.WriteLine("\n\n");


            Console.WriteLine("--------------------------------------------------------------");
            Console.WriteLine("|\t API RESPONSE");
            Console.WriteLine("--------------------------------------------------------------");
            // call api
            var apiClient = new HttpClient();

            apiClient.SetBearerToken(tokenResponse.AccessToken);

            var response = await apiClient.GetAsync("http://localhost:59002/user");

            if (!response.IsSuccessStatusCode)
            {
                Console.WriteLine(response.StatusCode);
            }
            else
            {
                var content = await response.Content.ReadAsStringAsync();

                Console.WriteLine(JArray.Parse(content));
            }
        }
Example #9
0
        static async Task MainFunction()
        {
            var client = new HttpClient();
            var disco  = await client.GetDiscoveryDocumentAsync("http://localhost:5000");

            if (disco.IsError)
            {
                Console.WriteLine(disco.Error);
                return;
            }

            //var response = await client.RequestClientCredentialsTokenAsync(new ClientCredentialsTokenRequest
            //{
            //    Address = disco.TokenEndpoint,

            //    ClientId = "client",
            //    ClientSecret = "secret",
            //    Scope = "api1",

            //});

            var response = await client.RequestPasswordTokenAsync(new PasswordTokenRequest
            {
                Address      = disco.TokenEndpoint,
                ClientId     = "ro.client",
                ClientSecret = "secret",

                UserName = "******",
                Password = "******",
                Scope    = "api1"
            });

            if (response.IsError)
            {
                Console.WriteLine(response.Error);
                return;
            }

            Console.WriteLine(response.Json);

            // call api
            client = new HttpClient();
            client.SetBearerToken(response.AccessToken);

            var response2 = await client.GetAsync("http://localhost:5001/identity");

            if (!response2.IsSuccessStatusCode)
            {
                Console.WriteLine(response2.StatusCode);
            }
            else
            {
                var content = await response2.Content.ReadAsStringAsync();

                Console.WriteLine(JArray.Parse(content));
            }
        }
Example #10
0
        static async System.Threading.Tasks.Task MainAsync(string[] args)
        {
            Console.WriteLine("Hello World!");

            var disco = await DiscoveryClient.GetAsync("http://localhost:5000");

            if (disco.IsError)
            {
                Console.WriteLine(disco.Error);

                return;
            }

            //// request token without credential
            //var tokenClient = new TokenClient(disco.TokenEndpoint, "client", "secret");
            //var tokenResponse = await tokenClient.RequestClientCredentialsAsync("api1");

            //if (tokenResponse.IsError)
            //{
            //    Console.WriteLine(tokenResponse.Error);
            //    return;
            //}

            //Console.WriteLine(tokenResponse.Json);

            // request token with credential
            var client        = new HttpClient();
            var tokenResponse = await client.RequestPasswordTokenAsync(new PasswordTokenRequest
            {
                Address      = disco.TokenEndpoint,
                ClientId     = "ro.client",
                ClientSecret = "secret",

                UserName = "******",
                Password = "******",
                Scope    = "api1"
            });

            if (tokenResponse.IsError)
            {
                Console.WriteLine(tokenResponse.Error);
                return;
            }

            Console.WriteLine(tokenResponse.Json);

            var client2 = new HttpClient();

            client2.SetBearerToken(tokenResponse.AccessToken);

            var response = await client2.GetAsync("http://localhost:5001/api/identity");

            var content = await response.Content.ReadAsStringAsync();

            Console.WriteLine(JArray.Parse(content));
        }
        static async Task Main()
        {
            // discover endpoints from metadata
            var client = new HttpClient();

            var disco = await client.GetDiscoveryDocumentAsync("http://localhost:5000");

            if (disco.IsError)
            {
                Console.WriteLine(disco.Error);
                return;
            }

            // request token
            var tokenResponse = await client.RequestClientCredentialsTokenAsync(new ClientCredentialsTokenRequest
            {
                Address      = disco.TokenEndpoint,
                ClientId     = "client",
                ClientSecret = "secret",

                Scope = "api1"
            });

            if (tokenResponse.IsError)
            {
                Console.WriteLine(tokenResponse.Error);
                return;
            }

            Console.WriteLine(tokenResponse.Json);
            Console.WriteLine("\n\n");

            await GetApiResponse(tokenResponse.AccessToken);

            tokenResponse = await client.RequestPasswordTokenAsync(new PasswordTokenRequest
            {
                Address      = disco.TokenEndpoint,
                ClientId     = "ro.client",
                ClientSecret = "secret",

                UserName = "******",
                Password = "******",
                Scope    = "api1"
            });

            if (tokenResponse.IsError)
            {
                Console.WriteLine(tokenResponse.Error);
                return;
            }

            Console.WriteLine(tokenResponse.Json);
            Console.WriteLine("\n\n");

            await GetApiResponse(tokenResponse.AccessToken);
        }
Example #12
0
        private static async Task Main(string[] args)
        {
            var client = new HttpClient();
            var disco  = await client.GetDiscoveryDocumentAsync("http://localhost:5000");

            if (disco.IsError)
            {
                Console.WriteLine("tvar");
                Console.WriteLine(disco.Error);
                Console.ReadKey();
                return;
            }

            var tokenResponse = await client.RequestPasswordTokenAsync(new PasswordTokenRequest()
            {
                Address = disco.TokenEndpoint,

                ClientId     = "ro.client",
                ClientSecret = "secret",

                UserName = "******",
                Password = "******",

                Scope = "api1"
            });

            if (tokenResponse.IsError)
            {
                Console.WriteLine("pes");
                Console.WriteLine(tokenResponse.Error);
                Console.ReadKey();
                return;
            }

            Console.WriteLine(tokenResponse.Json);
            Console.WriteLine("\n\n");

            var apiClient = new HttpClient();

            apiClient.SetBearerToken(tokenResponse.AccessToken);

            var response = await apiClient.GetAsync("http://localhost:5001/identity");

            if (!response.IsSuccessStatusCode)
            {
                Console.WriteLine(response.StatusCode);
            }
            else
            {
                var content = await response.Content.ReadAsStringAsync();

                Console.WriteLine(JArray.Parse(content));
            }

            Console.ReadKey();
        }
Example #13
0
        private static async Task Main()
        {
            // discover endpoints from metadata
            var client = new HttpClient();

            var disco = await client.GetDiscoveryDocumentAsync("https://localhost:5001");

            if (disco.IsError)
            {
                Console.WriteLine(disco.Error);
                return;
            }

            // request token
            var tokenResponse = await client.RequestPasswordTokenAsync(new PasswordTokenRequest
            {
                Address      = disco.TokenEndpoint,
                ClientId     = "api1",
                ClientSecret = "secret",

                UserName = "******",
                Password = "******",
                Scope    = "api1"
            });

            if (tokenResponse.IsError)
            {
                Console.WriteLine(tokenResponse.Error);
                return;
            }

            Console.WriteLine(tokenResponse.Json);
            Console.WriteLine("\n\n");

            // call api
            var apiClient = new HttpClient();

            apiClient.SetBearerToken(tokenResponse.AccessToken);

            var response = await apiClient.GetAsync("https://localhost:6001/api/orden");

            if (!response.IsSuccessStatusCode)
            {
                Console.WriteLine(response.StatusCode);
            }
            else
            {
                var content = await response.Content.ReadAsStringAsync();

                Console.WriteLine(JArray.Parse(content));
            }
            Console.ReadLine();
        }
Example #14
0
        static async System.Threading.Tasks.Task Main(string[] args)
        {
            var client = new HttpClient();
            var disco  = await client.GetDiscoveryDocumentAsync("http://localhost:5000");

            if (disco.IsError)
            {
                Console.WriteLine(disco.Error);
                return;
            }
            //var tokenResponse = await client.RequestClientCredentialsTokenAsync(new ClientCredentialsTokenRequest
            //{
            //    Address = disco.TokenEndpoint,

            //    ClientId = "client1",
            //    ClientSecret = "secret",
            //    Scope = "webApi"
            //});
            var tokenResponse = await client.RequestPasswordTokenAsync(new PasswordTokenRequest()
            {
                Address      = disco.TokenEndpoint,
                ClientId     = "client2",
                ClientSecret = "secret",
                Scope        = "webApi",
                UserName     = "******",
                Password     = "******"
            });


            if (tokenResponse.IsError)
            {
                Console.WriteLine(tokenResponse.Error);
                return;
            }

            Console.WriteLine(tokenResponse.Json);


            client.SetBearerToken(tokenResponse.AccessToken);
            var response = await client.GetAsync("http://localhost:5002/api/Identity");

            if (!response.IsSuccessStatusCode)
            {
                Console.WriteLine(response.StatusCode);
            }
            else
            {
                var content = await response.Content.ReadAsStringAsync();

                Console.WriteLine(JArray.Parse(content));
            }
        }
Example #15
0
        static async Task Main(string[] args)
        {
            var client = new HttpClient();
            var disco  = await client.GetDiscoveryDocumentAsync("http://localhost:5000");

            if (disco.IsError)
            {
                Console.WriteLine(disco.Error);
                Console.ReadLine();
                return;
            }
            var tokenResponse = await client.RequestPasswordTokenAsync(new PasswordTokenRequest
            {
                Address      = disco.TokenEndpoint,
                ClientId     = "client",
                ClientSecret = "louieclient",
                Scope        = "api1",

                UserName = "******",
                Password = "******",
            });

            if (tokenResponse.IsError)
            {
                Console.WriteLine(tokenResponse.Error);
                Console.ReadLine();
                return;
            }
            Console.WriteLine(tokenResponse.Json);
            Console.WriteLine("\n\n");

            //得到token后请求api接口
            var apiClient = new HttpClient();

            apiClient.SetBearerToken(tokenResponse.AccessToken);//设置header

            var response = await apiClient.GetAsync("https://localhost:5001/api/identity/get");

            if (response.IsSuccessStatusCode)
            {
                var content = await response.Content.ReadAsStringAsync();

                Console.WriteLine(JArray.Parse(content));
                Console.ReadLine();
            }
            else
            {
                Console.WriteLine(response.StatusCode);
            }
            Console.ReadLine();
        }
Example #16
0
        private static async Task <TokenResponse> ResourceOwnerPasswordsAsync(HttpClient client, DiscoveryResponse disco)
        {
            // request token
            return(await client.RequestPasswordTokenAsync(new PasswordTokenRequest
            {
                Address = disco.TokenEndpoint,
                ClientId = "ro.client",
                ClientSecret = "secret",

                UserName = "******",
                Password = "******",
                Scope = "api1"
            }));
        }
Example #17
0
        private static async Task UsePasswordGrant()
        {
            // discover endpoints from metadata
            var client = new HttpClient();

            var disco = await client.GetDiscoveryDocumentAsync(ID4ServerUri);

            if (disco.IsError)
            {
                Console.WriteLine(disco.Error);
                return;
            }

            // request token
            var tokenResponse = await client.RequestPasswordTokenAsync(new PasswordTokenRequest
            {
                Address      = disco.TokenEndpoint,
                ClientId     = "ro.client",
                ClientSecret = "secret",

                UserName = "******",
                Password = "******",
                Scope    = "api1"
            });

            if (tokenResponse.IsError)
            {
                Console.WriteLine(tokenResponse.Error);
                return;
            }

            Console.WriteLine(tokenResponse.Json);
            Console.WriteLine("\n\n");

            // call api
            var apiClient = new HttpClient();

            apiClient.SetBearerToken(tokenResponse.AccessToken);

            var uri = $"{APIServerUri}/identity";

            Console.WriteLine($"Request api endpoint: {uri}");
            Console.WriteLine("Response:");

            var response = await apiClient.GetAsync(uri);

            await ConsoleOutput(response);
        }
Example #18
0
        private static async Task PerformRequestPw()
        {
            var client = new HttpClient();
            var disco  = await client.GetDiscoveryDocumentAsync("http://localhost:5000");

            if (disco.IsError)
            {
                Console.WriteLine(disco.Error);
                return;
            }

            var tokenResponse = await client.RequestPasswordTokenAsync(new PasswordTokenRequest
            {
                Address      = disco.TokenEndpoint,
                ClientId     = "UserNamePasswordClient",
                ClientSecret = "secret",
                UserName     = "******",
                Password     = "******",
                Scope        = "OrdersAPI"
            });

            if (tokenResponse.IsError)
            {
                Console.WriteLine(tokenResponse.Error);
                return;
            }

            Console.WriteLine(tokenResponse.Json);

            client = new HttpClient();
            client.SetBearerToken(tokenResponse.AccessToken);

            var response = await client.GetAsync("http://localhost:5001/orders/ordersasadmin");

            if (!response.IsSuccessStatusCode)
            {
                Console.WriteLine(response.StatusCode);
            }
            else
            {
                var content = await response.Content.ReadAsStringAsync();

                Console.WriteLine("Ok!");
            }
        }
Example #19
0
        private static async Task GetPasswordResourceToken(HttpClient client, DiscoveryResponse disco)
        {
            // request token
            TokenResponse tokenResponse = await client.RequestPasswordTokenAsync(new PasswordTokenRequest
            {
                Address      = disco.TokenEndpoint,
                ClientId     = "ro.client",
                ClientSecret = "secret",

                UserName = "******",
                Password = "******",
                Scope    = "api1"
            });

            if (tokenResponse.IsError)
            {
                Console.WriteLine(tokenResponse.Error);
                return;
            }

            Console.WriteLine(tokenResponse.Json);
        }
Example #20
0
        /// <summary>
        /// 根据用户名+密码获取token
        /// </summary>
        /// <returns></returns>
        private static async Task <string> GetAccessToken()
        {
            var client = new HttpClient();

            // 获取导航文件
            DiscoveryDocumentResponse disco = await client.GetDiscoveryDocumentAsync("http://localhost:5000");

            if (disco.IsError)
            {
                Console.WriteLine(disco.Error);
                return("");
            }

            // 客户端凭证模式获取token
            var request = new PasswordTokenRequest
            {
                Address = disco.TokenEndpoint,

                ClientId     = "resourceOwnerPwd.client",
                ClientSecret = "secret",

                UserName = "******",
                Password = "******",

                //Scope = "MyApiResourceScope1",//欲进入的资源域,不指定则为ids中为该客户端配置的允许访问的所有资源域;指定的话,则获取到的token只能用来进入指定的资源域
            };
            TokenResponse tokenResponse = await client.RequestPasswordTokenAsync(request);

            if (tokenResponse.IsError)
            {
                Console.WriteLine(tokenResponse.Error);
                return("");
            }

            Console.WriteLine("token:");
            Console.WriteLine(tokenResponse.Json);

            return(tokenResponse.AccessToken);
        }
Example #21
0
        private static async Task ROpasswordAndClientCredentialsExample(HttpClient client,
                                                                        DiscoveryDocumentResponse discoveryResponse)
        {
            var resourceOwnerPasswordAndClientCredentialsResponse = await client.RequestPasswordTokenAsync(
                new PasswordTokenRequest
            {
                Address = discoveryResponse.TokenEndpoint,

                ClientId     = "ResourceOwnerPasswordAndClientCredentials",
                ClientSecret = "secret",
                GrantType    = "password",
                UserName     = "******",
                Password     = "******",
                Scope        = "profile api1"
            });

            var httpClient = new HttpClient();

            httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer",
                                                                                           resourceOwnerPasswordAndClientCredentialsResponse.AccessToken);
            var response1 = await httpClient.GetStringAsync("http://localhost:6001/identity");
        }
Example #22
0
        private async Task RequestTokenPwd()
        {
            // request token
            HttpClient    client        = new HttpClient();
            TokenResponse tokenResponse = await client.RequestPasswordTokenAsync(new PasswordTokenRequest
            {
                Address      = disco.TokenEndpoint,
                ClientId     = "ro.client",
                ClientSecret = "secret",

                UserName = "******",
                Password = "******",
                Scope    = "api1"
            });

            if (tokenResponse.IsError)
            {
                Console.WriteLine(tokenResponse.Error);
                return;
            }

            Console.WriteLine(tokenResponse.Json);

            client.SetBearerToken(tokenResponse.AccessToken);

            HttpResponseMessage response = await client.GetAsync("http://localhost:5003/api/identity");

            if (!response.IsSuccessStatusCode)
            {
                Console.WriteLine(response.StatusCode);
            }
            else
            {
                string content = await response.Content.ReadAsStringAsync();

                Console.WriteLine(JArray.Parse(content));
            }
        }
        static async Task Main(string[] args)
        {
            string baseAddress = "https://localhost:6001";

            Console.WriteLine("App Start");
            DiscoveryDocumentResponse disco;
            // discover endpoints from metadata
            {
                var client = new HttpClient();
                disco = await client.GetDiscoveryDocumentAsync("https://localhost:5001");

                if (disco.IsError)
                {
                    Console.WriteLine(disco.Error);
                    return;
                }
            }

            // client.AccessTokenType = AccessTokenType.Reference;
            // request token
            {
                var client        = new HttpClient();
                var tokenResponse = await client.RequestClientCredentialsTokenAsync(new ClientCredentialsTokenRequest
                {
                    Address = disco.TokenEndpoint,

                    ClientId     = "client",
                    ClientSecret = "secret",
                    Scope        = "api1"
                });

                if (tokenResponse.IsError)
                {
                    Console.WriteLine(tokenResponse.Error);
                    return;
                }

                Console.WriteLine(tokenResponse.Json);
                //setRequestHeader("Authorization", "Bearer " + user.access_token);
                var accessToken = tokenResponse.Json["access_token"].ToString();
                // WeatherForecast
                client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", accessToken);
                var weatherGet = await client.GetStringAsync(baseAddress + "/WeatherForecast");


                HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, baseAddress + "/identity");
                request.Headers.Add("Authorization", new List <string>()
                {
                    "Bearer " + accessToken
                });
                request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
                var resp = await client.SendAsync(request);


                var identityGet = await client.GetStringAsync(baseAddress + "/identity");

                Console.WriteLine($"GET: {identityGet}");
            }

            {
                var client         = new HttpClient();
                var tokenResponse2 = await client.RequestPasswordTokenAsync(new PasswordTokenRequest
                {
                    Address      = disco.TokenEndpoint,
                    Password     = "******",
                    UserName     = "******",
                    Scope        = "api1",
                    ClientId     = "ro.client",
                    ClientSecret = "secret"
                });

                if (tokenResponse2.IsError)
                {
                    Console.WriteLine(tokenResponse2.Error);
                    return;
                }

                Console.WriteLine(tokenResponse2.Json);
                Console.WriteLine("\n\n");
            }
            {
                var client         = new HttpClient();
                var tokenResponse3 = await client.RequestClientCredentialsTokenAsync(new ClientCredentialsTokenRequest
                {
                    Address = disco.TokenEndpoint,

                    ClientId     = "client11",
                    ClientSecret = "secret11",
                    Scope        = "api1"
                });

                if (tokenResponse3.IsError)
                {
                    Console.WriteLine(tokenResponse3.Error);
                    return;
                }

                Console.WriteLine(tokenResponse3.Json);
            }

            {
                var client4 = new HttpClient();
                //reference token
                var tokenResponse4 = await client4.RequestPasswordTokenAsync(new PasswordTokenRequest
                {
                    Address      = disco.TokenEndpoint,
                    Password     = "******",
                    UserName     = "******",
                    Scope        = "api1",
                    ClientId     = "ro.client2",
                    ClientSecret = "secret"
                });

                if (tokenResponse4.IsError)
                {
                    Console.WriteLine(tokenResponse4.Error);
                    return;
                }

                Console.WriteLine(tokenResponse4.Json);
                Console.WriteLine("\n\n");

                var accessToken4 = tokenResponse4.Json["access_token"].ToString();
                // WeatherForecast
                //       client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", accessToken);
                var weatherGet4 = await client4.GetStringAsync(baseAddress + "/WeatherForecast");


                HttpRequestMessage request4 = new HttpRequestMessage(HttpMethod.Get, baseAddress + "/identity");
                request4.Headers.Add("Authorization", new List <string>()
                {
                    "Bearer " + accessToken4
                });
                request4.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken4);
                var resp4 = await client4.SendAsync(request4);

                client4.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", accessToken4);
                var identityGet4 = await client4.GetStringAsync(baseAddress + "/identity");

                Console.WriteLine($"GET: {identityGet4}");
            }
        }
Example #24
0
        static async Task Main(string[] args)
        {
            // discover endpoints from metadata
            var client = new HttpClient();
            var disco  = await client.GetDiscoveryDocumentAsync("http://localhost:5000");

            if (disco.IsError)
            {
                Console.WriteLine(disco.Error);
                return;
            }

            // user password
            var tokenPasswordTokenAsync = await client.RequestPasswordTokenAsync(new PasswordTokenRequest
            {
                Address      = disco.TokenEndpoint,
                ClientId     = "intro",
                ClientSecret = "secret",

                UserName = "******",
                Password = "******",
                Scope    = "api1"
            });

            if (tokenPasswordTokenAsync.IsError)
            {
                Console.WriteLine(tokenPasswordTokenAsync.Error);
                return;
            }

            Console.WriteLine(tokenPasswordTokenAsync.Json);

            // request token
            var tokenResponse = await client.RequestClientCredentialsTokenAsync(new ClientCredentialsTokenRequest
            {
                Address = disco.TokenEndpoint,

                ClientId     = "client",
                ClientSecret = "secret",
                Scope        = "api1"
            });

            if (tokenResponse.IsError)
            {
                Console.WriteLine(tokenResponse.Error);
                return;
            }

            Console.WriteLine(tokenResponse.Json);

            // call api
            client.SetBearerToken(tokenResponse.AccessToken);

            var response = await client.GetAsync("http://localhost:5001/weatherforecast");

            if (!response.IsSuccessStatusCode)
            {
                Console.WriteLine(response.StatusCode);
            }
            else
            {
                var content = await response.Content.ReadAsStringAsync();

                Console.WriteLine(JArray.Parse(content));
            }
        }
Example #25
0
        static void Main(string[] args)
        {
            // discover endpoints from metadata
            var client = new HttpClient();
            var disco  = client.GetDiscoveryDocumentAsync("http://localhost:5000").Result;

            if (disco.IsError)
            {
                Console.WriteLine(disco.Error);
                return;
            }

            // request token
            var tokenResponse = client.RequestClientCredentialsTokenAsync(new ClientCredentialsTokenRequest
            {
                Address = disco.TokenEndpoint,

                ClientId     = "client",
                ClientSecret = "secret",
                Scope        = "api1"
            }).Result;

            if (tokenResponse.IsError)
            {
                Console.WriteLine(tokenResponse.Error);
                return;
            }

            Console.WriteLine(tokenResponse.Json);

            // request token
            tokenResponse = client.RequestPasswordTokenAsync(new PasswordTokenRequest
            {
                Address      = disco.TokenEndpoint,
                ClientId     = "ro.client",
                ClientSecret = "secret",

                UserName = "******",
                Password = "******",
                Scope    = "api1"
            }).Result;

            if (tokenResponse.IsError)
            {
                Console.WriteLine(tokenResponse.Error);
                return;
            }

            Console.WriteLine(tokenResponse.Json);

            // call api
            client = new HttpClient();
            client.SetBearerToken(tokenResponse.AccessToken);

            var response = client.GetAsync("http://localhost:5001/identity").Result;

            if (!response.IsSuccessStatusCode)
            {
                Console.WriteLine(response.StatusCode);
            }
            else
            {
                var content = response.Content.ReadAsStringAsync().Result;
                Console.WriteLine(JArray.Parse(content));
            }
        }
Example #26
0
        private static async Task MainAsync()
        {
            var client = new HttpClient();

            string      token       = "";
            var         uri         = new Uri("http://localhost:5000/loginapi");
            HttpContent httpContent = new StringContent(JsonConvert.SerializeObject(new LoginApiDto
            {
                Username = "******",
                Password = "******"
            }));

            httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
            var resp = await client.PostAsync(uri, httpContent);

            if (resp.IsSuccessStatusCode)
            {
                token = await resp.Content.ReadAsStringAsync();
            }
            Console.WriteLine(token);
            var apiClient2   = new HttpClient();
            var apiResponse2 = await apiClient2.GetAsync("http://localhost:5000/protected");

            if (!apiResponse2.IsSuccessStatusCode)
            {
                Console.WriteLine(apiResponse2.StatusCode);
            }
            else
            {
                var content = await apiResponse2.Content.ReadAsStringAsync();

                Console.WriteLine(content);
            }

            apiClient2 = new HttpClient();
            apiClient2.SetBearerToken(token);
            apiResponse2 = await apiClient2.GetAsync("http://localhost:5000/protected");

            if (!apiResponse2.IsSuccessStatusCode)
            {
                Console.WriteLine(apiResponse2.StatusCode);
            }
            else
            {
                var content = await apiResponse2.Content.ReadAsStringAsync();

                Console.WriteLine(content);
            }


            // discover endpoints from the metadata by calling Auth server hosted on 5000 port
            var disco = await client.GetDiscoveryDocumentAsync("http://localhost:5000");

            if (disco.IsError)
            {
                Console.WriteLine(disco.Error);
                return;
            }

            // request the token from the Auth server
            var response = await client.RequestClientCredentialsTokenAsync(new ClientCredentialsTokenRequest
            {
                Address      = disco.TokenEndpoint,
                ClientId     = "client",
                ClientSecret = "secret",
                Scope        = "api1"
            });

            if (response.IsError)
            {
                Console.WriteLine(response.Error);
                return;
            }
            Console.WriteLine(response.Json);
            Console.WriteLine(response.RefreshToken);

            // call api
            var apiClient = new HttpClient();

            apiClient.SetBearerToken(response.AccessToken);

            var apiResponse = await apiClient.GetAsync("http://localhost:5000/protected");

            if (!apiResponse.IsSuccessStatusCode)
            {
                Console.WriteLine(apiResponse.StatusCode);
            }
            else
            {
                var content = await apiResponse.Content.ReadAsStringAsync();

                Console.WriteLine(JArray.Parse(content));
            }

            Console.Write($"\n\nShould get unauthorized error:\n");
            // call api
            apiClient   = new HttpClient();
            apiResponse = await apiClient.GetAsync("http://localhost:5000/api/identity");

            if (!apiResponse.IsSuccessStatusCode)
            {
                Console.WriteLine(apiResponse.StatusCode);
            }
            else
            {
                var content = await apiResponse.Content.ReadAsStringAsync();

                Console.WriteLine(JArray.Parse(content));
            }

            // -----------------------------------------------------------------
            // Resource owner auth
            Console.WriteLine("------------------------------");
            Console.WriteLine("password auth");
            Console.WriteLine("------------------------------");

            // request token
            var tokenResponse = await client.RequestPasswordTokenAsync(new PasswordTokenRequest
            {
                Address      = disco.TokenEndpoint,
                ClientId     = "ro.client",
                ClientSecret = "secret",

                UserName = "******",
                Password = "******",
                Scope    = "api1"
            });

            if (tokenResponse.IsError)
            {
                Console.WriteLine(tokenResponse.Error);
                return;
            }

            Console.WriteLine(tokenResponse.Json);
        }
Example #27
0
        static async Task Main(string[] args)
        {
            var client            = new HttpClient();
            var discoveryResponse = await client.GetDiscoveryDocumentAsync("https://localhost:5001");

            if (discoveryResponse.IsError)
            {
                Console.WriteLine(discoveryResponse.Error);
                return;
            }

            await ROpasswordAndClientCredentialsExample(client, discoveryResponse);

            var resourceOwnerPasswordResponse = await client.RequestPasswordTokenAsync(new PasswordTokenRequest
            {
                Address = discoveryResponse.TokenEndpoint,

                ClientId     = "ResourceOwnerPassword",
                ClientSecret = "secret",
                GrantType    = "password",
                UserName     = "******",
                Password     = "******",
                Scope        = "profile"
            });

            var tokenResponse = await client.RequestClientCredentialsTokenAsync(new ClientCredentialsTokenRequest
            {
                Address = discoveryResponse.TokenEndpoint,

                ClientId     = "client",
                ClientSecret = "secret",
                Scope        = "api1"
            });

            if (tokenResponse.IsError)
            {
                Console.WriteLine(tokenResponse.Error);
                return;
            }

            Console.WriteLine(tokenResponse.Json);

            var validatedToken = Validate(tokenResponse.AccessToken);

            var apiClient = new HttpClient();

            apiClient.SetBearerToken(tokenResponse.AccessToken);

            var response = await apiClient.GetAsync("http://localhost:6001/identity");

            if (!response.IsSuccessStatusCode)
            {
                Console.WriteLine(response.StatusCode);
            }
            else
            {
                var content = await response.Content.ReadAsStringAsync();

                Console.WriteLine(JArray.Parse(content));
            }
        }
Example #28
0
        public static async Task MainAsync(string[] args)
        {
            // discover endpoints from metadata
            var client = new HttpClient();

            var disco = await client.GetDiscoveryDocumentAsync("http://localhost:5000");

            if (disco.IsError)
            {
                Console.WriteLine("------------Token Error---------------------");
                Console.WriteLine(disco.Error);
                return;
            }

            // request token
            //var tokenResponse = await client.RequestClientCredentialsTokenAsync(new ClientCredentialsTokenRequest
            //{
            //    Address = disco.TokenEndpoint,
            //    ClientId = "client",
            //    ClientSecret = "secret",

            //    Scope = "api1"
            //});


            // request token
            var tokenResponse = await client.RequestPasswordTokenAsync(new PasswordTokenRequest
            {
                Address      = disco.TokenEndpoint,
                ClientId     = "ro.client",
                ClientSecret = "secret",

                UserName = "******",
                Password = "******",
                Scope    = "api1"
            });

            if (tokenResponse.IsError)
            {
                Console.WriteLine(tokenResponse.Error);
                return;
            }
            Console.WriteLine("------------Token Response---------------------");
            Console.WriteLine(tokenResponse.Json);
            Console.WriteLine("\n\n");

            // call api
            var apiClient = new HttpClient();

            apiClient.SetBearerToken(tokenResponse.AccessToken);

            var response = await apiClient.GetAsync("http://localhost:5001/api/items");

            if (!response.IsSuccessStatusCode)
            {
                Console.WriteLine("------------Items api error---------------------");
                var error = await response.Content.ReadAsStringAsync();

                Console.WriteLine(response.StatusCode);
                Console.WriteLine(error);
            }
            else
            {
                var content = await response.Content.ReadAsStringAsync();

                Console.WriteLine("------------Items api response----------------------");
                Console.WriteLine(JObject.Parse(content));
            }

            var stringContent = new StringContent("", UnicodeEncoding.UTF8, "application/json");

            var responseBuy = await apiClient.PostAsync("http://localhost:5001/api/items/5/buy", stringContent);

            if (!responseBuy.IsSuccessStatusCode)
            {
                var error = await responseBuy.Content.ReadAsStringAsync();

                Console.WriteLine("------------Buy api error---------------------");
                Console.WriteLine(responseBuy.StatusCode);
                Console.WriteLine(error);
            }
            else
            {
                var content = await responseBuy.Content.ReadAsStringAsync();

                Console.WriteLine("------------Buy api response---------------------");

                Console.WriteLine(JObject.Parse(content));
            }
        }
Example #29
0
        static async Task Main()
        {
            var client = new HttpClient();

            var disco = await client.GetDiscoveryDocumentAsync("https://localhost:5001");

            if (disco.IsError)
            {
                Console.WriteLine(disco.Error);
                return;
            }

            //var apiTokenResponse = await client.RequestClientCredentialsTokenAsync(
            //    new ClientCredentialsTokenRequest
            //    {
            //        Address = disco.TokenEndpoint,
            //        ClientId = "client",
            //        ClientSecret = "511536EF-F270-4058-80CA-1C89C192F69A",
            //        Scope = "scope1"
            //    });

            //if (apiTokenResponse.IsError)
            //{
            //    Console.WriteLine(apiTokenResponse.Error);
            //    return;
            //}

            //var apiClient = new HttpClient();

            //apiClient.SetBearerToken(apiTokenResponse.AccessToken);
            //var response = await apiClient.GetAsync("https://localhost:6001/identity");
            //if (!response.IsSuccessStatusCode)
            //{
            //    Console.WriteLine(response.StatusCode);
            //}
            //else
            //{
            //    var content = await response.Content.ReadAsStringAsync();
            //    Console.WriteLine(JArray.Parse(content));
            //}

            var passwordTokenResponse = await client.RequestPasswordTokenAsync(
                new PasswordTokenRequest
            {
                Address      = disco.TokenEndpoint,
                ClientId     = "password",
                ClientSecret = "511536EF-F270-4058-80CA-1C89C192F69A",
                Scope        = "scope1 openid profile",
                UserName     = "******",
                Password     = "******"
            });

            if (passwordTokenResponse.IsError)
            {
                Console.WriteLine(passwordTokenResponse.IsError);
                return;
            }
            var passwordClient = new HttpClient();

            passwordClient.SetBearerToken(passwordTokenResponse.AccessToken);
            var response = await passwordClient.GetAsync(disco.UserInfoEndpoint);

            if (!response.IsSuccessStatusCode)
            {
                Console.WriteLine(response.StatusCode);
            }
            else
            {
                var content = await response.Content.ReadAsStringAsync();

                Console.WriteLine(content);
            }

            Console.ReadKey();
        }
Example #30
0
        static async Task Run()
        {
            await Task.Delay(10000);

            // discover endpoints from metadata
            var client = new HttpClient();

            var disco = await client.GetDiscoveryDocumentAsync("https://localhost:5001");

            if (disco.IsError)
            {
                Console.WriteLine(disco.Error);
                return;
            }

            // request token resource owner flow
            var tokenResponse = await client.RequestPasswordTokenAsync(new PasswordTokenRequest
            {
                Address      = disco.TokenEndpoint,
                ClientId     = "ro.client",
                ClientSecret = "secret",

                UserName = "******",
                Password = "******",
                Scope    = "Chat"
            });

            // request token client credential flow
            //var tokenResponse = await client.RequestClientCredentialsTokenAsync(new ClientCredentialsTokenRequest
            //{
            //    Address = disco.TokenEndpoint,
            //    ClientId = "netClient",
            //    ClientSecret = "secret",

            //    Scope = "Chat"
            //});

            if (tokenResponse.IsError)
            {
                Console.WriteLine(tokenResponse.Error);
                return;
            }

            Console.WriteLine(tokenResponse.Json);
            Console.WriteLine("\n\n");

            // call api
            var apiClient = new HttpClient();

            apiClient.SetBearerToken(tokenResponse.AccessToken);

            var response = await apiClient.GetAsync("https://localhost:5002/identity");

            if (!response.IsSuccessStatusCode)
            {
                Console.WriteLine(response.StatusCode);
            }
            else
            {
                var content = await response.Content.ReadAsStringAsync();

                Console.WriteLine(JArray.Parse(content));
            }


            var c = new HubConnectionBuilder()
                    .WithUrl("https://localhost:5002/chat", config => {
                config.AccessTokenProvider = () => Task.FromResult(tokenResponse.AccessToken);
            })
                    .Build();

            c.Closed += C_Closed;
            c.On <string>("Echo", m => Console.WriteLine(m));

            await c.StartAsync();

            try
            {
                await c.SendAsync("Echo", "Hallo Echo");

                var e = await c.InvokeAsync <string>("Echo2", "Hallo Echo2");

                Console.WriteLine(e);
            }
            catch (Exception e)
            {
                throw;
            }



            await Task.Delay(5000);

            await c.StopAsync();
        }