当前位置: 首页 > news >正文

如何把学校网站建设好网站备案中商城服务性质是什么

如何把学校网站建设好,网站备案中商城服务性质是什么,上海网络平台网站建设,怎么把文章导入wordpress下面内容参考文章JWT详细讲解(保姆级教程)-阿里云开发者社区 (aliyun.com) 1.什么是JWT#xff1f; JSON Web Token#xff08;JWT#xff09; 是一种开放标准 #xff08;RFC 7519#xff09;#xff0c;它定义了一种紧凑且独立的方式#xff0c;用于作为 JSON 对象在…下面内容参考文章JWT详细讲解(保姆级教程)-阿里云开发者社区 (aliyun.com) 1.什么是JWT JSON Web TokenJWT 是一种开放标准 RFC 7519它定义了一种紧凑且独立的方式用于作为 JSON 对象在各方之间安全地传输信息。此信息可以被验证和信任因为它是经过数字签名的。JWT 可以使用密钥使用 HMAC 算法或使用 RSA 或 ECDSA 的公钥/私钥对进行签名。 2.何时应使用 JSON Web 令牌 授权这是使用 JWT 的最常见方案。用户登录后每个后续请求都将包含 JWT允许用户访问该令牌允许的路由、服务和资源。单点登录是当今广泛使用 JWT 的一项功能因为它的开销很小并且能够轻松地跨不同域使用。信息交换JSON Web 令牌是在各方之间安全传输信息的好方法。由于可以对 JWT 进行签名例如使用公钥/私钥对因此您可以确定发送者是他们所说的人。此外由于签名是使用标头和有效负载计算的因此您还可以验证内容是否未被篡改。 3.JWT结构structure 三部分组成通过 . 分割开 HeaderPayloadSignature xxxxx.yyyyy.zzzzz1Header 报头通常由两部分组成: Token的类型(即 JWT)和所使用的签名算法(如 HMAC SHA256或 RSA)。 {alg: HS256,typ: JWT }最终这个 JSON 将由base64进行加密该加密是可以对称解密的)用于构成 JWT 的第一部分,eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9就是base64加密后的结果。 2Payload Token的第二部分是有效负载其中包含声明。声明是关于实体(通常是用户)和其他数据的语句。有三种类型的声明: registered claims, public claims, and private claims。 例如 {sub: 1234567890,// 注册声明name: John Doe,// 公共声明admin: true // 私有声明 }这部分的声明也会通过base64进行加密,最终形成JWT的第二部分。 registered claims(注册声明) 这些是一组预定义的声明它们 不是强制性的而是推荐的 以 提供一组有用的、可互操作的声明 。 例如: iss: jwt签发者sub: jwt所面向的用户aud: 接收jwt的一方exp: jwt的过期时间这个过期时间必须要大于签发时间nbf: 定义在什么时间之前该jwt都是不可用的.iat: jwt的签发时间jti: jwt的唯一身份标识主要用来作为一次性token,从而回避重放攻击 注意:声明名称只有三个字符因为 JWT 意味着是紧凑的。 Public claims(公共的声明) 使用 JWT 的人可以随意定义这些声明( 可以自己声明一些有效信息如用户的id,name等,但是不要设置一些敏感信息,如密码 )。但是为了避免冲突应该在 JWT注册表中定义它们或者将它们定义为包含抗冲突名称空间的 URI。 Private claims(私人声明) 这些是创建用于在同意使用它们的各方之间共享信息的习惯声明既不是注册声明也不是公开声明( 私人声明是提供者和消费者所共同定义的声明 )。 注意:对于已签名的Token这些信息虽然受到保护不会被篡改但任何人都可以阅读。除非加密否则不要将机密信息放在 JWT 的有效负载或头元素中。 3Signature 要创建Signature您必须获取编码的标头header、编码的有效载荷(payload)、secret、标头中指定的算法并对其进行签名。 例如如果您想使用 HMAC SHA256算法签名将按以下方式创建: HMACSHA256(base64UrlEncode(header) . base64UrlEncode(payload),secret)上面的JSON将会通过HMACSHA256算法结合secret进行加盐签名(私钥加密)其中header和payload将通过base64UrlEncode()方法进行base64加密然后通过字符串拼接 . 生成新字符串,最终生成JWT的第三部分SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c 注意:secret是保存在服务器端的jwt的签发生成也是在服务器端的secret就是用来进行jwt的签发和验证所以它就是你服务端的私钥在任何场景都不应该流露出去。一旦客户端得知这个secret, 那就意味着客户端是可以自我签发jwt了 4 JWT的生成与解析 JWT输出是三个由点分隔的 Base64-URL 字符串这些字符串可以在 HTML 和 HTTP 环境中轻松传递同时与基于 XML 的标准(如 SAML)相比更加紧凑。 真实情况,一般是在请求头里加入Authorization并加上Bearer标注最后是JWT(格式:Authorization: Bearer token) 通过Java代码实现JWT的生成( 使用的是JJWT框架 ) 先导入JJWT的依赖(JJWT是JWT的框架) !--JWT(Json Web Token)登录支持--dependencygroupIdio.jsonwebtoken/groupIdartifactIdjjwt/artifactIdversion0.9.1/version/dependency测试代码如下: public class JjwtTest {Testpublic void generateToken() {// JWT头部分信息【Header】MapString, Object header new HashMap();header.put(alg, HS256);header.put(typ, JWT);// 载核【Payload】MapString, Object payload new HashMap();payload.put(sub, 1234567890);payload.put(name,John Doe);payload.put(admin,true);// 声明Token失效时间Calendar instance Calendar.getInstance();instance.add(Calendar.SECOND,300);// 300s// 生成TokenString token Jwts.builder().setHeader(header)// 设置Header.setClaims(payload) // 设置载核.setExpiration(instance.getTime())// 设置生效时间.signWith(SignatureAlgorithm.HS256,secret) // 签名,这里采用私钥进行签名,不要泄露了自己的私钥信息.compact(); // 压缩生成xxx.xxx.xxxSystem.out.println(token);} }结果如下 通过Java代码实现JWT的解码( 使用的是JJWT框架 ) Testpublic void getInfoByJwt() {// 生成的tokenString token eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImV4cCI6MTY2MzI5NzQzMX0.Ju5EzKBpUnuIRhDG1SU0NwMGsd9Jl_8YBcMM6PB2C20;// 解析head信息JwsHeader jwsHeader Jwts.parser().setSigningKey(secret).parseClaimsJws(token).getHeader();System.out.println(jwsHeader); // {typJWT, algHS256}System.out.println(typ:jwsHeader.get(typ));// 解析PayloadClaims claims Jwts.parser().setSigningKey(secret).parseClaimsJws(token).getBody();System.out.println(claims);// {sub1234567890, nameJohn Doe, admintrue, exp1663297431}System.out.println(admin:claims.get(admin));// 解析SignatureString signature Jwts.parser().setSigningKey(secret).parseClaimsJws(token).getSignature();System.out.println(signature); // Ju5EzKBpUnuIRhDG1SU0NwMGsd9Jl_8YBcMM6PB2C20}结果 5.为什么不用session和cookie ,反而用token 基于session认证的登入系统存在的问题: session 每个用户经过我们的应用认证之后我们的应用都要在服务端做一次记录以方便用户下次请求的鉴别通常而言session都是保存在内存中而随着认证用户的增多服务端的开销会明显增大。 扩展性 用户认证之后服务端做认证记录如果认证的记录被保存在内存中的话这意味着用户下次请求还必须要请求在这台服务器上,这样才能拿到授权的资源这样在分布式的应用上相应的限制了负载均衡器的能力。这也意味着限制了应用的扩展能力。 CSRF 因为是基于cookie来进行用户识别的, cookie如果被截获用户就会很容易受到跨站请求伪造的攻击。 基于token的鉴权机制,就没有这些问题: 基于token的鉴权机制 基于token的鉴权机制类似于http协议也是无状态的它不需要在服务端去保留用户的认证信息或者会话信息。这就意味着基于token认证机制的应用不需要去考虑用户在哪一台服务器登录了这就为应用的扩展提供了便利。 6.为什么使用JWT 由于 JSON 没有 XML 那么冗长所以当对它进行编码时它的大小也更小这使得 JWT 比 SAML 更加紧凑。这使得 JWT 成为在 HTML 和 HTTP 环境中传递的一个很好的选择。在安全性方面SWT 只能由使用 HMAC 算法的共享秘密对称签名。但是JWT 和 SAML Token可以使用 X.509证书形式的公钥/私钥对进行签名。与签名 JSON 的简单性相比使用 XML 数字签名,签名 XML 而不引入模糊的安全漏洞是非常困难的。JSON 解析器在大多数编程语言中都很常见因为它们直接映射到对象。相反XML 没有自然的文档到对象映射。这使得使用 JWT 比使用 SAML 断言更容易。关于使用JWT 是在 Internet 规模上使用的。这突出了在多个平台(尤其是移动平台)上对 JSON Web 令牌进行客户端处理的便利性。 总结 安全相关 不应该在jwt的payload部分存放敏感信息因为该部分是客户端可解密的部分。保护好secret私钥该私钥非常重要。如果可以请使用https协议 作者Dearmadman 链接https://www.jianshu.com/p/576dbf44b2ae 来源简书 著作权归作者所有。商业转载请联系作者获得授权非商业转载请注明出处。 JWT详细讲解(保姆级教程)-阿里云开发者社区 (aliyun.com)
http://www.zqtcl.cn/news/701056/

