token

Spring Cloud微服务安全实战_5-6_refresh token失效处理

荒凉一梦 提交于 2020-01-09 00:53:15
access_token是客户端调用其他微服务调的凭证,access_token有效期不能太长(丢了风险很大),一般可以设置2小时,如果access_token失效了,就不能调用微服务了,上节说了access_token失效的处理---refresh_token来刷新令牌,refresh_token可以设置很长的有效期,比如一个月 下面是用refresh_token刷新令牌的步骤: 1,配置refresh_token  在客户端应用的表里配置 refresh_token 的有效期,然后配置refresh_token授权模式,这样认证服务器在给客户端应用发access_token的同时,也会发一个refresh_token (图1) 2, 在客户端应用调用微服务时,从session中拿出token,判token是否过期(在存入session时已经设置了token的过期时间),如果token已过期,就从拿refresh_token换取access_token: (图2) 如果refresh_token也过期了怎么处理呢? 虽然refresh_token有效期很长(比如一个月)但是还是会过期的。如果refresh_token也过期了怎么办呢? 答案是:没办法。只能去认证服务器走一遍认证流程。 当重新去认证服务器走授权流程的时候,又分两种情况: 1,refresh_token虽然过期了

如何深入理解 EKS IAM Authenticator 的实现机制

僤鯓⒐⒋嵵緔 提交于 2020-01-09 00:02:50
一、k8s Authentication 我们知道 apiserver 有以下几种认证方式: X509 Client Certs Static Token File Bootstrap Tokens Static Password File Service Account Tokens OpenID Connect Tokens Webhook Token Authentication Authenticating Proxy 一般我们使用二进制自建 k8s 集群,或者使用 kubeadm 创建的集群,集群的管理者,也就是 k8s 中 user 这个对象,都是使用的 X509 证书进行验证,如果属于同一个 CA 签发的,就认可这个用户; 企业为了减少用户管理的复杂程度,需要想办法如何把 IAM 的用户集成到 EKS 集群中,这样我们就不需要耽误为 EKS 创建用户,减少一套用户的维护工作,那这是如何集成的呢,是通过了 k8s 的 Webhook Token Authentication ,其认证过程架构图如下: 我们可以从图中看到多了 Authentication 这一部分,通过 aws-iam-authenticator ,我们可以知道,这是运行在 EKS Control Plane 中的一组 DaemonSet Pod,用来接收 apiserver 的认证请求。 二、解剖

小程序绑定公众号进行消息推送,公众号授权功能

