AK/SK加密认证

2024-03-16 08:36
文章标签 认证 加密 sk ak

本文主要是介绍AK/SK加密认证,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、AK/SK概念

  1. Access Key (AK):AK是一个全局唯一的字符串标识符,用于标识用户。它类似于用户名,但仅用于身份识别,并不包含任何秘密信息。

  2. Secret Access Key (SK):SK则是一个高度保密的密钥,类似于密码,用于对发送至服务的请求进行签名。每个AK都有一个对应的SK,它们成对出现,共同完成安全认证过程。

  3. 签名算法与认证流程

    • 在AK/SK认证中,客户端使用SK对HTTP请求的内容(包括但不限于请求方法、URL路径、参数、时间戳等)进行特定的哈希运算,生成一个签名Hutool封装的签名算法。
    • 这个签名随请求一起发送到服务端,服务端收到请求后,利用存储的对应AK的SK以同样的规则计算签名,然后比较两者是否一致,以此来验证请求的完整性和发送者的身份。

二、AK/SK认证流程

  1. 创建与管理AK/SK:用户通过注册等方式等到访问密钥对(AK/SK),并下载保存。一般SK通常只在首次创建时展示一次,之后不可再查看,只能重新生成新的密钥对,也是为了保证安全

  2. 构建带有签名的请求:客户端在发起API请求前,会先根据预定义的规范(签名算法)使用SK对请求参数进行签名处理。

  3. 发送请求与鉴权:签名后的请求通过HTTP头字段(如Authorization等)携带鉴权信息发送给服务端,服务端接收到请求后,从请求头取出AK并查找出其关联的SK,然后使用此SK按照相同的签名算法生产签名,判断和客户端SK生成的签名是否一致
    我们需要获取用户传递的 accessKey 和 secretKey。对于这种数据,建议不要直接在 URL 中传递,而是选择在请求头中传递会更为妥当。因为 GET 请求的 URL 存在最大长度限制,如果你传递的其他参数过多,可能会导致关键数据被挤出。因此,建议从请求头中获取这些数据

  4. 响应与权限控制:验证通过后,服务端会执行请求的操作,并返回相应的响应内容;若签名验证失败,则拒绝请求并返回错误提示。

三、请求重放安全问题

在AK/SK认证机制中,请求重放安全问题是指攻击者截获并重复发送之前的有效请求来假冒合法用户执行操作。为了防止这种攻击,服务端需要通常采用多种策略来确保API调用的一次性和不可重放性:

  1. 时间戳和有效期:在签名过程中包含时间戳信息,并且服务端会检查该时间戳是否在一定的时间窗口内(比如几分钟)。超过这个时间范围的请求将被拒绝,这样就阻止了过期请求的重放。

  2. 唯一请求ID:为每个请求生成一个唯一的标识符,并将其纳入签名内容中。服务端会跟踪已处理过的请求ID,当收到相同的请求ID时,将拒绝处理以防止重放攻击。

  3. 序列号或nonce:使用递增的序列号或者一次性随机值nonce作为请求的一部分进行签名,服务端会验证每个新请求的序列号或nonce未被使用过。

这篇关于AK/SK加密认证的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/814912

相关文章

Spring Security自定义身份认证的实现方法

《SpringSecurity自定义身份认证的实现方法》:本文主要介绍SpringSecurity自定义身份认证的实现方法,下面对SpringSecurity的这三种自定义身份认证进行详细讲解,... 目录1.内存身份认证(1)创建配置类(2)验证内存身份认证2.JDBC身份认证(1)数据准备 (2)配置依

利用python实现对excel文件进行加密

《利用python实现对excel文件进行加密》由于文件内容的私密性,需要对Excel文件进行加密,保护文件以免给第三方看到,本文将以Python语言为例,和大家讲讲如何对Excel文件进行加密,感兴... 目录前言方法一:使用pywin32库(仅限Windows)方法二:使用msoffcrypto-too

SpringSecurity JWT基于令牌的无状态认证实现

《SpringSecurityJWT基于令牌的无状态认证实现》SpringSecurity中实现基于JWT的无状态认证是一种常见的做法,本文就来介绍一下SpringSecurityJWT基于令牌的无... 目录引言一、JWT基本原理与结构二、Spring Security JWT依赖配置三、JWT令牌生成与

Java中使用Hutool进行AES加密解密的方法举例

《Java中使用Hutool进行AES加密解密的方法举例》AES是一种对称加密,所谓对称加密就是加密与解密使用的秘钥是一个,下面:本文主要介绍Java中使用Hutool进行AES加密解密的相关资料... 目录前言一、Hutool简介与引入1.1 Hutool简介1.2 引入Hutool二、AES加密解密基础

SpringSecurity6.0 如何通过JWTtoken进行认证授权

《SpringSecurity6.0如何通过JWTtoken进行认证授权》:本文主要介绍SpringSecurity6.0通过JWTtoken进行认证授权的过程,本文给大家介绍的非常详细,感兴趣... 目录项目依赖认证UserDetailService生成JWT token权限控制小结之前写过一个文章,从S

springboot security使用jwt认证方式

《springbootsecurity使用jwt认证方式》:本文主要介绍springbootsecurity使用jwt认证方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录前言代码示例依赖定义mapper定义用户信息的实体beansecurity相关的类提供登录接口测试提供一

SpringBoot3使用Jasypt实现加密配置文件

《SpringBoot3使用Jasypt实现加密配置文件》这篇文章主要为大家详细介绍了SpringBoot3如何使用Jasypt实现加密配置文件功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编... 目录一. 使用步骤1. 添加依赖2.配置加密密码3. 加密敏感信息4. 将加密信息存储到配置文件中5

SpringBoot整合jasypt实现重要数据加密

《SpringBoot整合jasypt实现重要数据加密》Jasypt是一个专注于简化Java加密操作的开源工具,:本文主要介绍详细介绍了如何使用jasypt实现重要数据加密,感兴趣的小伙伴可... 目录jasypt简介 jasypt的优点SpringBoot使用jasypt创建mapper接口配置文件加密

SpringSecurity 认证、注销、权限控制功能(注销、记住密码、自定义登入页)

《SpringSecurity认证、注销、权限控制功能(注销、记住密码、自定义登入页)》SpringSecurity是一个强大的Java框架,用于保护应用程序的安全性,它提供了一套全面的安全解决方案... 目录简介认识Spring Security“认证”(Authentication)“授权” (Auth

Java实现MD5加密的四种方式

《Java实现MD5加密的四种方式》MD5是一种广泛使用的哈希算法,其输出结果是一个128位的二进制数,通常以32位十六进制数的形式表示,MD5的底层实现涉及多个复杂的步骤和算法,本文给大家介绍了Ja... 目录MD5介绍Java 中实现 MD5 加密方式方法一:使用 MessageDigest方法二:使用