如何从 kitura 中的 azure 活动目录解码 jwt?

How to decode a jwt from azure active directory in kitura?

我收到了来自 azure ad 的访问令牌并尝试在 kitura 服务器上对其进行解码。

在 jwt.io 我可以成功解码它,但不能通过 kitura 示例项目中的 jwt 解码例程。我正在使用 github 上的示例 kitura 项目给出的确切代码。 有人用过 azure token 吗?

您应该能够将 v1 令牌解码为结构,而无需使用以下代码进行验证:

struct AzureJWTClaims: Claims {
    let aud: String
    let iss: String
    let iat: Date
    let nbf: Date
    let exp: Date
    let acr: String
    let aio: String
    let amr: [String]
    let appid: String
    let appidacr: String
    let email: String
    let family_name: String
    let given_name: String
    let idp: String
    let ipaddr: String
    let name: String
    let oid: String
    let rh: String
    let scp: String
    let sub: String
    let tid: String
    let unique_name: String
    let uti: String
    let ver: String
}
let jwt = try? JWT<AzureJWTClaims>(jwtString: "<YourJWTString>", verifier: .none)

如果您还想验证 JWT,您需要从 PEM 编码的 RSA public 密钥创建 JWTVerifier

let verifier = JWTVerifier.rs256(publicKey: Data("<PEM public key>".utf8))

然后将其传递给解码器:

let verifiedJWT = try? JWT<AzureJWTClaims>(jwtString: "<YourJWTString>", verifier: verifier)