token 和 jsonwebtoken 流程图 token -接口访问凭证 jwt(鉴权常用方案) # 无感刷新 token 处理方案 # 定义两个 token 单点登录 主站维护自己的 refresh-token ,有效期较长,每次 token 过期后可以用 refresh-token 给自己续命请求新的 token,从主站跳转到子站,或者主站授权去其他页面,都是给其他页面 token,token 的有效期较短, 过期了就得重新授权,所以通过 token 和 refresh-token 就可以做到相对安全的单点登陆或者授权,因为他们两个的失效完全不同。
response_json(0,'success',$res); } CUL 模拟请求 curl --request GET \ --url http://127.0.0.1:8888/oauth/refresh-token 前端伪代码 async function refreshToken() { const res = await axios.get("http://127.0.0.1:8888/oauth/refresh-token let { data, config } = err.response; if (data.statusCode === 401 && config.url.includes("/oauth/refresh-token
authorization_code 验证通过,返回access_token,refresh_token,expires_in(过期时间戳) 通过refresh_token更新access_token: /authorize/refresh-token
此时查看kubeconfig发现oidc用户的refresh-token及id-token已经被配置 如果不使用kubelogin等工具也可以直接通过curl获取token信息 curl -k 'https
为 "admin" 配置上 client-id,client credential,id-token,refresh-token,certficaite 等等属性。 client id ) \ --auth-provider-arg=client-secret=( your client secret ) \ --auth-provider-arg=refresh-token
部署:Kubernetes1.25,Docker容器,4个Pod监控:Prometheus+Grafana运行环境:Ubuntu20.04,单Pod内存限制512MBBug现象服务提供/login和/refresh-token
function refreshToken() { const refreshToken = localStorage.getItem('refreshToken'); fetch('/api/refresh-token
「前端采用的是双Token的方式,access-token 和 refresh-token即 AT 和 RT」 「而对于纯后端的方式,就是只有access-token这一个token」 「那么问题来了
, 403 return f(*args, **kwargs) return decorated # 刷新AccessToken的路由 @app.route('/refresh-token
token and refreshtoken key</param> /// <returns></returns> [AllowAnonymous] [HttpPost("/refresh-token
.> idp-issuer-url: https://accounts.google.com refresh-token: 1//<...> name: oidc
private String[] grantTypes; // token有效期 private int tokenValidityTime; /** * refresh-token
refreshToken不为空,则拼接 headers['access-token'] = RNStorage.accessToken; headers['refresh-token
>_refreshToken()async{//刷新token逻辑try{finalresponse=awaitdio.post('/refresh-token');finalnewToken=response.data
kubernetes \ --auth-provider-arg=client-secret=YsXXff8TL5EXNmSpTeDLdKf99cYBLqqq \ --auth-provider-arg=refresh-token
WebMvcConfigurer.super.addInterceptors(registry); } } //发送手机验证码 auth/send-sms-code //使用手机 + 验证码登录 auth/sms-login //刷新令牌 auth/refresh-token
// 是否打开模式:客户端凭证(Client Credentials) .setIsClient(true) // 是否在每次Refresh-Token 刷新Access-Token时,产生一个新的Refresh-Token .setIsNewRefresh(true); } /** *
httpOnly: true, secure: true, sameSite: 'strict', path: '/api/refresh-token