客户端控制台请求服务Identityserver4认证

25 篇文章 0 订阅
3 篇文章 0 订阅


前言

前面写了两篇IdentityServer4文章,一篇是资源服务器创建(.NET Core集成Identityserver4),一篇是服务集成IdentityServer4认证(Asp.Net Core服务集成Identityserver4认证),测试都是postman工具进行测试的,今天编程控制台来演示请求的相关流程。代码框架环境Asp.net Core 3.1


提示:博主文章仅用于学习、研究和交流目的,不足和错误之处在所难免,希望大家能够批评指出,博主核实后马上更改。

一、使用步骤

1.创建一个控制台程序,进行消费,名称为OrderCounsumerk

在这里插入图片描述

2.引入IdentityModel 库 4.4.0

在这里插入图片描述

3.代码编写

  1. 客户端模式

代码如下(示例):

       var client = new HttpClient();

            var response = client.RequestClientCredentialsTokenAsync(new ClientCredentialsTokenRequest
            {
                Address = "http://localhost:5000/connect/token",
                ClientId = "client",
                ClientSecret = "secret",
                Scope = "api"
            }).Result;
            Console.WriteLine("=============================Token==============================");

            Console.WriteLine(response.AccessToken ?? response.Error);

            Console.WriteLine("=============================Token==============================");
            // 调用API
            client.SetBearerToken(response.AccessToken);

            var responses = client.GetAsync("http://localhost:5001/weatherforecast/get").Result;
            if (response.IsError)
            {
                Console.WriteLine(response.HttpStatusCode);
            }
            else
            {
                Console.WriteLine("=============================服务返回值==============================");
                var content = responses.Content.ReadAsStringAsync().Result;
               
                Console.WriteLine(content);
            }
            Console.WriteLine("Hello World!");
            Console.ReadKey();
  1. 密码模式

代码如下(示例):

        var client = new HttpClient();

            var response = client.RequestPasswordTokenAsync(new PasswordTokenRequest
            {
                Address = "http://localhost:5000/connect/token",
                ClientId = "apiClientPassword",
                ClientSecret = "apiSecret",
                Scope = "secretapi",
                UserName="123",
                Password="123"
                
            }).Result;
            Console.WriteLine("=============================Token==============================");

            Console.WriteLine(response.AccessToken ?? response.Error);

            Console.WriteLine("=============================Token==============================");
            // 调用API
            client.SetBearerToken(response.AccessToken);

            var responses = client.GetAsync("http://localhost:5001/weatherforecast/get").Result;
            if (response.IsError)
            {
                Console.WriteLine(response.HttpStatusCode);
            }
            else
            {
                Console.WriteLine("=============================服务返回值==============================");
                var content = responses.Content.ReadAsStringAsync().Result;

                Console.WriteLine(content);
            }
            Console.WriteLine("Hello World!");
            Console.ReadKey();
  1. 刷新refresh_token

代码如下(示例):

        var client = new HttpClient();

            var response = client.RequestPasswordTokenAsync(new PasswordTokenRequest
            {
                Address = "http://localhost:5000/connect/token",
                ClientId = "apiClientPassword",
                ClientSecret = "apiSecret",
                Scope = "secretapi",
                UserName="123",
                Password="123"
                
            }).Result;
            Console.WriteLine("=============================Token==============================");

            Console.WriteLine(response.AccessToken ?? response.Error);

            Console.WriteLine("=============================Token==============================");
            // 调用API
            client.SetBearerToken(response.AccessToken);

            var responses = client.GetAsync("http://localhost:5001/weatherforecast/get").Result;
            if (response.IsError)
            {
                Console.WriteLine(response.HttpStatusCode);
            }
            else
            {
                Console.WriteLine("=============================服务返回值==============================");
                var content = responses.Content.ReadAsStringAsync().Result;

                Console.WriteLine(content);
            }
            Console.WriteLine("Hello World!");
            Console.ReadKey();

4.运行效果

  1. 客户端模式
    在这里插入图片描述

  2. 密码模式
    在这里插入图片描述

  3. 刷新refresh_token
    在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值