identityserver4

Asp.Net Core 中IdentityServer4 授权中心之自定义授权模式

主宰稳场 提交于 2020-04-17 14:15:54
【推荐阅读】微服务还能火多久?>>> 一、前言 上一篇我分享了一篇关于 Asp.Net Core 中IdentityServer4 授权中心之应用实战 的文章,其中有不少博友给我提了问题,其中有一个博友问我的一个场景,我给他解答的还不够完美,之后我经过自己的学习查阅并阅读了相关源代码,发现 IdentityServer4 可以实现自定义 GrantType 授权方式。 声明 :看这篇文章时如果你没有阅读我上一篇 Asp.Net Core 中IdentityServer4 授权中心之应用实战 的文章,那请先移步看上面的文章,再来看这篇文章会更加清晰,感谢支持,感谢关注! 二、场景模拟 上篇文章已经把电商系统从单一网关架构升级到多网关架构,架构图如下: 然而上面的 授权中心 使用的是 密码授权模式 ,但是对于 微信小程序 、 微信公众号商城 端使用的授权还不是很合适; 微信小程序 和 微信公众号 微商城客户端的场景如下: 用户访问小程序商城或者微信公众号商城后会到 微信服务端 获得授权拿到相关的用户 openId 、 unionId 、 userName 等相关信息,再携带 openId 、 unionId 、 userName 等信息访问 授权中心 网关,进行授权,如果不存在则自动注册用户,如果存在则登录授权成功等操作。那这个场景后我该如何改造 授权中心 服务网关呢?经过研究和探讨

IdentityServer4源码解析_4_令牌发放接口

三世轮回 提交于 2020-04-17 04:23:43
【推荐阅读】微服务还能火多久?>>> 目录 IdentityServer4源码解析_1_项目结构 IdentityServer4源码解析_2_元数据接口 IdentityServer4源码解析_3_认证接口 IdentityServer4源码解析_4_令牌发放接口 IdentityServer4源码解析_5_查询用户信息接口 [IdentityServer4源码解析_6_结束会话接口] [IdentityServer4源码解析_7_查询令牌信息接口] [IdentityServer4源码解析_8_撤销令牌接口] 协议 Token接口 oidc服务需要提供token接口,提供AccessToken,IdToken,以及RefreshToken(可选)。在授权码模式下,token接口必须使用https。 请求 必须使用POST方法,使用x-www-form-urlencoded序列化参数,clientId:clientSecret使用Basic加密放在Authorization头中 POST /token HTTP/1.1 Host: server.example.com Content-Type: application/x-www-form-urlencoded Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW grant_type

IdentityServer4源码解析_1_项目结构

拟墨画扇 提交于 2020-04-17 03:58:36
【推荐阅读】微服务还能火多久?>>> 目录 IdentityServer4源码解析_1_项目结构 IdentityServer4源码解析_2_元数据接口 IdentityServer4源码解析_3_认证接口 IdentityServer4源码解析_4_令牌发放接口 IdentityServer4源码解析_5_查询用户信息接口 [IdentityServer4源码解析_6_结束会话接口] [IdentityServer4源码解析_7_查询令牌信息接口] [IdentityServer4源码解析_8_撤销令牌接口] 简介 Security源码解析系列介绍了微软提供的各种认证架构,其中OAuth2.0,OpenIdConnect属于远程认证架构,所谓远程认证,是指token的颁发是由其他站点完成的。 IdentityServer4是基于OpenIdConnect协议的认证中心框架,可以帮助我们快速搭建微服务认证中心。 初学者可能看到生涩的概念比较头疼,可以将OAuth, OpenIdConnect协议简单理解成需求文档,idsv4基于需求提供了一系列的api实现。 对于idsv还不太了解的可以看下面的资料,本系列主要学习梳理idsv4的源码,结合协议加深理解。 晓晨姐姐系列文章 https://www.cnblogs.com/stulzq/p/8119928.html 官方文档

Customizing ASP.NET Identity

扶醉桌前 提交于 2020-04-16 02:56:29
问题 I'm using Identity Server 4 and I've customised my ASP.NET Identity user as follows: public class ApplicationUser : IdentityUser { [MaxLength(100)] public virtual string FirstName { get; set; } [MaxLength(100)] public virtual string LastName { get; set; } } I can't see where I would configure Identity Server 4 to include these 2 properties in the claims collection. I've had a look through some of the Identity Server 4 samples but can't see any examples. I'd ideally like to map these 2 user

identity server4获取token和userInfo

谁说胖子不能爱 提交于 2020-04-12 09:09:00
一、简介 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

identity server4获取token和userInfo

这一生的挚爱 提交于 2020-04-12 08:28:45
一、简介 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

使用MySql对IdentityServer4进行持久化

