Как декодировать JWT из Azure Active Directory в Китура? - PullRequest
1 голос
/ 21 мая 2019

Я получил токен доступа от azure ad и попытался расшифровать его на сервере kitura.

В jwt.io я могу успешно его декодировать, но не через процедуры декодирования jwt из примера проекта kitura. Я использую точный код, приведенный в примере проекта Kitura на GitHub. Кто-то использовал это с лазурным токеном?

1 Ответ

2 голосов
/ 21 мая 2019

Вы должны иметь возможность декодировать токен 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, вам нужно создать JWTVerifier изОткрытый ключ RSA в кодировке PEM:

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

Затем передайте это декодеру:

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