一、简介

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的更多相关文章

  1. Identity Server4学习系列二之令牌(Token)的概念

    1.简介 通过前文知道了Identity Server4的基本用途,现在必须了解一些实现它的基本细节. 2.关于服务端生成Token令牌 头部(Header): { “typ”: “JWT”, //t ...

  2. .Net Core 认证系统之基于Identity Server4 Token的JwtToken认证源码解析

    介绍JwtToken认证之前,必须要掌握.Net Core认证系统的核心原理,如果你还不了解,请参考.Net Core 认证组件源码解析,且必须对jwt有基本的了解,如果不知道,请百度.最重要的是你还 ...

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

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

  4. Identity Server4学习系列三

    1.简介 在Identity Server4学习系列一和Identity Server4学习系列二之令牌(Token)的概念的基础上,了解了Identity Server4的由来,以及令牌的相关知识, ...

  5. ASP.NET Core3.1使用Identity Server4建立Authorization Server

    前言 网上关于Identity Server4的资料有挺多的,之前是一直看杨旭老师的,最近项目中有使用到,在使用.NET Core3.1的时候有一些不同.所以在此记录一下. 预备知识: https:/ ...

  6. ASP.NET Core3.1使用Identity Server4建立Authorization Server-2

    前言 建立Web Api项目 在同一个解决方案下建立一个Web Api项目IdentityServer4.WebApi,然后修改Web Api的launchSettings.json.参考第一节,当然 ...

  7. identity server4 证书

    我们需要对token进行签名, 这意味着identity server需要一对public和private key. 幸运的是, 我们可以告诉identity server在程序的运行时候对这项工作进 ...

  8. Identity Server4学习系列四之用户名密码获得访问令牌

    1.简介 Identity Server4支持用户名密码模式,允许调用客户端使用用户名密码来获得访问Api资源(遵循Auth 2.0协议)的Access Token,MS可能考虑兼容老的系统,实现了这 ...

  9. Identity Server4学习系列一

    一.前言 今天开始学习Identity Server4,顺便了解下.Net Core,以便于完善技术栈,最主要的是要跟上.Net的发展潮流,顺便帮助各位整理下官方文档,加上一些我自己对他的理解. 这是 ...

随机推荐

  1. 安装ELectron失败解决方案

    npm安装Electron解决方案 Electron使用npm安装时,因为是国外的镜像源,所以速度会非常慢.而使用cnpm如下命令进行安装时,又会出现安装失败的问题: npm install elec ...

  2. Java异步调用转同步的5种方式

    1.异步和同步的概念 同步调用:调用方在调用过程中,持续等待返回结果. 异步调用:调用方在调用过程中,不直接等待返回结果,而是执行其他任务,结果返回形式通常为回调函数. 2 .异步转为同步的概率 需要 ...

  3. 关于C++的智能指针

    一句话概括:当类中有指针成员时,可以使用智能指针实现对象共享:智能指针通过引用计数实现,即对指向同一对象的指针计数:智能指针的使用可以方便/安全地控制对象的生命周期,对指针进行自动销毁. 当类中有指针 ...

  4. RestHighLevelClient 之 Scroll

    ES中默认最大查询结果为10000,大于10000时查不出结果,报错超过最大值,如把 from调到大于10000. 针对这个问题,有两种解决办法. 第一种,修改 max_result_window 很 ...

  5. HIVE的UDF

    HIVE的UDF    新建java工程,导入hive相关包,导入hive相关的lib.    创建类继承UDF    自己编写一个evaluate方法,返回值和参数任意.    为了能让mapred ...

  6. 大周末的不休息,继续学习pandas吧,pandas你该这么学,No.7

    其实,写文章真的挺难的 每天抽点时间,写写文采飘逸的文章 坚持个几年,成为称霸一方的大佬 坚持就会成功吧~ 最近碰到瓶颈了, 一直找不到好的运营公众号的方式(好想有人指导唉~,对了,橡皮擦有个100多 ...

  7. JavaSE基础(十二)--Java 对象和类

    Java 对象和类 Java作为一种面向对象语言.支持以下基本概念: 多态 继承 封装 抽象 类 对象 实例 方法 重载 本节我们重点研究对象和类的概念. 对象:对象是类的一个实例(对象不是找个女朋友 ...

  8. centos6.5安装python3及virtualenv环境

    1. 下载源码: wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz wget http://mirrors.sohu.com/ ...

  9. 【AtCoder】Mujin Programming Challenge 2017

    Mujin Programming Challenge 2017 A - Robot Racing 如果每个数都是一个一个间隔开的,那么答案是\(n!\) 考虑把一个数挪到1,第二个数挪到3,以此类推 ...

  10. SpringCloud 教程 | 终章

    错过了这一篇,你可能再也学不会 Spring Cloud 了!Spring Boot做为下一代 web 框架,Spring Cloud 作为最新最火的微服务的翘楚,你还有什么理由拒绝.赶快上船吧,老船 ...