安全算法

统一认证:SSO

参考: https://cloud.tencent.com/developer/article/2353704

  单点登录英文全称 Single Sign On,简称 SSO。它的定义是:在多个应用系统中,用户只需要登录一次,即可访问所有相互信任的应用系统。SSO 服务用于解决同一公司不同业务应用之间的身份认证问题,只需要登录一次,即可访问所有添加的应用。

主流单点登录SSO技术方案(安全认证协议)包括下午五种:

  • JWT单点登录协议

  • OpenID Connect (OIDC) 单点登录协议

  • OAuth 2.0单点登录协议

  • SAML 单点登录协议

  • CAS 单点登录协议

 

JWT协议 - Token组成

token组成(xxxx.yyyy.zzzz):

  • Header

  • Payload

  • Signature

 

OAuth2协议

  OAuth(Open Authorization)是一个关于授权(authorization)的开放网络标准,允许用户授权第三方应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他 们数据的所有内容。OAuth在全世界得到广泛应用,目前的版本是2.0版。

🍋OAuth2协议 - 应用场景
  • 原生app授权:app登录请求后台接口,为了安全认证,所有请求都带token信息,如果登录验证、 请求后台数据。

  • 前后端分离单页面应用:前后端分离框架,前端请求后台数据,需要进行oauth2安全认证。

  • 第三方应用授权登录,比如QQ,微博,微信的授权登录。

🍋OAuth2协议 - 协议特点
  • 简单:不管是OAuth服务提供者还是应用开发者,都很易于理解与使用;

  • 安全:没有涉及到用户密钥等信息,更安全更灵活;

  • 开放:任何服务提供商都可以实现OAuth,任何软件开发商都可以使用OAuth;

 

HMAC(AK/SK)认证

HMAC(Hash-based Message Authentic Code),即基于hash的消息认证码

它使用哈希算法,以一个密钥和一个消息作为输入,生成一个消息摘要作为输出,服务端通过对比发送的摘要和自己生成的摘要是否相同完成认证。HMAC(AK/SK) 预先生成一个access key(AK)和secure key(SK)

通过使用Access Key Id / Secret Access Key加密的方法来验证某个请求的发送者身份。Access Key Id(AK)用于标示用户,Secret Access Key(SK)是用户用于加密认证字符串和云厂商用来验证认证字符串的密钥,其中SK必须保密。 AK/SK原理使用对称加解密。

收到用户的请求后,系统将使用AK对应的相同的SK和同样的认证机制生成认证字符串,并与用户请求中包含的认证字符串进行比对。如果认证字符串相同,系统认为用户拥有指定的操作权限,并执行相关操作;如果认证字符串不同,系统将忽略该操作并返回错误码

客户端:通过使用AK和SK以及可能存在的偏移量iv对一段消息文本进行签名,客户端发送AK和签名,
服务端:使用AK和SK以及偏移量iv重新签名,通过对比两个签名是否一致的方式完成认证请求。
这种方式避免传输secure key,且大多数情况下只允许使用一次,避免了重放攻击。


JWT和HMAC的区别
● HMAC服务端不仅有一个密钥,同时每一个调用实体都分发一个appid(AK)
● 用来签名的数据可以由调用双方约定,简单可以使用字符串,也可以使用map、array等其他数据类型
● 签名过程可以带上时间戳,这样每次调用的签名都不一样,安全性高
● 签名是根据约定好的算法进行计算,不需要客户端获取token之后一直传递token,但每次调用都要进行签名,没有jwt计算轻量。

 

签名算法-如SHA256withRSA

签名实际上并不是针对原始消息,而是针对原始消息的哈希进行签名    signature = encrypt(privateKey, sha256(message))

对签名进行验证实际上就是用公钥解密:   hash = decrypt(publicKey, signature)

然后把解密后的哈希与原始消息的哈希进行对比。 

常用数字签名算法有:指定某种哈希算法进行RSA签名的方式。

  • MD5withRSA

  • SHA1withRSA

  • SHA256withRSA

 

posted @   飞翔在天  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示