Identity Server 4 原理和实战(完结)_建立Identity Server 4项目,Client Credentials 授权实例...
创建项目
dotnet new -i IdentityServer4.Templates
多出来的这些模板
adminUI用来测试,想要用再生产环境,需要交钱
结合core的 Identity来使用
使用EF core把一些数据持久化到数据库里了
内存来存储信息
创建项目
创建一个内存里的项目叫做 Idp
VS打开项目
直接运行:
这里看起来有点乱,这里显示注释掉
把上面这三被注释的代码放开注释:
这里添加用户,添加了一个测试用户
查看TestUser的源码
他是在代码里写死了两个用户;
往内存里添加 客户端应用:
查看GetClients()这个方法的源码
credential 凭证
授权类型是简化模式
再看这两行代码:
进去看源码:
表示的是Identity资源
Identity provider这个服务器上,它有一些用户的身份认证信息,这些信息可以看做一种被保护的资源。只不过这个资源和Identity Server是在一起的
其他的APi资源没有和Identity在一起。
相当于这里的Identity data 也相当于是一种资源,也是被保护的
目前这些都是写死在代码里 ,加载到内存里的。如果使用EFCode的模板,这些东西都可以存到数据库里。
比较大的应用通常都是存到数据库里
OAth的授权方式,前面四个可以用代码来实验
。
先从简单的开始讲,讲第四个 Client Credentials:客户端凭证,。然后再讲Password的例子
把一些没用的代码删除掉,。只保留一个Client然后进行修改
这里的api1先去掉,。不让它访问这个资源
把这个程序运行起来就可以不用管了。然后创建一个控制台应用
它作为Identity的客户端应用,
需要安装一个库
https://identityserver4.readthedocs.io/en/latest/quickstarts/1_client_credentials.html
包含了一个Client libiary,可以使用discovery endpoint.
discovery endpoint里面有什么东西呢?点击这个运行起来的Identity4的例子页面
Task.Run的写法 需要手动捕获异常
C#7.1以后还有一种简便的方法:
这么写报错,然后查看错误
项目文件添加这句话
这个时候错误就没有了。
如果报错就输出异常
因为使用的是ClientCrenditals客户端凭据的方式,就需要提供这个凭据。就是加密用的这个字符串
这俩都是扩展方法,是刚才装的Identity Model库里面提供的
方法里面需要一个参数ClientCrdentialsTokenRequest,这里面需要设置一些值
加断点进行调试
错误类型
修改为正确的Secret
这次的错误信息是 invalid_scope
这是因为服务端的Scope是空的
把服务端的Scope修改为api1
客户端也改成api1。这样就成功访问到了。
这是AccessToken
访问API
有了Access Token 就可以Call APi了。但是我们还有API资源。Identity Server 4上有一部分身份认证的资源。我们就先访问这一部分资源
服务端需要配置一下,目前只允许访问了api1资源,但是api1还不存在
IdentityResource里面分成了几块。点一下出来这些这5个
这里定义资源,只定义了两个
设置允许访问OpenId,这里就设置了允许访问的两个资源,一个是api1 一个是身份证资源里面的openId这个Scope
然后运行服务端
客户端的修改:这里也加上openid都是小写?Scope之间用空格分开
为什么都是小写的呢 我们可以在服务端的代码里面F12进去看源码
测试
首先服务端这么设置
客户端这么设置
测试;请求失败了
重新。服务端加上openid
客户端也加上openid,运行后还是错误的,这是为什么呢
clientCrdentails不代表任何用户,而我这里却想访问身份认证的资源,身份认证资源就是对应着用户了。所以说这种访问是合理的
建立APi1资源
使用VScode建立的一个新项目
返回用户的Claims
官方文档的代码直接贴进来
这里一定要写对了api1
需要身份证,然后需要使用mvc
端口改成5001
VSCode运行程序
设置控制台的地址
然后再运行控制台应用
断点就走到了 VScode的程序
控制台访问成功打印 输出的结果。从api获取的数据
转载于:https://www.cnblogs.com/wangjunwei/p/10951962.html
Identity Server 4 原理和实战(完结)_建立Identity Server 4项目,Client Credentials 授权实例...相关推荐
- Identity Server 4 原理和实战(完结)_----选看 OAuth 2.0 简介(上)
https://www.yuque.com/yuejiangliu/dotnet/cg95ni 代表资源所有者的凭据 授权 Authorization Grant 授权是一个代表着资源所有者权限的凭据 ...
- angular搭建项目步骤_建立健康的Angular项目应采取的步骤
angular搭建项目步骤 by Ashish Gaikwad 通过Ashish Gaikwad 建立健康的Angular项目应采取的步骤 (Steps you should take to buil ...
- Identity Server 4 原理和实战(完结)_建立Angular 客户端
https://material.angular.io/ 第一部是安装angular cli --prefix=ac:前缀 --routing:默认使用路由 style=scss:样式使用scss - ...
- server sql 判断是否是当天_判断sql server 是否在开启服务状态
vb编写的软件,在系统开机时,应用程序会比sqlserver启动快,造成连接不上数据库的错误. 有什么办法可以先判断一下sql server服务的状态,如果没开启先开启服务,在去连接sql服务. 从网 ...
- server sql 将出生日期转为年龄_在sql server表中有一个出生日期字段我怎么才能在当前年份改变时自动更新年龄字段...
先说明下 identity(1,1):自动+1 foreign key 外键语法 create database ztx use ztx Create Table QAUser--baidu用户资料 ...
- 深度学习attention原理_深度学习Anchor Boxes原理与实战技术
深度学习Anchor Boxes原理与实战技术 目标检测算法通常对输入图像中的大量区域进行采样,判断这些区域是否包含感兴趣的目标,并调整这些区域的边缘,以便更准确地预测目标的地面真实边界框.不同的模型 ...
- Redis学习笔记②实战篇_黑马点评项目
若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 资料链接:https://pan.baidu.com/s/1189u6u4icQYHg_9_7ovWmA( ...
- DNS tunnel的原理及实战
DNS tunnel的原理及实战 摘自:http://netsec.ccert.edu.cn/zhengming/2011/11/01/%E8%BD%AC%E8%BD%BD%EF%BC%9Adns-t ...
- Oracle特殊恢复原理与实战(DSI系列)
1.深入浅出Oracle(DSI系列Ⅰ) 2.Oracle特殊恢复原理与实战(DSI系列Ⅱ) 3.Oracle SQL Tuning(DSI系列Ⅲ)即将开设 4.Oracle DB Performan ...
最新文章
- r语言 图形一览_R语言之图形概览
- BroadCastReceiver简介
- [HTML]增加input标签的multiple属性上传的文件数
- P1739 表达式括号匹配
- virtualbox配置apache_virtualbox 网络配置 (转)
- 利用GAN原始框架生成手写数字
- Mysql union和union all用法
- ajax json 渲染 html,jQuery+Ajax+js实现请求json格式数据并渲染到html页面操作示例
- 冯诺依曼计算机流程图,基本流程图综述
- Android开发技巧 (四) —— 多窗口模式
- 北航计算机专硕学硕区别,专硕是什么意思啊?和学硕一样吗?
- 小程序开发-Step1
- Docker容器之网络管理、端口映射、容器间的互联、Dockerfile完成镜像封装
- 软件测试自学网站有哪些?不妨一探究竟
- 作为一个计算机专业的学生,除了教材,这些书籍你读过多少?
- CE1到9关详细教程
- ElasticSearch 之 Linux 安装 ElasticSearch-7.15.2(ELK、IK)
- OpenCL简介-----OpenCL学习(一)
- H5 App调试工具vconsole
- 畅聊微信支付遇到的坑
热门文章
- 前端要凉?微软开源Sketch2Code,草图秒变代码
- Vue.js 2.x笔记:表单绑定(3)
- canvas系列教程02-直线和曲线
- golang常用手册:数组、变量作用域、函数
- YouTube增加社交功能:邀请联系人聊天 可30人群聊
- 从 setNeedsLayout 说起
- IO 流 自定义字节流的缓冲区-read 和write 的特点
- SBO中流程控制功能的实现-SBO_SP_TransactionNotification
- highly dynamic working process is a great approach for learning
- good things will come late