一.前言 回顾:基于.NetCore3.1系列 -- 认证授权方案之授权揭秘 (上篇) 在上一篇中,主要讲解了授权在配置方面的源码,从添加授权配置开始,我们引入了需要的授权配置选项,而不同的授权要求构建不同的策略方式,从而实现一种自己满意的授权需求配置要求. 在这一节中,继续上一篇的内容往下深入了解授权内部机制的奥秘以及是如何实现执行授权流程的. 二.说明 在上一篇中,我们通过定义授权策略,查看源码发现,在对授权配置AuthorizationOptions之后,授权系统通过DI的方式注册了几个核…
一.前言 在之前的使用Swagger做Api文档中,我们已经使用Swagger进行开发接口文档,以及更加方便的使用.这一转换,让更多的接口可以以通俗易懂的方式展现给开发人员.而在后续的内容中,为了对api资源的保护,我们引入了认证授权方案,利用HTTP提供了一套标准的身份验证框架,服务端可以用来针对客户端的请求发送质询(challenge),客户端根据质询提供应答身份验证凭证,进而实现对资源的保护. 因为之前在使用Swagger的系列中还没有加身份认证授权这一块,所以我们使用的接口都是没有进行资…
一.前言 在项目的开发维护阶段,有时候我们关注的问题不仅仅在于功能的实现,甚至需要关注系统发布上线后遇到的问题能否及时的查找并解决.所以我们需要有一个好的解决方案来及时的定位错误的根源并做出正确及时的修复,这样才能不影响系统正常的运行状态. 这个时候我们发现,其实在asp.net core中已经内置了日志系统,并提供了各种内置和第三方日志记录提供程序的日志记录接口,在进行应用开发中,可以进行统一配置,并且利用第三方日志框架相结合,更加有效的实现日志记录.所以在这个系列中,主要是对内置日志记录系统…
一.前言 对内置日志系统的整体实现进行了介绍之后,可以通过使用内置记录器来实现日志的输出路径.而在实际项目开发中,使用第三方日志框架(如: Log4Net.NLog.Loggr.Serilog.Sentry 等)来记录也是非常多的.首先一般基础的内置日志记录器在第三方日志框架中都有实现,然后第三方日志框架在功能上更加强大和丰富,能满足我们更多的项目分析和诊断的需求. 所以在这一篇中,我们将介绍第三方日志记录提供程序--Serilog 二.回顾 系统内置日志系列: 1. 基于.NetCore3.1…
一.前言 回顾:日志记录之日志核心要素揭秘 在上一篇中,我们通过学习了解在.net core 中内置的日志记录中的几大核心要素,在日志工厂记录器(ILoggerFactory)中实现将日志记录提供器(ILoggerProvider)对象都可以集成到Logger对象组合中,这样的话,我们就可以通过基于ILoggerProvider自定义日志记录程序集成到Logger中,再创建写日志定义Ilogger,自定义日志记录器实现日志的输出方式,这样实现自定义日志记录工具. 在这个过程中,日志记录器ILog…
一.前言 在上一篇中,我们已经了解了内置系统的默认配置和自定义配置的方式,在学习了配置的基础上,我们进一步的对日志在程序中是如何使用的深入了解学习.所以在这一篇中,主要是对日志记录的核心机制进行学习说明. 二.说明 在上一篇中,我们留下了两个问题 日志记录的输出可以在哪里查看?而又由什么实现决定的呢? 如何管理输出不同的日志呢?都有哪些方式呢? 第一个问题:在官方的实现有:Console .Debug .EventSource .EventLog .TraceSource .Azure App…
1.前言 回顾:认证方案之初步认识JWT 在现代Web应用程序中,即分为前端与后端两大部分.当前前后端的趋势日益剧增,前端设备(手机.平板.电脑.及其他设备)层出不穷.因此,为了方便满足前端设备与后端进行通讯,就必须有一种统一的机制.所以导致API架构的流行.而RESTful API这个API设计思想理论也就成为目前互联网应用程序比较欢迎的一套方式. 这种API架构思想的引入,因此,我们就需要考虑用一种标准的,通用的,无状态的,与语言无关的身份认证方式来实现API接口的认证. HTTP提供了一套…
旧的Spring Security OAuth2停止维护已经有一段时间了,99%的Spring Cloud微服务项目还在使用这些旧的体系,严重青黄不接.很多同学都在寻找新的解决方案,甚至还有念念不忘密码模式的.胖哥也在前面写了一篇解决思路的文章.好像还是不过瘾,今天看到这篇文章的同学有福了,问题将在这里得到解决. 方案 目前这应该是Spring生态中最新的解决方案,没有之一.先看下流程,微服务无关的其它的组件这里先屏蔽了,剩下图的几个组件: 详细流程为: ①用户向网关请求登录或者通过网关请求资源…
目录 一.需求背景 二.常用的API认证技术 2.1 App Secret Key + HMAC 2.2 OAuth 2.0 2.2.1 Authorization Code Flow 2.2.2 Client Credential Flow 三.业内产品调研 3.1 微信支付 3.2 微信公众号 3.3 微信网页授权 四.如何选择HTTP API鉴权方案 4.1 HTTP API鉴权方式的对比 4.2 HTTP API鉴权经验分享 4.3 结论 五.实践-方案实现 5.1 分配AppId和Ap…
摘要 本文介绍一种入门级的网站授权(注:这里所指的授权指的是注册码效果,而不是网站登陆时的身份授权)方案,仅供学习交流及对付小白客户使用.复杂的网站授权涉及网站加密等一系列复杂的技术,不做本文介绍内容.(如果有好的开源的项目,还请各位大大们不吝赐教) 功能说明 网站发布时,做一个授权处理是非常有必要的.可以有效防止客户直接把你发布的网站直接COPY到别的电脑上,经过简单的配置就直接可以运行.记得在学校做网站时,当时对HTTP请求没研究过,直接在任何一个页面加载时强制验证.这样做出来的功能可移植性…
注:本文隶属于<理解ASP.NET Core>系列文章,请查看置顶博客或点击此处查看全文目录 概述 通常,身份认证(Authentication)和授权(Authorization)都会放在一起来讲.但是,由于这俩英文相似,且"认证授权"四个字经常连着用,导致一些刚接触这块知识的读者产生混淆,分不清认证和授权的区别,甚至认为这俩是同一个.所以,我想先给大家简单区分一下身份认证和授权. 身份认证 确认执行操作的人是谁. 当用户请求后台服务时,系统首先需要知道用户是谁,是张三.…
注:本文隶属于<理解ASP.NET Core>系列文章,请查看置顶博客或点击此处查看全文目录 在开始之前,如果你还不了解基于Cookie的身份认证,那么建议你先阅读<基于Cookie的身份认证>后再阅读本文. 另外,为了方便大家理解并能够上手操作,我已经准备好了一个示例程序,请访问XXTk.Auth.Samples.JwtBearer.HttpApi获取源码.文章中的代码,基本上在示例程序中均有实现,强烈建议组合食用! Jwt概述 Jwt是什么 Jwt是一个开放行业标准(RFC75…
这部分主要涉及企业级应用的安全问题,一般来说安全框架主要提供3个典型的安全行为:认证.授权和审核.除了典型的安全问题,对于一个以消息作为通信手段的分布式应用,还需要考虑消息保护(Message Protection)问题,消息保护机制主要包括签名和加密,前者保证消息的一致性,后者保证消息的机密性. 在介绍传输安全之前,介绍几个在分布式应用中常见的传输安全隐患:消息的篡改,敏感信息的泄露,钓鱼攻击,重放攻击.因此对于WCF来说,其传输安全主要涉及认证.消息一致性和机密性三个主题,认证不仅包括服务器…
经过前面几章的姗姗学步,我们了解了在 ASP.NET Core 中是如何认证的,终于来到了授权阶段.在认证阶段我们通过用户令牌获取到用户的Claims,而授权便是对这些的Claims的验证,如:是否拥有Admin的角色,姓名是否叫XXX等等.本章就来介绍一下 ASP.NET Core 的授权系统的简单使用. 目录 简单授权 IAllowAnonymous IAuthorizeData 授权策略详解 AddAuthorization AuthorizationOptions Authorizati…
呼,开干第四篇,基于OWIN搭建OAuth认证授权服务器与接口身份校验. OAuth包含授权码模式.密码模式.客户端模式和简化模式,这里我们文章记录的是密码模式和客户端模式. 目录 引用安装 授权处理-发放Token 用户名密码授权 客户端授权 身份校验-校验失败自定义返回信息 TestClient增加token获取 一.引用安装 除了Owin使用时安装的引用外,还需要安装以下引用 Microsoft.Owin.Security.OAuth Microsoft.Owin.Security.Coo…
基于 JWT-Auth 实现 API 验证 如果想要了解其生成Token的算法原理,请自行查阅相关资料 需要提及的几点: 使用session存在的问题: session和cookie是为了解决http无状态的方案.session是用户保存在服务器中的状态信息,cookie中则保存jsessionId,请求服务器时,服务器读取jsessionId从而确定用户的身份信息,而session+cookie用在restful接口上破坏了其“无状态”的特性,session运行时都是保存在内存中,而随着认证用…
之前已经简单实现了OAUTH2的授权码模式(Authorization Code),但是基于JAVA的,今天花了点时间调试了OWIN的实现,基本就把基于OWIN的OAUHT2的四种模式实现完了.官方推荐的.NET 包有 .NET DotNetOpenAuth Thinktecture IdentityServer 现Katana已经不更新了,新的版本是已经是asp.net core 1.0的一部分,实现OAUTH2好的选择可以考虑使用新版或IdentityServer3对应asp.net cor…
开篇 系统架构的文章,准备在这段时间好好的梳理和整理一下,然后发布基于AgileEAS.NET平台之上的企业级应用架构实践,结合具体的案例来说明AgileEAS.NET平 台之上如何进行系统的逻辑架构设计与物理架构设计,包括一些数据架构和运行架构,开发架构也是我们也会讲述. 关于平台的功能介绍或者是开发案例和配置说明可以参考如下文章: [置顶]AgileEAS.NET平台开发Step By Step系列-药店系统-索引 上述药店的代码是一个完整的方案,当然还包括SAAS方式的应用部署方式.我们后…
//来源:http://www.cnblogs.com/jindahao/archive/2012/05/07/2487351.html 需求: 1. 认证要基于AD 2. 登入方式要页面的方式(form) 3. 添加自定义验证逻辑 方案: 根据需求可以很快明白,实际就是个“基于AD的FORM认证”.具体步骤如下: 1. 修改web.config 添加“<connectionStrings>” <connectionStrings> <add name="ADCon…
1 学习计划 1.演示权限demo 2.权限概述 n 认证 n 授权 3.常见的权限控制方式 n url拦截权限控制 n 方法注解权限控制 4.创建权限数据模型 n 权限表 n 角色表 n 用户表 n 角色权限关系表 n 用户角色关系表 5.apache shiro框架简介 n 官网和下载 n 框架核心功能 n 框架调用流程 6.基于shiro框架进行认证操作 2 演示权限demo 如何运行项目: 第一步:在eclipse中引入上面的项目 第二步:创建一个数据库privilegedemo,并执行…
1.基于服务器的身份认证 我们清楚 http 协议是无状态的,也就是说,如果我们已经认证了一个用户,那么他下一次请求的时候,服务器不知道我是谁,我们就必须要再次认证. 我们与浏览器交互时,比如说登陆成功后,你再去获取其他的数据,服务器能准确的给与响应,怎么做到的呢? 登陆成功后,服务器会为你开辟一块内存区间 (可以理解为 session),用于存放你这次会话的一些内容,比如姓名.性别.年龄等: 存放数据的同时,会生成 session id来标记这块内存区间是属于你的,并且,这个 session…
基于Token的身份认证 与 基于服务器的身份认证 基于服务器的身份认证 在讨论基于Token的身份认证是如何工作的以及它的好处之前,我们先来看一下以前我们是怎么做的: HTTP协议是无状态的,也就是说,如果我们已经认证了一个用户,那么他下一次请求的时候,服务器不知道我是谁,我们必须再次认证 传统的做法是将已经认证过的用户信息存储在服务器上,比如Session.用户下次请求的时候带着Session ID,然后服务器以此检查用户是否认证过. 这种基于服务器的身份认证方式存在一些问题: Sessio…
1. easyui DataGrid行编辑功能 2. 运单waybill快速录入 3. 权限demo演示-了解 4. Apache shiro安全框架概述 5. 权限模块数据模型 6. 基于shiro实现用户认证-登录(重点) 1 jQuery EasyUI datagrid行编辑功能使用方式 datagrid的行编辑功能是以列为单位,通过列属性指定哪列可以编辑,哪列不能编辑.   第一步:通过列属性 editor指定哪列可以编辑 .指定编辑类型(普通,数字,下拉,日期),必填项 第二步:调用数…
权限认证 权限认证也就是访问控制,即在应用中控制谁能访问哪些资源 权限认证核心要素 权限 : 即操作资源的权利,比如访问某个页面,以及对某个模块的数据的添加,修改,删除,查看的权利 角色 : 是权限的集合,一种角色可以包含多种权限 用户 : 在 Shiro 中,代表访问系统的用户,即Subject 授权方式 编程式授权 基于角色的访问控制 基于权限的访问控制 注解式授权 Jsp 标签授权 编程式授权实现 抽取公共代码生成 ShiroUtil package com.zhen.common; im…
前言 前段时间在编写通用的消息通知服务时,由于需要实现类似通知失败时,需要延后几分钟再次进行发送,进行多次尝试后,进入定时发送机制.此机制,在原先对接银联支付时,银联的异步通知也是类似的,在第一次通知失败后,支付标准服务会重发,最多发送五次,每次的间隔时间为1.4.8.16分钟等.本文就简单讲解下使用RabbitMQ实现延时消息队列功能. 前言 一点知识 延时队列使用场景 RabbitMQ实现延时队列 存活时间(Time-To-Live 简称 TTL) 死信交换(Dead Letter Exch…
2.2 Oauth2认证 2.2.1 Oauth2认证流程 第三方认证技术方案最主要是解决认证协议的通用标准 问题,因为要实现 跨系统认证,各系统之间要遵循一定的 接口协议. OAUTH协议为用户资源的授权提供了一个安全的.开放而又简易的标准.同时,任何第三方都可以使用OAUTH认 证服务,任何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的.业界提供了OAUTH的多种实 现如PHP.JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间,因而OAU…
支持跨域访问,无状态认证 token特点 支持跨域访问: Cookie是不允许垮域访问的,这一点对Token机制是不存在的,前提是传输的用户认证信息通过HTTP头传输 无状态(也称:服务端可扩展行): Token机制在服务端不需要存储session信息,因为Token 自身包含了所有登录用户的信息, 只需要在客户端的cookie或本地介质存储状态信息 更适用CDN: 可以通过内容分发网络请求你服务端的所有资料(如:javascript,HTML,图片等),而你的服务端只要提供API即可 去耦:…
使用请求头认证来测试需要授权的 API 接口 Intro 有一些需要认证授权的接口在写测试用例的时候一般会先获取一个 token,然后再去调用接口,其实这样做的话很不灵活,一方面是存在着一定的安全性问题,获取 token 可能会有一些用户名密码之类的测试数据,还有就是获取 token 的话如果全局使用同一个 token 会很不灵活,如果我要测试没有用户信息的话还比较简单,我可以不传递 token,如果token里有两个角色,我要测试另外一个角色的时候,只能给这个测试用户新增一个角色然后再获取to…
微软在推出mvc框架不久,短短几年里,版本更新之快,真是大快人心,微软在这种优秀的框架上做了大量的精力投入,是值得赞同的,毕竟程序员驾驭在这种框架上,能够强力的精化代码,代码层次也更加优雅,扩展较为方便,使之程序员把更多的精力投入到业务中来. 很多时候我就在想,是不是该把传统的用户权限管理换个方式了呢?换成MVC AOP的思想权限控制,诸如controller action这种方案行的通吗?答案是肯定的,人的思想永远是第一位! 看看我们想要达到的效果 1)权限列表 2)菜单权限列表 3)角色权限…
上一篇介绍了基于ZK的ActiveMQ HA方案,虽然理解起来比较容易,但是有二个不足: 1)  占用的节点数过多,1个zk集群至少3个节点,1个activemq集群也至少得3个节点,但其实正常运行时,只有一个master节点在对外响应,换句话说,花6个节点的成本只为了保证1个activemq master节点的高可用,太浪费资源了. 2)  性能下降太明显,比起单节点的activemq,性能下降了近1个数量级. 这一篇将介绍基于networks of brokers的HA方案,不需要借助zk等…