09.客户端集成IdentityServer

新建API的项目

dotnet new webapi --name ClientCredentialApi

在我们上一节课的代码IdentityServerSample中加入授权的认证

引入命名空间:

using Microsoft.AspNetCore.Authorization;

然后给Controller加上authrize的属性。这样API就访问不了。

ClientCredentialApi

给我们刚创建的项目:ClientCredentialApi

加上Authrize属性,这样这个API我们就访问不了。

nuget包添加引用

IdentityServer4.AccessTokenValidation

在Startup.cs里面把认证授权加进来

   services.AddAuthentication("Bearer")
.AddIdentityServerAuthentication(options =>
{
options.Authority = "http://localhost:5000";//需要授权的时候找谁
options.RequireHttpsMetadata = false; options.ApiName = "api";
});

使用Authentication

这样就完成了。有了IdentityServer在APi端加授权就非常的简单

换成501的端口

然后不用Https:

运行程序ClientCredentialApi

http://localhost:5001/api/values

返回的状体是401,未授权

运行程序IdentityServerCenter

那我们去哪里拿Token呢?

运行起来Server端 的地址。

打开地址:

http://localhost:5000/.well-known/openid-configuration

这里告诉我们取token的地址

"token_endpoint": "http://localhost:5000/connect/token",

postman内请求这个地址:

http://localhost:5000/connect/token

body内三个参数:

client_id:client

client_secret:secret

grant_type:client_credentials

返回的数据。这样就拿到了我们的token

{
"access_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6ImE3MGZkOGQyYjVjMmVlNDUzMWU1ZGUyNWJmYTViNmE4IiwidHlwIjoiSldUIn0.eyJuYmYiOjE1NTIyMzY5ODEsImV4cCI6MTU1MjI0MDU4MSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo1MDAwIiwiYXVkIjpbImh0dHA6Ly9sb2NhbGhvc3Q6NTAwMC9yZXNvdXJjZXMiLCJhcGkiXSwiY2xpZW50X2lkIjoiY2xpZW50Iiwic2NvcGUiOlsiYXBpIl19.GNX-gMxDDTzniaamYw9mOC159XfnP9AlkynOpYqvjSZJCduM6aqRIiwVbvMsak8GZhShPZpGggj8_ng5S-81M-VNbSlce5SImHckMXkBGXJ4A9OgsYemja7d3Mv-Lz43DkgWvTnoX1CfZl8PxBDueYlZOSLlqwlmYkN3S0TYuQwgXD0nKLyEnRTWy8meOAOkpuGzSabIcXBGwetMRrNZeooRtvYDuEe6d_Jfxi0o2-KD-TehB7n70D7ZFGnjTG2Ka5oJQrBKdaqY-Mqt42unJeV-faMhvjYkCxHqxRGtnue2zaCWWJdxP1wDu5VSRZjdfD4LoB29wfOwYeJxAalgvw",
"expires_in": ,
"token_type": "Bearer"
}

复制从服务端拿到的token的值。

启动ClientCredentialApi的程序

访问地址:

http://localhost:5001/api/values

Authorization:Bearer+空格+复制过来的Token

这个token就是从是服务端 5000端口的地址拿过来的token

这是postman去实现的。接下来我们要写一个api的方式去实现

最新文章

  1. 通过href简单实现单击a链接跳转到页面指定位置
  2. linux挂载移动硬盘
  3. Spring将多个配置文件引入一个配置文件中
  4. Iis load balance
  5. iOS开发之自定义画板
  6. 美丽的表格样式(使用CSS样式表控制表格样式)
  7. 404 error on preview ... "buffer_id(29) is not valid (closed or unsupported file format)"
  8. java基础学习——集合
  9. linux文件目录权限和系统基础优化命令(yum源配置)
  10. VS2015 项目中 添加windows服务
  11. photoshop学习3
  12. Validation failed for one or more entities. See ‘EntityValidationErrors’解决方法;关于如何查看 EntityValidationErrors 详细信息的解决方法
  13. PreparedStatement与Statement区别
  14. Fib的奇怪定理 : gcd(F[n],F[m])=F[gcd(n,m)]
  15. Nvidia驱动正确安装过程
  16. 3.Springboot之修改启动时的默认图案Banner
  17. hadoop程序MapReduce之MaxTemperature
  18. 从零打造在线网盘系统之Hibernate查询与更新技术
  19. LeetCode 289. Game of Life (C++)
  20. 浅谈Vue中的Prop

热门文章

  1. 基于OpenCL的深度学习工具:AMD MLP及其使用详解
  2. Caused by:java.sql.SQLException:ORA-01008:并不是全部变量都已绑定
  3. iOS9新特性之泛型
  4. GitLab Pages expect to run on their own virtual host
  5. 如何分析和提高大型项目(C/C++)的编译速度?(VS2015特有的:/LTCG:incremental选项)
  6. 云计算系列——HIVE1.2.1 - JDBC 服务
  7. include vector 编译出错VC++
  8. animation steps属性实现帧动画
  9. 追求代码质量: 用 AOP 进行防御性编程
  10. html页面表格导出到excel总结