相关文章:

  • 建立音乐网站wordpress 安装文件名
  • 龙华营销型网站制作企业网站模板源代码下载
  • 山东城乡建设厅网站哪有做网站公司
  • 建设网站是否等于开展网络营销用wordPress搭建图片库
  • 泗阳做网站的外贸公司网站搭建
  • 做汽车保养的网站上商业招商网站
  • 如何进网站帝国cms调用网站名称
  • 瑞金网站建设推广合肥瑶海区地图
  • 静态网站建设国内免费域名
  • 网站建设设计公司电子商务网站开发与管理
  • 手机网站制作设计做国际网站有什么需要注意的
  • 机构网站源码如何分析一个网站
  • 免费营销软件网站网站建设与规划实训总结
  • 网站深度功能建筑人才网市场
  • 学校网站建设的意义和应用服务平台管理系统
  • 网站内容规划要包括什么内容wordpress5.2 php版本
  • 山西建设部网站超值的镇江网站建设
  • 做淘宝要网站网站推广外链怎么做
  • 深圳做网站推广哪家好自建网站优缺点
  • 网站建设询价函什么网站可以做会计题目
  • 电脑网站视频怎么下载珠海免费网站制作
  • wordpress menu icon咸阳seo
  • php制作网站网站开发与客户沟通
  • 百度网站建设平台微盟微商城官网
  • 三明网站seo上海中学分数线
  • 青岛谷歌网站建设网站建站公司排名
  • 成都旅游网站建设规划windows优化大师官方
  • 福永网站建设公司哪家好财务公司承兑汇票
  • 青岛快速建站模板制作公司网页什么价位
  • 网站建设公司的经营范围wordpress设置文本编辑器