用户接口

identityserver4源码解析_3_认证接口

别等时光非礼了梦想. 提交于 2020-03-28 03:51:47
目录 identityserver4源码解析_1_项目结构 identityserver4源码解析_2_元数据接口 identityserver4源码解析_3_认证接口 identityserver4源码解析_4_令牌发放接口 identityserver4源码解析_5_查询用户信息接口 identityserver4源码解析_6_结束会话接口 identityserver4源码解析_7_查询令牌信息接口 identityserver4源码解析_8_撤销令牌接口 协议 五种认证方式 Authorization Code 授权码模式 :认证服务返回授权码,后端用clientid和密钥向认证服务证明身份,使用授权码换取id token 和/或 access token。本模式的好处是由后端请求token,不会将敏感信息暴露在浏览器。本模式允许使用refreshToken去维持长时间的登录状态。使用此模式的客户端必须有后端参与,能够保障客户端密钥的安全性。此模式从authorization接口获取授权码,从token接口获取令牌。 Implict 简化模式 :校验跳转URI验证客户端身份之后,直接发放token。通常用于纯客户端应用,如单页应用javascript客户端。因为没有后端参与,密钥存放在前端是不安全的。由于安全校验较宽松

Spring的两种动态代理:Jdk和Cglib 的区别和实现

让人想犯罪 __ 提交于 2020-03-25 20:43:46
https://www.cnblogs.com/leifei/p/8263448.html 一、原理区别: java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。 而cglib动态代理是利用asm开源包,对代理对象类的class文件加载进来,通过修改其字节码生成子类来处理。 1、如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP 2、如果目标对象实现了接口,可以强制使用CGLIB实现AOP 3、如果目标对象没有实现了接口,必须采用CGLIB库,spring会自动在JDK动态代理和CGLIB之间转换 如何强制使用CGLIB实现AOP? (1)添加CGLIB库,SPRING_HOME/cglib/*.jar (2)在spring配置文件中加入<aop:aspectj-autoproxy proxy-target-class="true"/> JDK动态代理和CGLIB字节码生成的区别? (1)JDK动态代理只能对实现了接口的类生成代理,而不能针对类 (2)CGLIB是针对类实现代理,主要是对指定的类生成一个子类,覆盖其中的方法 因为是继承,所以该类或方法最好不要声明成final 二、代码实现 用户管理接口 package com.lf.shejimoshi.proxy.entity; //用户管理接口

Metasploit设置LHOST参数技巧

房东的猫 提交于 2020-03-24 18:52:58
3 月,跳不动了?>>> Metasploit设置LHOST参数技巧 当用户使用Metasploit框架中的模块时,经常需要配置LHOST参数。其中,LHOST参数用来指定本地主机IP地址。由于IP地址不容易记忆,而且输入也不方便。此时,用户可以使用接口名来代替,如set LHOST eth0。当用户指定接口名后,将自动使用eth0接口的IP地址。 来源: oschina 链接: https://my.oschina.net/u/1585857/blog/3210323

spring security(一)