孤人 提交于 2020-04-11 07:32:29
  哈喽大家好,看见网上很少有使用MySql进行持久化的,毕竟又很多坑,说句实话,就连 MySql.Data.EntityFrameworkCore 都有问题,不知道是.net core更新太快还是其它的问题,但毕竟mssql驱动是没问题的,感觉还是私心太大了。不得以之下选择了一个第三方的驱动 Pomelo.EntityFrameworkCore.MySql 驱动,在这里主要是你安装了它,你就又了它的设计器,但你还需要你安装EFCore的设计器,因为你执行dotnet命令迁移的时候还得靠它,好吧,我们继续,在你的应用程序中最好保持这几个包。能多不能少。 <ItemGroup> <PackageReference Include= " IdentityServer4 " Version= " 2.0.0-rc1 " /> <PackageReference Include= " IdentityServer4.AspNetIdentity " Version= " 2.0.0-rc1 " /> <PackageReference Include= " IdentityServer4.EntityFramework " Version= " 2.0.0-rc1 " /> <PackageReference Include= " Microsoft.AspNetCore.All "

IdentityServer 部署踩坑记

℡╲_俬逩灬. 提交于 2020-04-09 01:01:00
IdentityServer 部署踩坑记 Intro 周末终于部署了 IdentityServer 以及 IdentityServerAdmin 项目,踩了几个坑,在此记录分享一下。 部署架构 项目是基于 IdentityServerAdmin 项目修改的,感谢作者的开源付出,有需要 IdentityServer 管理需求的可以关注一下,觉得好用的可以给个 star 支持一下 https://github.com/skoruba/IdentityServer4.Admin 实际部署的有两个服务,一个是 IdentityServer 项目( https://id.weihanli.xyz ),一个是 IdentityAdmin 项目(< https://id-admin.weihanli.xyz >)。 两个服务都是部署在一台服务器上,这一台服务器上部署一个单节点的 kubernetes,两个服务都是部署在 k8s 上并通过 NortPort 的方式对外提供服务,外面有一层 nginx 做了请求转发同时提供对外 https 的支持。 最初的 nginx 配置如下 server { listen 443; ssl_certificate /home/pipeline/.acme.sh/*.weihanli.xyz/*.weihanli.xyz.cer; ssl_certificate

使用IdentityServer4实现一个简单的Oauth2客户端模式授权

南笙酒味 提交于 2020-04-09 00:54:11
1、首先新建一个webAPI项目做为IdentityServer的服务端,提供生成Token的服务,首先修改Startup.cs文件,如下图: 2、增加一个Config.cs文件,以便于提供资源和认证设置,如下图: 3、在Startup.cs文件中配置做初始化: 4、好了,我们把网站启动,然后我们访问http://localhost:5000/.well-known/openid-configuration(http://localhost:5000是我的程序启动地址,可以在Program.cs文件中自己配置。.well-known/openid-configuration是程序的默认配置地址)然后返回如下内容,表明我们服务端已经没有什么问题了。 5、然后我们再单独创建一个Webapi项目来实现调用IdentityServer端获取token实现资源的正常访问.首先设置启动地址: 6、设置API控制器授权特性: 7、设置启动配置选项: 8.我们先在Postman中用一个错误的token去访问,结果提示未授权。 9、通过访问IdentityServer提供的endpoint(步骤4图中有标记)地址来获取token,如下图: 10.通过获取的token,去访问被限制的资源(即步骤6图中标识的位置),返回成功,即访问成功: 附上通过第三方程序来调用token

ASP.NET Core微服务框架Ocelot+Consul+IdentityServer4实战演练

时光总嘲笑我的痴心妄想 提交于 2020-04-07 13:30:43
一、背景介绍 API网关的流行源于最近几年移动应用与企业间接口对接的兴起,使得原来单一的PC客户端,变化到PC客户端、各种浏览器、手机移动端及智能终端等。同时系统之间大部分都不是单独运行,经常会涉及与其他系统对接、共享数据的需求。随着微服务架构概念的提出,API网关成为了微服务架构的一个标配组件。随着业务快速发展,面向手机移动应用业务越来越多,为了减少客户端与服务的耦合,节约后端微服务的开发成本,建立一个高性能、高可用、减少上线风险的API网关成为一个迫切的需求。 1)、目前面临现状:假设你正好是一个后端开发,而老板又刚好让你开发网站,其中需要涉及到很多后端的微服务,比如会员、商品、推荐服务等等。那么这里就会遇到一个问题,APP/Browser怎么去访问这些后端的服务?如果业务比较简单的话,可以给每个业务都分配一个独立的域名(https://service.api.company.com),但这种方式会有几个问题:每个业务都会需要鉴权、限流、权限校验等逻辑,如果每个业务都各自为战,自己造轮子实现一遍,会很麻烦,完全可以抽出来,放到一个统一的地方去做。 2)、有效的解决办法:更好的方式是采用API网关,实现一个API网关接管所有的入口流量,类似Nginx的作用,将所有用户的请求转发给后端的服务器,但网关做的不仅仅只是简单的转发,也会针对流量做一些扩展。比如鉴权、限流、权限、熔断