任务10:第三方ClientCredential模式调用

创建一个控制台程序

dotnet new console --name ThirdPartyDemo

添加 Nuget 包:IdentityModel

添加之后还原

dotnet restore

Client

using System;
using System.Net.Http;
using System.Threading.Tasks;
using IdentityModel.Client;
using Newtonsoft.Json.Linq; namespace ThirdPartyDemo
{
class Program
{
static async Task 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 = await client.RequestClientCredentialsTokenAsync(new ClientCredentialsTokenRequest
{
Address = disco.TokenEndpoint, ClientId = "client",
ClientSecret = "secret",
Scope = "api"
}); if (tokenResponse.IsError)
{
Console.WriteLine(tokenResponse.Error);
return;
} Console.WriteLine(tokenResponse.Json); // call api
var client2 = new HttpClient();
client2.SetBearerToken(tokenResponse.AccessToken); var response = await client2.GetAsync("http://localhost:5001/weatherforecast");
if (!response.IsSuccessStatusCode)
{
Console.WriteLine(response.StatusCode);
}
else
{
var content = await response.Content.ReadAsStringAsync();
Console.WriteLine(JArray.Parse(content));
}
}
}
}

先启动 IdentityServerCenter,ClientCredentialApi

再启动 ThirdPartyDemo,输出如下:

{
"access_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6ImZFd0d5VGQtY2FkaE9Oamp6ajc5THciLCJ0eXAiOiJhdCtqd3QifQ.eyJuYmYiOjE1ODYyNzcwNTYsImV4cCI6MTU4NjI4MDY1NiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo1MDAwIiwiYXVkIjoiYXBpIiwiY2xpZW50X2lkIjoiY2xpZW50Iiwic2NvcGUiOlsiYXBpIl19.KRgYum2zuAdqNkzm9rMfIh7ARMPJHLZw_k55AU-wxQEYfhc6ZAiJkayRY98gKJb--nvblpBTE4u5erJNUSBBGXriMsohemvVh-8pA72PkVzNJ9KuDAUX3VagsphQ36-ZEf7lq1V87y0Fh3higUsFTeyEa8D1pZQncS6GzlRel-Q7ghX20tVl0pWdvN1BnG06AdU9-1l15OoKg9aDRL9oKf4MO9zvJhJhmXazigvrWTKEcTk7gUVs-NW8rxBwNagTC386vVSatd5qmAhph4eDA8Ryjf9utE8qEDD6cuX2qFJn0yKxpFm2zn9AMUs5YmKMesUddKeocdk9DAIXIdqehw",
"expires_in": 3600,
"token_type": "Bearer",
"scope": "api"
}
[
{
"date": "2020-04-09T00:30:56.3318938+08:00",
"temperatureC": -12,
"temperatureF": 11,
"summary": "Hot"
},
{
"date": "2020-04-10T00:30:56.3328057+08:00",
"temperatureC": 2,
"temperatureF": 35,
"summary": "Cool"
},
{
"date": "2020-04-11T00:30:56.3328097+08:00",
"temperatureC": 27,
"temperatureF": 80,
"summary": "Sweltering"
},
{
"date": "2020-04-12T00:30:56.33281+08:00",
"temperatureC": 35,
"temperatureF": 94,
"summary": "Balmy"
},
{
"date": "2020-04-13T00:30:56.3328102+08:00",
"temperatureC": 23,
"temperatureF": 73,
"summary": "Mild"
}
]

参考文档:

http://docs.identityserver.io/en/latest/quickstarts/1_client_credentials.html#creating-the-client

课程链接

http://video.jessetalk.cn/course/explore

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