折月煮酒 提交于 2020-03-23 23:08:49
3 月,跳不动了?>>> Spring、Spring Boot 和 Spring Security 三者的关系如下图所示 : 一、spring security 的整体架构 二、核心组件 SecurityContextHolder,SecurityContext 和 Authentication 如图所示,用户在走完认证授权流程后,最终信息都将保存在SecurityContexHolder中, 存储当前应用程序安全上下文的详细信息,其中包括当前使用应用程序的主体的详细信息。如当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限等。 默认情况下, SecurityContextHolder 使用 ThreadLocal 来存储这些详细信息,这意味着 Security Context 始终可用于同一执行线程中的方法,即使 Security Context 未作为这些方法的参数显式传递。 获取当前用户的信息 Object principal = SecurityContextHolder.getContext() .getAuthentication().getPrincipal(); if (principal instanceof UserDetails) { String username = ((UserDetails)principal).getUsername();

不是我吹,RabbitMQ 是真牛逼!

南楼画角 提交于 2020-03-21 19:24:20
3 月,跳不动了?>>> 今天来介绍下 RabbitMQ 在业务中在多强,文末再免费送 10 本重量级的书,不要错过!!! RabbitMQ作为一款能实现高性能存储分发消息的分布式中间件,具有异步通信、服务解耦、接口限流、消息分发和业务延迟处理等功能,在实际生产环境中具有很广泛的应用,其特性可以概括为如图1所示。 图1 RabbitMQ的作用 正是由于RabbitMQ拥有如此多的特性,才使得其在实际应用系统中具有一席之地,本节主要介绍一下RabbitMQ的典型应用场景。 1.异步通信和服务解耦 以“用户注册”为实际场景,传统的企业级应用处理用户注册的流程,首先是用户在界面上输入用户名、邮箱或手机号等信息,确认无误后,单击“注册”按钮提交相关信息。 前端会将这个信息提交到后端相关接口进行处理,后端在接收到这些信息后,会先对这些信息进行最基本的校验,校验成功后会将信息写入数据库相关数据表中,而为了用户注册的安全性,后端会调用邮件服务器提供的接口发送一封邮件验证用户的合法性,或者调用短信服务的发送短信验证码接口给用户进行验证,最后才将响应信息返回给前端用户,并提示“注册成功”,整个流程如图2所示。 图2 传统的企业级应用系统用户注册流程 从图2的流程可以看出,用户从单击“注册”按钮,提交相关信息之后便需要经历“漫长”的等待时间,整体的等待时间约等于“写入数据库”+“邮箱验证”+“短信确认

php 接口的安全实现?

ε祈祈猫儿з 提交于 2020-03-21 02:56:47
https://www.cnblogs.com/afsj/p/7424320.html PHP做APP接口时,如何保证接口的安全性? 1、当用户登录APP时,使用https协议调用后台相关接口,服务器端根据用户名和密码时生成一个access_key,并将access_key保存在session中,将生成的access_key和session_id返回给APP端。 2、APP端将接收到的access_key和session_id保存起来 3、当APP端调用接口传输数据时,将所传数据和access_key使用加密算法生成签名signature,并将signature和session_id一起发送给服务器端。 4、服务器端接收到数据时,使用session_id从session中获取对应的access_key,将access_key和接收到的数据使用同一加密算法生成对应signature,如果生成的签名和接收到的signature相同时,则表明数据合法 https://www.cnblogs.com/zouke1220/p/9394356.html php接口安全设计浅谈 Token授权机制 时间戳超时机制: 签名机制: 拒绝重复调用:客户端第一次访问时,将签名sign存放到缓存服务器中,超时时间设定为跟时间戳的超时时间一致,二者时间一致可以保证无论在timestamp限定时间内还是外

JMeter接口压力测试课程入门到高级实战教程(详情)

寵の児 提交于 2020-03-18 14:18:54
章节一压力测试课程介绍 1、2018年亿级流量压测系列之Jmeter4.0课程介绍和效果演示 简介: 讲解课程安排,使用的Jmeter版本 讲课风格:涉及的组件,操作配置多,不会一次性讲解,会先讲部分,然后在后续操作中慢慢补充,更容易消化和理解 2、常用压力测试工具对比 简介:目前用的常用测试工具对比 1、loadrunner 性能稳定,压测结果及细粒度大,可以自定义脚本进行压测,但是太过于重大,功能比较繁多 2、apache ab(单接口压测最方便) 模拟多线程并发请求,ab命令对发出负载的计算机要求很低,既不会占用很多CPU,也不会占用太多的内存,但却会给目标服务器造成巨大的负载, 简单DDOS×××等 3、webbench webbench首先fork出多个子进程,每个子进程都循环做web访问测试。子进程把访问的结果通过pipe告诉父进程,父进程做最终的统计结果。 章节二 JMeter4.x基础知识讲解和压测实操 3、Jmeter基本介绍和使用场景 简介 1、压测不同的协议和应用 1) Web - HTTP, HTTPS (Java, NodeJS, PHP, ASP.NET, …) 2) SOAP / REST Webservices 3) FTP 4) Database via JDBC 5) LDAP 轻量目录访问协议 6) Message-oriented

【微信】第三方登录接口流程

