如何从kitura的azure active directory解码jwt?

如何从kitura的azure active directory解码jwt?,azure,jwt,azure-active-directory,kitura,Azure,Jwt,Azure Active Directory,Kitura,我从azure ad收到一个访问令牌,并尝试在kitura服务器上对其进行解码 在jwt.io上,我可以成功解码它,但不能通过kitura示例项目中的jwt解码例程。我使用的是github上kitura示例项目给出的精确代码。 是否有人将其与azure令牌一起使用?您应该能够将v1令牌解码为结构,而无需使用以下代码进行验证: struct AzureJWTClaims: Claims { let aud: String let iss: String let iat: D

我从azure ad收到一个访问令牌,并尝试在kitura服务器上对其进行解码

在jwt.io上,我可以成功解码它,但不能通过kitura示例项目中的jwt解码例程。我使用的是github上kitura示例项目给出的精确代码。
是否有人将其与azure令牌一起使用?

您应该能够将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)
然后将其传递给解码器:

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

您能否提供一个您试图解码的示例令牌?您是希望验证令牌还是仅对其进行解码?您是否创建了一个结构来模拟您希望从JWT解码的声明?我无法提供一个示例令牌。正如我在本示例中看到的,解码与验证一起进行。两种方式都会很棒。我是否必须将令牌完全建模为声明?您能否提供一个链接,指向生成令牌的来源?您可以使用
.none
验证程序跳过令牌验证。这将允许您判断问题是否与JWT的验证或解码有关。您可以使用提供的
索赔标准JWT
结构来解码标准索赔。如果您有任何自定义声明要解码,那么您需要在自己的结构中对它们进行建模。好的……这是声明的问题。我有一个类似于这个站点的示例v1令牌的令牌:解码(甚至是ms docs中的示例v1字符串)仍然返回零。我不得不稍微调整声明,但它最终成功了!谢谢马特和安德鲁!
let verifiedJWT = try? JWT<AzureJWTClaims>(jwtString: "<YourJWTString>", verifier: verifier)