oauth

[OAuth] OAuth2.0中的客户端模式

扶醉桌前 提交于 2020-03-06 11:50:35
大家知道OAuth协议是针对提供给第三方进行认证登陆的 , 感觉比较的复杂 , 但是在四种模式中最简单的一种叫做客户端模式 , 或者叫凭证模式 , 非常的容易理解 当对于我们针对一个非常信任的第三方去登陆时 , 可以采用这种模式 . 1. 首先要提供给第三方一个client_id 和 client_secret , 相当于公用的用户名密码 , 第三方拿着这俩东西去换取令牌 , 拿着令牌去取数据就可以了 . 基本只需要提供两个接口 , 一个是获取令牌 , 一个是获取数据 GET /token? grant_type=client_credentials & client_id = {客户端身份ID} & 相当于用户名 client_secret = {客户端秘钥} & 相当于密码 我们后端拿着这个用户名密码进行比对 , 比对成功 ,返回access_token 2. 第三方拿着access_token 获取数据 GET /user? access_token = {令牌} & uid = {用户ID} 后端验证access_token 存在 , 并且没有过期 , 就验证通过 , 返回数据 来源: https://www.cnblogs.com/taoshihan/p/12425578.html

【Spring Security + OAuth2 + JWT入门到实战】11. 短信验证码登录

感情迁移 提交于 2020-03-05 11:55:34
简介 使用短信验证码登录,s ecurity默认是不支持手机短信验证码登录流程,所以我们模仿密码登录做一个新的认证流程。 登录流程 SmsCodeAuthenticationFilter 短信登录请求 SmsCodeAuthenticationProvider 提供短信登录处理的实现类 SmsCodeAuthenticationToken 存放认证信息(包括未认证前的参数信息传递) 最后开发一个过滤器放在 短信登录请求之前,进行短信验证码的验证 因为这个过滤器只关心提交的验证码是否正常就行了。所以可以应用到任意业务中,对任意业务提交进行短信的验证 UsernamePasswordAuthenticationToken s ecurity默认密码登录,在这个基础上把密码相关的代码清理掉 // // Source code recreated from a .class file by IntelliJ IDEA // (powered by Fernflower decompiler) // package org.springframework.security.authentication; import java.util.Collection; import org.springframework.security.core.GrantedAuthority; public

Problem authenticating to Evernote With .Net SDK

陌路散爱 提交于 2020-03-04 16:00:46
问题 I'm trying to access Evernote from a custom app in .NET (4.6.1) on Windows (both Evernote client and SDK installed), but nada. I got an API key, with full access, I'm registered in Sandbox, and still, authentication fails. I tried the official method: ENSession.SetSharedSessionConsumerKey(consumerKey, consumerSecret); if (!ENSession.SharedSession.IsAuthenticated) ENSession.SharedSession.AuthenticateToEvernote(); Authentication doesn't happen and IsAuthenticated remains to false. Using

Problem authenticating to Evernote With .Net SDK

吃可爱长大的小学妹 提交于 2020-03-04 15:58:05
问题 I'm trying to access Evernote from a custom app in .NET (4.6.1) on Windows (both Evernote client and SDK installed), but nada. I got an API key, with full access, I'm registered in Sandbox, and still, authentication fails. I tried the official method: ENSession.SetSharedSessionConsumerKey(consumerKey, consumerSecret); if (!ENSession.SharedSession.IsAuthenticated) ENSession.SharedSession.AuthenticateToEvernote(); Authentication doesn't happen and IsAuthenticated remains to false. Using

【Spring Security + OAuth2 + JWT入门到实战】10. 改造优化获取图形验证码和短信验证码

|▌冷眼眸甩不掉的悲伤 提交于 2020-03-04 13:06:23
简介 在获取图形验证码和短信验证码有很多重复的代码本次会优化这些代码。 项目文件结构 验证码处理器代码结构 虚线是调用 ValidateCodeController # 服务入口 ValidateCodeProcessor # 验证码处理接口 AbstractValidateCodeProcessor # 验证码处理 公共功能,使用模版方法模式聚合公共逻辑 ImageCodeProcessor # 图片验证码处理:响应 SmsCodeProcessor # 短信验证码处理:发送 ValidateCodeGenerator # 生成接口 ImageCodeGenerate # 图形验证码生成 SmsCodeGenerator # 短信验证码生成 ValidateCodeProcessor com.spring.security.validate.code路径创建ValidateCodeProcessor类,生成验证码入口 package com.spring.security.validate.code; import org.springframework.web.context.request.ServletWebRequest; /** * 校验码处理器,封装不同校验码的处理逻辑 * */ public interface ValidateCodeProcessor { /**

OAuth 2.0

