[C#] 基于 Token 的鉴权与签名机制详解 接口对接鉴权 token、sign(a=1&b=2&c=3&d=4)、Base64、参数加密、MD5

1. 鉴权方式

1.1. 获取 Token
  • 1.1.1. 调用服务接口 { {projectUrl}}/ois/order/getAuth,传入分配好的 appKeyappSecret,验证通过后返回 access token
  • 1.1.2. 调用其他接口时需要此 token 参与签名计算。
  • 1.1.3. token 的有效时间不固定,推荐根据响应 code 判断是否需要重新获取 token
    • code=1004code=1005 时需要获取新 token
1.2. 计算签名
  • 1.2.1. 将所有参数(表单参数和 HTTP 头原始值)拼接,将参数自然排序(无值的参数不拼接)。例如:a=1&b=2&c=3&d=4
  • 1.2.2. 将拼接好的参数字符串进行 Base64 编码:Base64(str)
  • 1.2.3. 将 Base64 后的字符串与 appSecret 进行拼接,并做 MD5 加密:MD5(Base64(str)+appSecret)
  • 1.2.4. 将 MD5 加密后的字符串转换为大写。
1.3. Token 解析
  • 1.3.1. HTTP 头中有三个参数:tokensignversiontoken 实际上是经过伪装的,并非原始 token

  • 1.3.2. token 组成:

    {
         "timestamp":1584953245407,"nonce":"slnkda","token":"b535e97f-2293-4b8c-8bdd-b2e9fa96aa77"}
    
    • timestamp:当前时间戳,13 位毫秒数。
    • nonce:可以固定为 slnkda
    • token:从 getAuth 接口返回的 token
  • 1.3.3. 将以上 token 对象进行 Base64 编码:Base64(token)

  • 1.3.4. 进行字符替换:

    • "a" -> "-"
    • "c" -> "#"
    • "x" -> "^"
    • "M" -> "$"

    Java 语言替换时可能会产生多余换行符,要处理掉,以免接口返回“非法请求”。

1.4. HTTP Header 组成

调用获取 token 以外的接口时,需要在 HTTP 头中添加以下信息:

  • 1.4.1. 伪装后的 token
  • 1.4.2. 计算后的 sign 签名。
  • 1.4.3. 客户端版本 version

2. 测试对接要求

  • 2.1. 测试单号要求以 Test 开头。

3. 常见对接误区

  • 3.1. 预报之后不主动监测预报状态,导致预报失败却未处理。
  • 3.2. 轮询频率不限制为每秒 1 次,会导致限流。
  • 3.3. 预报失败或预报一直未完成时不限制轮询次数,导致服务器压力增大。

使用以下C#代码来对接该接口。下面是一个步骤分解的示例,包括如何获取token和签名的计算方式:

4. 获取 Token 接口

using System;
using System.Net.Http;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;

class Program
{
   
    private static readonly string appKey = "you
基于Spring Boot、OAuth2.0和JWT Token鉴权认证开发的后台接口是一种使用现代化技术实现的身份验证和授权机制。下面是关于这种后台接口的一些说明: 首先,Spring Boot是一个基于Spring框架的快速开发框架,提供了简化的配置和自动化的特性,使开发者能够更快速高效地开发后台接口。 OAuth2.0是一种开放标准的授权协议,它允许用户授权第三方应用访问他们在资源拥有者上存储的信息,而不需要将用户名和密码提供给第三方。 JWT Token(JSON Web Token)是一种用于在网络应用间安全传递声明的一种方式。它被用作身份验证和授权的令牌,通过加密并以JSON格式存储信息,确保信息的完整性和安全性。 基于以上技术,我们可以开发出具有强大安全认证能力的后台接口。首先,用户在访问接口时,需要提供他们的身份证明,这可以是用户名和密码。接口服务器会使用OAuth2.0协议进行身份验证,并颁发JWT Token给用户。用户在未来的请求中,可以使用该Token进行身份验证,而无需每次都提供用户名和密码。 接口服务器会对JWT Token进行验证,以确保Token的完整性和有效性。如果Token失效或被伪造,访问将被拒绝。如果验证通过,接口服务器会正常处理用户的请求。 使用Spring Boot和OAuth2.0进行开发,可以方便地设置权限和角色。可以根据用户的角色和权限,限制他们对某些资源的访问。 总之,基于Spring Boot、OAuth2.0和JWT Token鉴权认证开发的后台接口提供了一种安全可靠的身份验证和授权机制,能够有效保护后台接口的安全性,防止非法访问和数据泄露。这种技术组合在开发现代化的网络应用时非常有用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码狙击炮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值