↘锁芯ラ 提交于 2020-03-17 03:04:57
微信登录介绍: 微信OAuth2.0授权登录让微信用户使用微信身份安全登录第三方应用或网站,在微信用户授权登录已接入微信OAuth2.0的第三方应用后,第三方可以获取到用户的接口调用凭证(access_token),通过access_token可以进行微信开放平台授权关系接口调用,从而可实现获取微信用户基本开放信息和帮助用户实现基础开放功能等。 准备工作: 在进行微信OAuth2.在进行微信OAuth2.0授权登录接入之前,在微信开放平台注册开发者帐号,并拥有一个已审核通过的网站应用,并获得相应的AppID和AppSecret,申请微信登录且通过审核后,可开始接入流程。 创建网站应用 在创建网站应用快要完成的时候会设置一个返回域,此域要跟代码的返回地址一致(授权回调域最好写一级域名)。 提交审核,等待获取到APPID和AppSecret 接入流程示意图: 代码操作示例: 流程示意图: 第一步:请求CODE 第三方使用网站应用授权登录前请注意已获取相应网页授权作用域(scope=snsapi_login),则可以通过在PC端打开以下链接: https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state

记一次业余项目的敏捷开发实践

末鹿安然 提交于 2020-03-15 20:48:20
本次是在原有ApiTemplate项目之上,增加一个用户登录权限控制模块,用于验证ApiTemplate项目在面对一些简单问题时,如何抽象并支持未来的扩展。用户登录权限控制模块看上去很简单,但由于业余时间总是有限的。所以借助此机会实践一次用户敏捷开发。首先拆分模块,本次只实现用户登录和登出。 apitemplate项目地址: https://github.com/cqhaibin/ApiTemplate 一、总结放前面 最小化任务范围 本次任务只限定在了《用户名+密码登录》这个任务上,并且不包含数据的持久化, 这样在做的时候反复考查自己,不让自己超出范围。所以 查询用户注册信息、在线用户存储相关接口只做定义和模拟实现,不做具体的存储实现 考虑到业务逻辑是稳定的,而存储是可变的,所以数据库实体对象与业务实体对象分离 给任务一个期限 像本次就只列出了任务的期限,而没有列出每个子阶段的期限,如:一个需求必须要经过需求分析、模块设计、代码实现等阶段。这些子阶段也需要给出具体的期限。 从外向里逐层推进 定义UI/服务层接口 因为UI接口有多种提供方式(如:rest api, rpc等),所以基本以服务层接口为标准,UI接口层只是做了一次简单转换和调用。其中UI/服务层接口输入/输出参数的Moddel也随之定义(两层共享Model) 实现服务层接口 此步实现服务层接口

支付渠道那些事

白昼怎懂夜的黑 提交于 2020-03-11 17:15:44
年初开始对公司的支付系统进行微服务架构改造。 之前有一系列文章介绍了改造的背景。 为什么要重构到微服务 重构中的天时地利任何 重构的准备工作 从这一篇开始,进入重构工作的正题了。 在支付系统中,支付网关和支付渠道的对接是最核心的功能。其中支付网关是对外提供服务的接口,所有需要渠道支持的资金操作都需要通过网关分发到对应的渠道模块上。一旦定型,后续就很少,也很难调整。而支付渠道模块是接收网关的请求,调用渠道接口执行真正的资金操作。每个渠道的接口,传输方式都不尽相同,所以在这里,支付渠道模块的作用,类似设计模式中的wrapper,封装各个渠道的差异,对网关呈现统一的接口。而网关的功能是为业务提供通用接口,一些和渠道交互的公共操作,也会放置到网关中。 初始架构 早期启动的时候,对接的渠道不多,所有渠道和网关都实现在一个项目中,部署在一起。采用SSH架构,支付网关实现为一个大Apache Struts Action类,在我们重构前,这个类有2000多行代码。实现时提炼了一个支付渠道对接的抽象类,用来封装渠道的差异。最终在这个系统中对接了有30多个渠道,类规模达到2000个。随着业务发展,问题越来越多。高峰期同时有5个渠道在并行开发,还有大量的其他渠道对接问题需要修复。多个人同时修改一个项目代码导致版本控制的工作骤增。上线频发引起服务中断也让业务方很不满。诸多问题,在前面的文章中都有描述。