寵の児 提交于 2020-01-09 00:00:45
小程序绑定公众号,通过公众号进行消息推送,首先要在小程序上进行公众号的授权 授权不可以直接在小程序上打开,所以必须要小程序先跳到其他网页,再跳回小程序 1.我们是做了一个先做账号绑定小程序,再做公众号绑定小程序,没有绑定的话,就跳到外部链接 wxBind () { // 绑定账号之后,再绑定小程序 let that = this.data; const data = { account: that.userInfo.account, openid: wx.getStorageSync('openid') }; WXAPI.wxBind(data).then((response) => { if (response.code === '0000') { this.setData({showUnbind: true}); Toast(response.msg); setTimeout(() => { this.getUrl() }, 300) } else { this.getUrl() Toast(response.msg) } }) }, //小程序和公众号绑定 getUrl() { let data = {} WXAPI.isBind(data).then((res) => { if (res.code === '0000' && !res.data) { let

token认证与session认证

主宰稳场 提交于 2020-01-08 21:12:52
什么是session认证? http协议是一无状态协议,所以如果用户向后台应用提供了用户名和密码来进行认证,下一次请求时,用户还是要带上用户名和密码进行用户认证。为了使后台应用能识别是哪个用户发出的请求,只能在后台服务器存储一份用户登陆信息,这份信息也会在响应前端请求时返回给浏览器(前端),前端将其保存为cookie,下次请求时前端发送给后端应用,后端应用就可以识别这个请求是来自哪个用户了,这就是传统的session认证 session认证的过程是怎样的? 浏览器第一次访问服务器,服务器会创建一个session,然后同时为该session生成一个唯一的会话的key,也就是sessionid,然后,将sessionid及对应的session分别作为key和value保存到缓存中,也可以持久化到数据库中,然后服务器再把sessionid,以cookie的形式发送给客户端。这样浏览器下次再访问时,会直接带着cookie中的sessionid。然后服务器根据sessionid找到对应的session进行匹配; 还有一种是浏览器禁用了cookie或不支持cookie,这种可以通过URL重写的方式发到服务器; 什么是token认证? token的意思是“令牌”,是服务端生成的一串字符串,作为客户端进行请求的一个标识。 当用户第一次登录后,服务器生成一个token并将此token返回给客户端

百度ocr接口,限制调用的响应时间

落爺英雄遲暮 提交于 2020-01-08 19:43:05
一、百度提供的工具类 1.HttpUtil package com.baidu.ai.aip.utils; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util.List; import java.util.Map; /** * http 工具类 */ public class HttpUtil { public static String post(String requestUrl, String accessToken, String params) throws Exception { String contentType = "application/x-www-form-urlencoded"; return HttpUtil.post(requestUrl, accessToken, contentType, params); } public static String post(String requestUrl, String accessToken, String

SpringCloud OAuth2实现单点登录以及OAuth2源码原理解析

落花浮王杯 提交于 2020-01-08 14:44:34
SpringCloud OAuth2实现单点登录以及OAuth2源码原理解析 意识流丶 关注 42019.05.22 14:39:50字数 2,594阅读 9,647 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 Spring Security OAuth 是建立在 Spring Security 的基础之上 OAuth2.0 协议实现的一个类库 Spring Security OAuth2 为 Spring Cloud 搭建认证授权服务(能够更好的集成到 Spring Cloud 体系中) 单点登录主要包括 服务端:一个第三方授权中心服务(Server),用于完成用户登录,认证和权限处理 客户端:当用户访问客户端应用的安全页面时,会重定向到授权中心进行身份验证,认证完成后方可访问客户端应用的服务,且多个客户端应用只需要登录一次即可 相关版本: SpringBoot:2.1.5.RELEASE SpringCloud :Greenwich.SR1 认证中心Server 1.引入OAuth2依赖和web依赖(不加启动时会报无法访问javax.servlet.Filter) OAuth2中包含spring-cloud-starter

JWT简介

喜你入骨 提交于 2020-01-08 10:04:54
原文地址: https://jwt.io/introduction/ 什么是JSON Web Token? JSON Web Token(JWT)是一个开放标准( RFC 7519 ),它定义了一种紧凑且自包含的方式,用于在各程序之间以JSON对象方式安全地传输信息。 由于此信息是经过数字签名的,因此可以被验证和信任。 可以使用加密算法(使用 HMAC 算法)或使用 RSA 或 ECDSA 的公钥/私钥对对 JWT进行 签名 。 尽管JWTs可以被加密以在双方之间提供保密性,但我们将重点关注已 签名的 令牌。 签名的令牌可以验证其中 包含的claims 的 完整性 ,而加密的令牌则将 这些claims 隐藏了 。 当使用公钥/私钥对token进行签名时,签名还证明只有持有私钥的一方才是对其进行签名的一方。 什么时候应该使用JSON Web Token? 以下是JSON Web Token使用场景: Authorization(授权) :这是使用JWT最常见的场景。 一旦用户登录,后续的每一个请求将附带JWT,从而允许用户访问该token允许的路由,服务和资源。单点 登录是当今广泛使用JWT的一个特性,因为它的开销很小并且可以在不同的域中轻松使用。 信息交换 :JSON Web Token是在各程序之间安全地传输信息的好方法。 因为可以对JWT进行 Signature(例如,使用公钥

ios 宏定义 系统版本 判定

柔情痞子 提交于 2020-01-08 06:33:22
当需要判断iOS系统版本的时候,相信很多人都会这么干: #define SystemVersion [[UIDevice currentDevice] systemVersion].floatValue 现在告诉屌丝们一个更好的办法就是其实系统已经做了类似的宏定义,不需要我们再去定义了 在Simulator-IOS7.0/usr/include/Availability.h中已经定义了很多系统的宏: 然后使用: #ifdef __IPHONE_7_0 //iOS7的新特性代码 #endif 或者是使用: #if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_7_0 //iOS7的新特性代码 #endif(__IPHONE_OS_VERSION_MAX_ALLOWED 这个定义是在Simulator-IOS7.0/usr/include/AvailabilityInternal.h文件中) 就搞定了。 下面是一些常用的宏: // 是否5s #define iPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen]

day80

我的梦境 提交于 2020-01-08 02:09:40
目录 线下线上仓库初始化 仓库间通信要分支同步 协同开发版本冲突问题(重点) 远程仓库回滚 远程仓库合并分支 腾讯云短信服务 短信功能不封装 短信功能的二次封装 多方式登录 视图层 序列化 验证码发送 视图层 const.py 手机登录 视图层 序列化 复习 线下线上仓库初始化 流程: cd luffy/luffyapi git remote git remote -v git push online(自定义) master 然后去码云上随便新建一个xyz仓库,复制粘贴SSH公钥到git命令窗口中 git push xyz master git remote remove xyz (删除线上的仓库) git remote -v 桌面新建文件temp cd temp/ git clone 线上公钥SSH链接(可以克隆到temp文件夹中) cd xyz/ 赋值代码文件到xyz中 git add . git commit -m '初始化' git push xyz master git status git remote -v git push origin master 仓库间通信要分支同步 流程: 桌面新建proj文件夹 cd proj/ git clone 线上公钥SSH链接(可以克隆到temp文件夹中) 新建一个文件temp.txt git status cd luffyapi/

day80 短信功能 多方式登录

孤街浪徒 提交于 2020-01-08 00:43:44
短信功能 腾讯云短信服务 """ 0、注册微信公众号平台 1、注册开发者账号 2、创建短信应用 3、创建签名与模板 """ 短信功能不封装 导入腾讯云短信接口 pip install qcloudsms_py # 短信应用 SDK AppID appid = 1400303014 # SDK AppID 以1400开头 # 短信应用 SDK AppKey appkey = "fe256e50a2d3e8d3cd07f21c42802ad3" # 短信模板ID,需要在短信控制台中申请 template_id = 517040 # NOTE: 这里的模板 ID`7839`只是示例,真实的模板 ID 需要在短信控制台中申请 # 签名,参数使用的是`签名内容` sms_sign = "小阿峰啊公众号" # NOTE: 签名参数使用的是`签名内容`,而不是`签名ID`。这里的签名"腾讯云"只是示例,真实的签名需要在短信控制台中申请 from qcloudsms_py import SmsSingleSender sender = SmsSingleSender(appid, appkey) import random def get_code(): code='' for i in range(6): code+=str(random.randint(0,9)) return code