identity server4获取token和userInfo
一、简介
IdentityServer4(ids4)是用于ASP.NET Core的OpenID Connect和OAuth 2.0框架。在许多成熟的.net core框架中都完美的集成的该身份服务框架,用于提供单一的身份授权服务和简单的配置。ids4十分适用于分布式和微服务系统的身份验证,本篇就介绍一下ids4在微服务框架中如何获取token和userInfo。
二、开始前
ids4提供的token默认JWT格式,.net core中也对JWT做了完美支持。这里不建议大家自己在项目中集成ids4框架,最好选择abp、abp vNext框架或ids4 demo进行试验。abp和abp vNext框架中都对ids4和JWT做了完美的集成。特别是abp vNext微服务框架,该框架不仅对ids4和ocelot等框架进行了集成,还将微服务的身份验证进行了统一的授权,并做了单一的授权服务可对外提供open id。推荐abp框架的目的是可以免去学习.net core身份机制和IdentityServer4框架的痛苦,目前关于ids4的踩坑资料并不多,所以如果个人去集成ids4框架是存在不少风险的。
三、获取token
ids4 提供的令牌端点:
POST /connect/token
client_id=client1&
client_secret=secret&
grant_type=authorization_code&
code=hdh922&
redirect_uri=https://myapp.com/callback
上面只是获取token的示例,实际开发中不会这样配置。
我的示例使用的是abp vNext微服务中的授权服务,并没有在.net core中单独集成ids4 和JWT。示例中我会对client_id和grant_type做新的配置,方便大家实际体验。
step1:添加client_id
ids4官方有提供Admin UI管理,但是价格昂贵就不考虑了。深度使用的话可以基于ids4提供的ef core程序集进行身份管理开发,abp vNext中似乎对ids4进行了身份管理开发,但是接口并未发布。如果只是简单身份配置的话建议在abp vNext授权服务的种子文件中进行身份添加然后使用ef core还原到数据库。不想去折腾abp vNext微服务框架,直接修改数据库也是可以的。
step2:配置client_id发放token方式(ClientGrantType)
ids4提供的token发放方式有多种,web开发中使用password方式发放token。
step3:配置client加密(ClientSecret)
ids4基于client发放token,所以获取token也需要提供client密码。
以上配置均可以在abp vNext授权服务种子文件中进行添加。直接修改数据库需要对ids4数据库中的以下表进行先后修改:IdentityServerClients、IdentityServerClientGrantTypes、IdentityServerClientSecrets
step4:获取token
启动服务后使用postman获取token参数如下:

token:

四、获取userInfo
ids4提供了便捷的userInfo获取方式,用于其他系统获取用户信息。
step1:配置openid
使用abp vNext授权服务ids4种子文件可以直接配置openid,直接修改数据库需要在ids4数据库的IdentityServerClientScopes表中进行配置。
step2:获取userInfo
使用postman获取userInfo参数如下:

userInfo:

