identityserver4

IdentityServer4(8)- 使用密码认证方式控制API访问(资源所有者密码授权模式)

女生的网名这么多〃 提交于 2020-08-16 06:59:07
一.前言 本文已经更新到 .NET Core 2.2 OAuth 2.0 资源所有者密码模式允许客户端向令牌服务发送用户名和密码,并获取 代表该用户 的访问令牌。 除了通过无法浏览器进行交互的应用程序之外,通常建议不要使用资源所有者密码模式。 一般来说,当您要对用户进行身份验证并请求访问令牌时,使用其中一个交互式 OpenID Connect 流程通常要好得多。 在这里使用这种模式是为了学习如何快速在 IdentityServer 中使用它, 二.添加用户 就像API资源(也称为 Scope)、客户端一样,用户也有一个基于内存存储(In-Memory)的实现。 有关如何正确存储(持久化存储)和管理用户帐户的详细信息,请查看基于 ASP.NET Identity的快速入门。 TestUser 类代表测试用户及其身份信息单元(Claim)。 让我们通过在 config 类中添加以下代码来创建几个用户: 首先添加以下语句 到 Config.cs 文件中: using IdentityServer4.Test; public static List<TestUser> GetUsers() { return new List<TestUser> { new TestUser { SubjectId = "1", Username = "alice", Password =

IdentityServer4源码解析_5_查询用户信息接口

最后都变了- 提交于 2020-08-15 07:27:34
目录 IdentityServer4源码解析_1_项目结构 IdentityServer4源码解析_2_元数据接口 IdentityServer4源码解析_3_认证接口 IdentityServer4源码解析_4_令牌发放接口 IdentityServer4源码解析_5_查询用户信息接口 [IdentityServer4源码解析_6_结束会话接口] [IdentityServer4源码解析_7_查询令牌信息接口] [IdentityServer4源码解析_8_撤销令牌接口] 协议简析 UserInfo接口是OAuth2.0中规定的需要认证访问的接口,可以返回认证用户的声明信息。请求UserInfo接口需要使用通行令牌。响应报文通常是json数据格式,包含了一组claim键值对集合。与UserInfo接口通讯必须使用https。 根据RFC2616协议,UserInfo必须支持GET和POST方法。 UserInfo接口必须接受Bearer令牌。 UserInfo接口应该支持javascript客户端跨域访问,可以使用CORS协议或者其他方案。 UserInfo请求 推荐使用GET方法,使用Authorization头承载Bearer令牌来请求UserInfo接口。 GET /userinfo HTTP/1.1 Host: server.example.com

【.NET Core项目实战-统一认证平台】第九章 授权篇-使用Dapper持久化IdentityServer4

被刻印的时光 ゝ 提交于 2020-08-14 16:31:06
【.NET Core项目实战-统一认证平台】开篇及目录索引 上篇文章介绍了 IdentityServer4 的源码分析的内容,让我们知道了 IdentityServer4 的一些运行原理,这篇将介绍如何使用dapper来持久化 Identityserver4 ,让我们对 IdentityServer4 理解更透彻,并优化下数据请求,减少不必要的开销。 .netcore项目实战交流群(637326624),有兴趣的朋友可以在群里交流讨论。 一、数据如何实现持久化 在进行数据持久化之前,我们要了解 Ids4 是如何实现持久化的呢? Ids4 默认是使用内存实现的 IClientStore、IResourceStore、IPersistedGrantStore 三个接口,对应的分别是 InMemoryClientStore、InMemoryResourcesStore、InMemoryPersistedGrantStore 三个方法,这显然达不到我们持久化的需求,因为都是从内存里提取配置信息,所以我们要做到 Ids4 配置信息持久化,就需要实现这三个接口,作为优秀的身份认证框架,肯定已经帮我们想到了这点啦,有个EFCore的持久化实现,GitHub地址 https://github.com/IdentityServer/IdentityServer4.EntityFramework

Asp.net core 3.1单点登录

百般思念 提交于 2020-08-12 17:47:08
单点登录实现原理(SSO) 简介 单点登录是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统的保护资源,若用户在某个应用系统中进行注销登录,所有的应用系统都不能再直接访问保护资源,像一些知名的大型网站,如:淘宝与天猫、新浪微博与新浪博客等都用到了这个技术。 原理 单点登录 有一个独立的认证中心,只有认证中心才能接受用户的用户名和密码等信息进行认证,其他系统不提供登录入口,只接受认证中心的间接授权。间接授权通过令牌实现,当用户提供的用户名和密码通过认证中心认证后,认证中心会创建授权令牌,在接下来的跳转过程中,授权令牌作为参数发送给各个子系统,子系统拿到令牌即得到了授权,然后创建局部会话。 示例: 下面对上图进行解释: 当用户还没进行用户登录的时候 用户去访问系统1的保护资源 ,系统1检测到用户还没登录,跳转至SSO认证中心,SSO认证中心也发现用户没有登录,就跳转到用户至认证中心的登录页面 用户在登录页面提交用户相应信息后,认证中心会校验用户信息,如果用户信息正确的话认证中心就会创建与该用户的全局会话(全局会话过期的时候,用户就需要重新登录了。全局会话中存的信息可能有令牌,用户信息,及该在各个系统的一些情况),同时创建授权令牌,然后进行下一步,否则认证中心给出提示(用户信息有误),待用户再次点击登录的时候,再一次进行校验用户信息

我和ABP vNext 的故事

放肆的年华 提交于 2020-08-12 08:38:49
Abp VNext是Abp的.NET Core 版本,但它不仅仅只是代码重写了。Abp团队在过去多年社区和商业版本的反馈上做了很多的改进。包括性能、底层的框架设计,它融合了更多优雅的设计实践。不管你是自己需要快速上手项目、或者是公司的研发团队没有足够的能力去完整地开发一套稳定且功能全面的快速开发框架;对于.NET 系的开发者和公司来说,Abp目前就是你目前最好的选择。2020年7月15日和腾飞Jesse、计节做了一次《我和ABP vNext的故事》直播,期间我分享时间超时,占用了25分钟,也就是这次直播分享时间超过我们预定的一小时。直播回看地址: https://wxc2160346e3bc5861.h5.xiaoe-tech.com/v1/course/video/v_5f0f9c39e4b04349896c2370?type=2 。 2018年我从腾讯离职开始创业至今,马上就满2年时间了,在这两年时间里我一直在伴随ABP vNext这个项目成长,我的分享主题就是下面这三点,这三点也是大家非常关心的为什么我要选择ABP vNext。 ABP vNext 的前身是aspnetboilerplate, 2017年开始基于.NET Core 进行重构,新的框架名称定义为ABP,目前已经发布3.0.4 版本。在国内ABP ,很多人可能对这个ABP vNext不太了解

ASP.NET CORE3.0 API Swagger+IdentityServer4授权验证

冷暖自知 提交于 2020-08-12 02:25:34
一、配置IdentityServer4服务端 这里介绍两种方法 ①直接创建identityserver4的模板,在模板的基础上修改 ②创建新项目,自己搭建 第一种 参考 我的 identityServer4学习 ,创建一个identityServer4模板后 修改config文件 public static IEnumerable<IdentityResource> GetIdentityResources() { return new IdentityResource[] { new IdentityResources.OpenId(), new IdentityResources.Profile(), }; } /// <summary> /// API信息 /// </summary> /// <returns></returns> public static IEnumerable<ApiResource> GetApis() { return new [] { new ApiResource( " ProjectApiScope " , " Demo API with Swagger " ) }; } /// <summary> /// 客服端信息 /// </summary> /// <returns></returns> public static

.NET WEB API关键过程 思维导图

蓝咒 提交于 2020-08-11 23:03:29
背景说明 近期在去面试的过程中,被问及有关WEB API的一些特性,一时竟不知该如何回答,故根据自己已知的知识,加上网上搜索的,详细列举了一下,期望对WEB API有一个比较开阔和全面的认知。 关键要素 在客户端发送一个请求,到服务端接收并处理请求,然后将数据返回,这样一个看似简单的过程中,究竟有哪些要素是我需要去留心的呢? 我在整理的过程当中,发现了这样一些基本要素,是需要去特别留心: 1. 接口规范 2. 鉴权方式 3. 关键对象 4. 生命周期 5. 接口工具 接口规范 接口规范定义了在API访问的过程中,数据交互约定以什么样的方式进行。下面是我所了解的几种接口规范: 1.1.RESTful 1.1.1.字义解释 ▣ REST(representational state transfer),直译过来是“表述性状态传输”,至于ful,百度翻译是“满满的”、“充满...的”。这里所说的“state”,就是HTTP请求当中的 GET、PUT、POST 、DELETE,表述了对资源的处理意向。 1.1.2.规范详情 ▣ 参考 RESTful 架构详解 1.2.OpenAPI 1.2.1.字义解释 ▣ OpenAPI从字义上解释,是开放API,也就是说是开放给别人看的,所以接口参数具有可阅读性,能够生成可阅读的文档。它也具体到了业务层面的参数定义规范。 1.2.2.广义解释 ▣

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

↘锁芯ラ 提交于 2020-08-11 09:44:18
前言 建立Web Api项目 在同一个解决方案下建立一个Web Api项目 IdentityServer4.WebApi ,然后修改Web Api的launchSettings.json。参考第一节,当然可以不修改的,端口号为 5001 。 { "profiles": { "IdentityServer4.WebApi": { "commandName": "Project", "launchBrowser": true, "launchUrl": "weatherforecast", "applicationUrl": "http://localhost:5001", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } } } } 添加Swagger帮助页面 官方文档: https://docs.microsoft.com/en-us/aspnet/core/tutorials/web-api-help-pages-using-swagger?tabs=visual-studio&view=aspnetcore-3.1 在 Startup.ConfigureServices 方法中将Swagger生成器添加到服务集合: public void ConfigureServices

ASP.Net Core Web Api 使用 IdentityServer4 最新版 踩坑记录

故事扮演 提交于 2020-08-11 07:53:02
辅助工具 日志追踪包 : Serilog.AspNetCore 源码查看工具 : ILSpy 项目环境 ###: ASP.NetCore 3.1 IdentityServer4 4.0.0+ 主题内容 测试登录方式 : password 错误内容: connect/token 登陆出错 但百度/google网上的示例没有找到正确的调用方式,无奈只能自己动手,丰衣足食... 首先,先按照之前版本进行传参 POST请求 url: connect/token 参数传递通过 form-data 调用结果: <调用结果> HTTP : 400 { "error": "invalid_request" } 查找调用日志 Invoking IdentityServer endpoint: IdentityServer4.Endpoints.TokenEndpoint for /connect/token 可以看到地址匹配是成功的,那就是校验不通过了,接着看一下这个类的源码,找到错误触发地 public async Task<IEndpointResult> ProcessAsync(HttpContext context) { if (!HttpMethods.IsPost(context.Request.Method) || !context.Request

.NET WEB API关键过程 思维导图

南楼画角 提交于 2020-08-11 04:19:25
背景说明 近期在去面试的过程中,被问及有关WEB API的一些特性,一时竟不知该如何回答,故根据自己已知的知识,加上网上搜索的,详细列举了一下,期望对WEB API有一个比较开阔和全面的认知。 关键要素 在客户端发送一个请求,到服务端接收并处理请求,然后将数据返回,这样一个看似简单的过程中,究竟有哪些要素是我需要去留心的呢? 我在整理的过程当中,发现了这样一些基本要素,是需要去特别留心: 1. 接口规范 2. 鉴权方式 3. 关键对象 4. 生命周期 5. 接口工具 接口规范 接口规范定义了在API访问的过程中,数据交互约定以什么样的方式进行。下面是我所了解的几种接口规范: 1.1.RESTful 1.1.1.字义解释 ▣ REST(representational state transfer),直译过来是“表述性状态传输”,至于ful,百度翻译是“满满的”、“充满...的”。这里所说的“state”,就是HTTP请求当中的 GET、PUT、POST 、DELETE,表述了对资源的处理意向。 1.1.2.规范详情 ▣ 参考 RESTful 架构详解 1.2.OpenAPI 1.2.1.字义解释 ▣ OpenAPI从字义上解释,是开放API,也就是说是开放给别人看的,所以接口参数具有可阅读性,能够生成可阅读的文档。它也具体到了业务层面的参数定义规范。 1.2.2.广义解释 ▣