gpt4 book ai didi

azure - 如何在 Rust 中解码 Azure JWT token 以在我的应用程序中使用有效负载

转载 作者:行者123 更新时间:2023-12-03 01:59:57 24 4
gpt4 key购买 nike

我有一个使用 sqlx crate 连接到 PostgreSQL 的 API,并且有一个使用 Actix web 部署的 Web 服务器。

我正在从以下位置请求 JWT token :“https://login.microsoftonline.com/{tenant_id}/v2.0/token”

这个 JWT 将有一些有效负载,我正在尝试像 Rust 中那样解码我的 jwt:

use jsonwebtoken::{decode, decode_header, Algorithm, DecodingKey, TokenData, Validation};
use jwt::{Claims, VerifyWithKey};
fn main() {
let jwt = "";
let token_data = decode::<Claims>(&jwt, &DecodingKey::from_secret(b""),
&Validation::new(Algorithm::RS256));
println!("{:?}", token_data);
}

但是当我在终端中编译它时出现此错误:

Err(Error(InvalidAlgorithm))

我验证了 jwt.io 使用的算法: header 部分的 'alg': 'RS256'

我不明白我做错了什么。

我只想解码 JWT 并使用有效负载中的一些内容来执行进一步的操作任何建议都会有帮助!

最佳答案

经过几个小时的网络搜索后:

我使用了一个名为 jsonwebtokens 的箱子事实证明,它提供了一种非常简单而简洁的方法来解码和获取 header 以及有效负载:

use jsonwebtokens as jwts;
use jwts::{Algorithm, AlgorithmID, Verifier, raw::{self, TokenSlices}};
#[derive(Serialize,Deserialize, Debug)]

pub struct Claims {
pub aio: String,
pub app_displayname: String,
pub aud: String,
pub roles: Vec<String>,
pub tid: String,
}

let get_azure_jwt = get_bearer_token(tenant_id, client_id, client_secret, url_scope).await;

let TokenSlices{claims,..} = raw::split_token(&get_azure_jwt).expect("Error Slicing the token");
let raw_claim = raw::decode_json_token_slice(claims).expect("Error getting the claims");
let final_claim:Claims = serde_json::from_value(cls.clone()).unwrap();

然后您可以根据需要使用解码后的声明。

关于azure - 如何在 Rust 中解码 Azure JWT token 以在我的应用程序中使用有效负载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76678651/

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