10.第三方ClientCredential模式调用

10.第三方ClientCredential模式调用

10.第三方ClientCredential模式调用

 

IdentityModel的官方文档:

https://identitymodel.readthedocs.io/en/latest/index.html

 

ThirdPartyDemo

创建第三方的应用程序,相当于它来请求我们的API

创建控制台的应用程序

dotnet new console --name ThirdPartyDemo:常见控制台程序ThirdPartyDemo

 

添加nuget包:IdentityModel

 

首先我们需要访问以下这个IdentityServer,是否可以来实现

 

 

 

 

 

 

 

运行测试

运行:IdentityServerSample

D:\MyDemos\jesse\IdentityServerSample\IdentityServerCenter

在运行:ClientCredentialApi

D:\MyDemos\jesse\ClientCredentialApi

在运行我们的控制台应用程序

修正代码

 

 

继续代码,运行结果

这样access_token就返回了。还有我们的api/Values里面输出的值

 

 

 

D:\MyDemos\jesse\ThirdPartyDemo>dotnet run
Program.cs(11,24): warning CS0618: '“DiscoveryClient”已过时:“This type will be deprecated or changed in a future version. It is recommended that you switch to the new extension methods for HttpClient. They give you much more control over the HttpClient lifetime and configuration. See the docs here: https://identitymodel.readthedocs.io” [D:\MyDemos\jesse\ThirdPartyDemo\ThirdPartyDemo.csproj]
Program.cs(16,35): warning CS0618: '“TokenClient”已过时:“This type will be deprecated or changed in a future version. It is recommended that you switch to the new extension methods for HttpClient. They give you much more control over the HttpClient lifetime and configuration. See the docs here: https://identitymodel.readthedocs.io” [D:\MyDemos\jesse\ThirdPartyDemo\ThirdPartyDemo.csproj]
{
  "access_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6ImE3MGZkOGQyYjVjMmVlNDUzMWU1ZGUyNWJmYTViNmE4IiwidHlwIjoiSldUIn0.eyJuYmYiOjE1NTIyNzk3MzAsImV4cCI6MTU1MjI4MzMzMCwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo1MDAwIiwiYXVkIjpbImh0dHA6Ly9sb2NhbGhvc3Q6NTAwMC9yZXNvdXJjZXMiLCJhcGkiXSwiY2xpZW50X2lkIjoiY2xpZW50Iiwic2NvcGUiOlsiYXBpIl19.hPUdUBWxUd2R3xHb4rfGgLFx4Y5KtfK3NFLf3pICzyYnpI8gcfvyzwzWFkY1ZNCwDwq8KVGZsPe_Yu6hRYvlVk8-vsJTXC4W0UJnfEmlFABDfXkao_LlyVZ7ULksg8gZbPje0AVqLtiyKWl66E4iYvsBRfuTBsTVYzStFO4-g2GNsfsyK6rc0iugQo9Gw9hQG3wpumvnq7LJI2SG42GzoGqhWbHvAj5JLvmOY5Mh0ccNR971Z4Q97pp_DXoFSqaLIPfuLN3gD16iQVMzSGMv6tawtpoGZu3XygpOR6T70rXBNTw0StWSdXGyrvI5j3ROKgWy8m9QflzaWr3ElN9Qzw",
  "expires_in": 3600,
  "token_type": "Bearer"
}
["value1","value2"]

 

流程

 

1.先检测地址是否正常:

2.然后通过tokenClient去拿到我们的token

 

3.拿到token后用httpClient访问我们的API

 

 

这就是通过第三方应用程序代码的形式,实现了API的token的获取和api的请求

复制代码
using System;
using IdentityModel.Client;
using System.Net.Http;

namespace ThirdPartyDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            var diso = DiscoveryClient.GetAsync("http://localhost:5000").Result;
            if (diso.IsError)
            {
                Console.WriteLine(diso.Error);
            }
            var tokenClient = new TokenClient(diso.TokenEndpoint, "client", "secret");
            var tokenResponse = tokenClient.RequestClientCredentialsAsync("api").Result;
            if (tokenResponse.IsError)
            {
                Console.WriteLine(tokenResponse.Error);
            }
            else
            {
                Console.WriteLine(tokenResponse.Json);//输出返回的json
            }
            //获取到token 相当于从认证中心拿到了许可 再去访问 api的程序
            var httpClient = new HttpClient();
            httpClient.SetBearerToken(tokenResponse.AccessToken);
            var respone = httpClient.GetAsync("http://localhost:5001/api/values").Result;
            if (respone.IsSuccessStatusCode)
            {
                Console.WriteLine(respone.Content.ReadAsStringAsync().Result);
            }
            Console.WriteLine();
        }
    }
}
复制代码

 



如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
分类: asp.net core
我在关注他 取消关注
0
0
« 上一篇: 09.客户端集成IdentityServer
» 下一篇: 11.ClientCredential模式总结
posted @ 2019-03-11 01:05 GASA 阅读( 28) 评论( 0) 编辑 收藏

转载于:https://www.cnblogs.com/owenzh/p/11289806.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值