You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure文件共享存储中App Token加密规则及解密/复刻逻辑咨询

Azure App Service 加密Token解密/复刻加密逻辑实现方案

解密逻辑

Azure应用身份认证(Easy Auth)的v1版本token存储用的是AES-256-GCM对称加密算法,具体实现规则如下:

  • 加密密钥为应用配置项WEBSITE_AUTH_ENCRYPTION_KEY,是32字节长度的十六进制字符串,未手动配置时Azure会自动为应用生成唯一值,可在Azure门户的应用服务「配置」页中查看或自定义设置。
  • 存储的加密token是Base64编码后的字节串,字节结构按顺序为:12字节随机IV(初始化向量) + 密文主体 + 16字节GCM认证标签。

解密步骤:

  1. 对JSON中取到的加密token字符串做Base64解码,得到原始字节数组
  2. 截取字节数组前12位作为IV,最后16位作为GCM认证标签,中间剩余部分为待解密密文
  3. 把WEBSITE_AUTH_ENCRYPTION_KEY从十六进制字符串转为字节数组作为AES密钥,用AES-256-GCM算法解密密文同时校验认证标签,即可得到明文token内容。

复刻加密逻辑

如果要自行生成符合该格式的加密token,按反向逻辑实现即可:

  1. 生成12字节的安全随机IV
  2. 用和目标环境一致的WEBSITE_AUTH_ENCRYPTION_KEY作为密钥,通过AES-256-GCM算法加密明文token,得到密文和16字节GCM认证标签
  3. 按「IV + 密文 + 认证标签」的顺序拼接字节数组,再做Base64编码,即可得到符合格式要求的加密token值,存入对应JSON结构即可。

示例代码(Python)

from cryptography.hazmat.primitives.ciphers.aead import AESGCM
import base64

# 替换为你的应用WEBSITE_AUTH_ENCRYPTION_KEY
ENCRYPTION_KEY_HEX = "你的32字节十六进制密钥"
key = bytes.fromhex(ENCRYPTION_KEY_HEX)
aesgcm = AESGCM(key)

# 解密示例
encrypted_token_b64 = "你拿到的加密token字符串"
encrypted_bytes = base64.b64decode(encrypted_token_b64)
iv = encrypted_bytes[:12]
tag = encrypted_bytes[-16:]
ciphertext = encrypted_bytes[12:-16]
plaintext_token = aesgcm.decrypt(iv, ciphertext + tag, None).decode('utf-8')
print(plaintext_token)

# 加密示例
plaintext = "你的明文token"
iv_new = AESGCM.generate_nonce() # 自动生成12字节IV
encrypted = aesgcm.encrypt(iv_new, plaintext.encode('utf-8'), None)
new_encrypted_token_b64 = base64.b64encode(iv_new + encrypted).decode('utf-8')
print(new_encrypted_token_b64)

注意事项

  • 跨应用复用这套存储逻辑时,必须确保所有用到的应用使用同一个WEBSITE_AUTH_ENCRYPTION_KEY,否则无法互相解密。
  • 目前公开的v1版本token均使用该逻辑,若后续Azure升级token存储版本号,需要对应调整加密算法实现。

内容的提问来源于stack exchange,提问作者CudoX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 20:15:04