userInfo输出了用户id和姓名,配置openid信息在IdentityServerIdentityClaims表中。
五、总结
identity server4获取token和userInfo的方式介绍完了,强烈推荐使用abp框架研究配置和应用ids4,喜欢折腾的朋友也可以参考ids4官方demo。ids4框架十分强大复杂,笔者不推荐从头学习,个人应该以学习如何配置和应用为主。后续我会介绍更多ids4的使用技巧和ids4在微服务中的应用,喜欢的朋友可以持续关注下。。。
identity server4获取token和userInfo的更多相关文章
- Identity Server4学习系列二之令牌(Token)的概念
1.简介 通过前文知道了Identity Server4的基本用途,现在必须了解一些实现它的基本细节. 2.关于服务端生成Token令牌 头部(Header): { “typ”: “JWT”, //t ...
- .Net Core 认证系统之基于Identity Server4 Token的JwtToken认证源码解析
介绍JwtToken认证之前,必须要掌握.Net Core认证系统的核心原理,如果你还不了解,请参考.Net Core 认证组件源码解析,且必须对jwt有基本的了解,如果不知道,请百度.最重要的是你还 ...
- 【ASP.NET Core分布式项目实战】(一)IdentityServer4登录中心、oauth密码模式identity server4实现
本博客根据http://video.jessetalk.cn/my/course/5视频整理 资料 OAuth2 流程:http://www.ruanyifeng.com/blog/2014/05/o ...
- Identity Server4学习系列三
1.简介 在Identity Server4学习系列一和Identity Server4学习系列二之令牌(Token)的概念的基础上,了解了Identity Server4的由来,以及令牌的相关知识, ...
- ASP.NET Core3.1使用Identity Server4建立Authorization Server
前言 网上关于Identity Server4的资料有挺多的,之前是一直看杨旭老师的,最近项目中有使用到,在使用.NET Core3.1的时候有一些不同.所以在此记录一下. 预备知识: https:/ ...
- ASP.NET Core3.1使用Identity Server4建立Authorization Server-2
前言 建立Web Api项目 在同一个解决方案下建立一个Web Api项目IdentityServer4.WebApi,然后修改Web Api的launchSettings.json.参考第一节,当然 ...
- identity server4 证书
我们需要对token进行签名, 这意味着identity server需要一对public和private key. 幸运的是, 我们可以告诉identity server在程序的运行时候对这项工作进 ...
- Identity Server4学习系列四之用户名密码获得访问令牌
1.简介 Identity Server4支持用户名密码模式,允许调用客户端使用用户名密码来获得访问Api资源(遵循Auth 2.0协议)的Access Token,MS可能考虑兼容老的系统,实现了这 ...
- Identity Server4学习系列一
一.前言 今天开始学习Identity Server4,顺便了解下.Net Core,以便于完善技术栈,最主要的是要跟上.Net的发展潮流,顺便帮助各位整理下官方文档,加上一些我自己对他的理解. 这是 ...
随机推荐
- Jmeter 逻辑控制器 之 吞吐量控制器
吞吐量控制器 听起来好像比较难理解或者比较高深,其实它非常简单,今天我仔细看了下帮助,分享下对它的理解. 一.认识吞吐量控制器 作用:控制其下子样例执行的频次,有两种控制模式,一种是直接设置数值,一种 ...
- 配置zabbix监控windows,cmd运行报错cannot connect to Service Manager: [0x00000005]
错误原因: cmd运行没有管理员权限 解决: 找到cmd.exe的位置C:\Windows\System32,选中--右键--使用管理员身份运行 再通过cmd进入到zabbix_agentd文件夹进行 ...
- 华为ENSP命令大全
实验命令___ENSP 一. 生成树STP 注:桥优先级取值越小,则优先级越高,通过配置优先级(开销值cost)可控制根桥选举.当根桥发生故障则会选举新的根桥,当故障恢复根桥重新选举.通过设置端口 ...
- 最新 光环新网java校招面经 (含整理过的面试题大全)
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.优刻得等10家互联网公司的校招Offer,因为某些自身原因最终选择了优刻得.6.7月主要是做系统复习.项目复盘.LeetCo ...
- shell中得到当下路径所有文件夹名称
方法1: for dir in $(ls -al ./|awk '/^d/ {print $NF}') do echo $dir done 方法2: for dir in $(ls ./) d ...
- 局部内部类的final问题
局部内部类,如果希望访问所在方法的局部变量,那么这个局部变量就必须是final的(或者只赋值一次) 从Java8开始,只要局部变量事实不变那么final关键字可以省略 为什么需要保证变量为final, ...
- mybatis 的一对一关联查询association
现在项目的列表查询数据需要查一个总数count, 如果直接写在同一个sql里面,会导致查询速度很慢, 因此,想到使用关联查询,例子如下: 附上代码: 其中遇到的坑哟: 1.association中的s ...
- Linux Centos下软件的安装与卸载方法
转载于: http://blog.csdn.net/zolalad/article/details/11368879 Linux下软件的安装与卸载 第一章 linux下安装软件,如何知道软件安 ...
- 用python库openpyxl操作excel,从源excel表中提取信息复制到目标excel表中
现代生活中,我们很难不与excel表打交道,excel表有着易学易用的优点,只是当表中数据量很大,我们又需要从其他表册中复制粘贴一些数据(比如身份证号)的时候,我们会越来越倦怠,毕竟我们不是机器,没法 ...
- 一块40克的砝码,摔成4块,利用天平,刚好可以称出1~40g所有整数克,问:这4块分别是多少克
public static void main(String[] args) { List<Integer> list = new ArrayList<>();//记录每组数的 ...