欢迎转载、使用、重新发布,但务必保留文章署名 郑子铭 (包含链接: http://www.cnblogs.com/MingsonZheng/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。

如有任何疑问,请与我联系 (MingsonZheng@outlook.com) 。

ASP.NET Core分布式项目实战(第三方ClientCredential模式调用)--学习笔记的更多相关文章

  1. ASP.NET Core分布式项目实战

    ASP.NET Core开发者成长路线图 asp.net core 官方文档 https://docs.microsoft.com/zh-cn/aspnet/core/getting-started/ ...

  2. 【笔记目录2】ASP.NET Core分布式项目实战

    当前标签: ASP.NET Core分布式项目实战 共2页: 上一页 1 2  11.ClientCredential模式总结 GASA 2019-03-11 12:59 阅读:26 评论:0 10. ...

  3. 【笔记目录1】ASP.NET Core分布式项目实战

    当前标签: ASP.NET Core分布式项目实战 共2页: 1 2 下一页  35.Docker安装Mysql挂载Host Volume GASA 2019-06-20 22:02 阅读:51 评论 ...

  4. ASP.NET Core分布式项目-2.oauth密码模式identity server4实现

    源码下载 这里根据<ASP.NET Core分布式项目-1.IdentityServer4登录中心>的代码来继续更新oauth密码模式,这里的密码模式比上次的客户端模式更安全 在WebAp ...

  5. ASP.NET Core分布式项目实战-目录

    前言 今年是2018年,发现已经有4年没有写博客了,在这4年的时光里,接触了很多的.NET技术,自己的技术也得到很大的进步.在这段时光里面很感谢张队长以及其他开发者一直对.NET Core开源社区做出 ...

  6. 【ASP.NET Core分布式项目实战】(三)整理IdentityServer4 MVC授权、Consent功能实现

    本博客根据http://video.jessetalk.cn/my/course/5视频整理(内容可能会有部分,推荐看源视频学习) 前言 由于之前的博客都是基于其他的博客进行开发,现在重新整理一下方便 ...

  7. 【ASP.NET Core分布式项目实战】(一)IdentityServer4登录中心、oauth密码模式identity server4实现

    本博客根据http://video.jessetalk.cn/my/course/5视频整理 资料 OAuth2 流程:http://www.ruanyifeng.com/blog/2014/05/o ...

  8. 【ASP.NET Core分布式项目实战】(五)Docker制作dotnet core控制台程序镜像

    Docker制作dotnet core控制台程序镜像 基于dotnet SDK 新建控制台程序 mkdir /home/console cd /home/console dotnet new cons ...

  9. 【ASP.NET Core分布式项目实战】(六)Gitlab安装

    Gitlab GitLab是由GitLabInc.开发,使用MIT许可证的基于网络的Git仓库管理工具,且具有wiki和issue跟踪功能.使用Git作为代码管理工具,并在此基础上搭建起来的web服务 ...

  10. 【ASP.NET Core分布式项目实战】(二)oauth2 + oidc 实现 server部分

    本博客根据http://video.jessetalk.cn/my/course/5视频整理(内容可能会有部分,推荐看源视频学习) 资料 我们基于之前的MvcCookieAuthSample来做开发 ...

随机推荐

  1. Node版本升级和降级

    https://blog.csdn.net/qq_29262849/article/details/52973095

  2. C#设计模式04——工厂方法的写法

    1. What是C#工厂方法?C#工厂方法是一种设计模式,它通过创建具有相同基类的对象来实现代码的重用和灵活性. 2. Why使用C#工厂方法?使用C#工厂方法有以下好处:- 降低了代码的耦合性,让代 ...

  3. 媒体查询常用 - 移动端和PC端尺寸

    /* 移动端 */ @media all and (max-width: 768px) { } /* PC端 */ @media all and (min-width: 769px) { }

  4. 【面试题精讲】MySQL中覆盖索引是什么

    有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top 首发博客地址 系列文章地址 在MySQL中,覆盖索引是一种特殊类型的索引,它 ...

  5. [转帖]GB18030 编码

    https://www.qqxiuzi.cn/zh/hanzi-gb18030-bianma.php GB18030编码采用单字节.双字节.四字节分段编码方案,具体码位见下文.GB18030向下兼容G ...

  6. Springboot开发的应用为什么这么占用内存

    Springboot开发的应用为什么这么占用内存 Java的原罪 Java 程序员比 c或者是c++程序员相比轻松了很多. 不要管理繁杂的内存申请与释放,也不用担心因为忘记释放内存导致很严重的内存泄漏 ...

  7. [转帖]关系模型到 Key-Value 模型的映射

    https://cn.pingcap.com/blog/tidb-internal-2 在这我们将关系模型简单理解为 Table 和 SQL 语句,那么问题变为如何在 KV 结构上保存 Table 以 ...

  8. 关于JVM指针压缩性能的研究

    关于JVM指针压缩性能的研究 摘要 JVM的内存对消最小是 8bytes 所以32G内存的情况下可以使用 32位的指针就可以了. 32位就是4G 在乘以最小的内存extent 8 bytes 的出来可 ...

  9. [转帖]01-rsync备份方式

    https://developer.aliyun.com/article/885783?spm=a2c6h.24874632.expert-profile.284.7c46cfe9h5DxWK 简介: ...

  10. [转帖]C2C - False Sharing Detection in Linux Perf

    https://joemario.github.io/blog/2016/09/01/c2c-blog/ Do you run your application in a NUMA environme ...