家住魔仙堡 提交于 2020-03-03 20:52:03
转自大佬的一篇博客,写的很好:http://www.ruanyifeng.com/blog/2019/04/oauth_design.html OAuth 2.0 是目前最流行的授权机制,用来授权第三方应用,获取用户数据。 这个标准比较抽象,使用了很多术语,初学者不容易理解。其实说起来并不复杂,下面我就通过一个简单的类比,帮助大家轻松理解,OAuth 2.0 到底是什么。 一、快递员问题 (1)我住在一个大型的居民小区。 (2)小区有门禁系统。 (3)进入的时候需要输入密码。 (4)我经常网购和外卖,每天都有快递员来送货。我必须找到一个办法,让快递员通过门禁系统,进入小区。 (5)如果我把自己的密码,告诉快递员,他就拥有了与我同样的权限,这样好像不太合适。万一我想取消他进入小区的权力,也很麻烦,我自己的密码也得跟着改了,还得通知其他的快递员。 有没有一种办法,让快递员能够自由进入小区,又不必知道小区居民的密码,而且他的唯一权限就是送货,其他需要密码的场合,他都没有权限? 二、授权机制的设计 于是,我设计了一套授权机制。 (1)门禁系统的密码输入器下面,增加一个按钮,叫做"获取授权"。快递员需要首先按这个按钮,去申请授权。 (2)他按下按钮以后,屋主(也就是我)的手机就会跳出对话框:有人正在要求授权。系统还会显示该快递员的姓名、工号和所属的快递公司。 (3)我确认请求属实,就点击按钮

【Spring Security + OAuth2 + JWT入门到实战】9. 短信验证码之发送验证码

眉间皱痕 提交于 2020-03-03 18:17:56
简介 Security默认是不支持手机短信验证码登录因此整个认证流程需要我们自己开发,这里我们分多篇文章讲解这篇文章只完成发送手机验证码 短信验证码实体类 spring-security-core项目com.spring.security.validate.code路径SmsCode类 import lombok.Data; import java.awt.image.BufferedImage; import java.time.LocalDateTime; /** * 手机验证码 * */ @Data public class SmsCode { private String code; private LocalDateTime expireTime; public SmsCode(String code, int expireIn) { this.code = code; this.expireTime = LocalDateTime.now().plusSeconds(expireIn); } public boolean isExpire() { return LocalDateTime.now().isAfter(expireTime); } } 发现图形验证码的实体类字段是包含手机验证码的实体类字段,改造图形验证码的实体类继承手机验证码的实体类 修改

提取在线数据的9个最佳网页抓取工具

喜你入骨 提交于 2020-03-03 15:04:56
Web Scraping工具专门用于从网站中提取信息。它们也被称为网络收集工具或Web数据提取工具。 文章目录 [ 隐藏 ] 1 Web Scraping工具可以在各种场景中用于无限目的。 2 1. Import.io 3 2. Webhose.io 4 3. Dexi.io(以前称为CloudScrape) 5 4. Scrapinghub 6 5. ParseHub 7 6. VisualScraper 8 7. Spinn3r 9 8. 80legs 10 9. Scraper 10.1 看看其它文章: Web Scraping工具可以在各种场景中用于无限目的。 比如: 1.收集市场研究数据 网络抓取工具可以从多个数据分析提供商和市场研究公司获取信息,并将它们整合到一个位置,以便于参考和分析。可以帮助你及时了解公司或行业未来六个月的发展方向。 2.提取联系信息 这些工具还可用于从各种网站中提取电子邮件和电话号码等数据。 3.收集数据来下载用于离线阅读或存储 4.跟踪多个市场的价格等 这些软件手动或自动查找新数据,获取新数据或更新数据并存储以便于访问。例如,可以使用抓取工具从亚马逊收集有关产品及其价格的信息。在 这篇文章中,我们列出了9个网络抓取工具。 1. Import.io Import.io提供了一个构建器

【Spring Security + OAuth2 + JWT入门到实战】7. 图形验证码

会有一股神秘感。 提交于 2020-03-02 18:59:59
简介 在登录界面图形添加验证码,流程1.开发生成图像验证码接口 2.在认证流程中加入图像验证码校验 图形验证码实体类 import lombok.Data; import java.awt.image.BufferedImage; import java.time.LocalDateTime; /** * 图片的代码 * * @author hekang * @date 2020/01/10 */ @Data public class ImageCode { private BufferedImage image; private String code; private LocalDateTime expireTime; public ImageCode(BufferedImage image, String code, int expireIn) { this.image = image; this.code = code; this.expireTime = LocalDateTime.now().plusSeconds(expireIn); } public boolean isExpire() { return LocalDateTime.now().isAfter(expireTime); } } 我们是做一个可以复用的框架,这些参数也弄到系统配置。 配置系统参数

【Spring Security + OAuth2 + JWT入门到实战】6. 自定义登录失败处理

最后都变了- 提交于 2020-03-02 15:38:55
简介 实现登录失败读取系统配置返回JSON还是页面 配置系统参数 hk: security: browser: loginSucess: /index #登录成功跳转 loginType: JSON #登录成功 失败返回值类型 loginPage: /signIn.html #登录页面 oginFailure: /failure #登录失败跳转 改造BrowserProperties方法 package com.spring.security.properties; import lombok.Data; /** * 浏览器的属性 */ @Data public class BrowserProperties { /** * 登录页面 默认登录页signIn.html */ private String loginPage = "/signIn.html"; /** * 登录成功 */ private String loginSucess = "/index"; /** * 登录失败 */ private String loginFailure = "/failure"; /** * 登录成功 失败返回值类型 */ private LoginType loginType = LoginType.JSON; } 创建登录失败Handler