gpt4 book ai didi

azure - 是否可以使用 key 保管库 key 创建 JWT token ?

转载 作者:行者123 更新时间:2023-12-03 02:13:43 24 4
gpt4 key购买 nike

我想要使用 Key Vault key 来创建 JWT token ,然后验证它。

我正在使用此代码:

public static async Task<string> SignJwt()
{
var tokenHandler = new JwtSecurityTokenHandler();
var signinKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("this is my custom Secret key for authentication"));
var tokenDescriptor = new SecurityTokenDescriptor
{
Subject = new ClaimsIdentity(new[] { new Claim("id", "1") }),
Expires = DateTime.UtcNow.AddDays(7),
SigningCredentials = new SigningCredentials(signinKey, SecurityAlgorithms.HmacSha256Signature)
};
var token = tokenHandler.CreateToken(tokenDescriptor);
return tokenHandler.WriteToken(token);
}

而且效果很好。我在谷歌上进行了很多搜索,发现使用身份扩展 nuget 的 SigningCredentials 代码片段:

new SigningCredentials(new KeyVaultSecurityKey("https://myvault.vault.azure.net/keys/mykey/keyid", new KeyVaultSecurityKey.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback)), "RS256")
{
CryptoProviderFactory = new CryptoProviderFactory() { CustomCryptoProvider = new KeyVaultCryptoProvider() }
});

但我不清楚,AuthenticationCallback 到底是什么以及如何实现它,以及我是否能够在 Web 应用程序或 azure 的 Azure 中使用它功能?

最佳答案

  • 首先,JWT token 由 3 个部分组成( header 、有效负载和签名),并且所有这 3 个部分都是Base64UriEncoded。>

  • 获取生成 header 和负载所需的签名,然后将它们按点组合起来。**

  • 下面是使用 Azure kay Vault 验证 JWT 的示例代码。

const key = await this.keyClient.getKey(this.KEY_NAME);
const cryptClient = new CryptographyClient(key, new DefaultAzureCredential());
const util =require('util')
const base64 = require('base64url');
const JWT=""
const jwtHeader = JWT.split('.')[0];
const jwtPayload = JWT.split('.')[1];
const jwtSignature = JWT.split('.')[2];
const signature = base64.toBuffer(jwtSignature)
const data = util.format('%s.%s', jwtHeader, jwtPayload);
const hash = crypto.createHash('sha256');
const digest = hash.update(data).digest()
const verified =await cryptClient.verify("RS256",digest,signature)
  • 这里有一些相关讨论的 SO 主题。 SO1 , SO2SO3

关于azure - 是否可以使用 key 保管库 key 创建 JWT token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72269964/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com