Как декодировать jwt из активного каталога Azure в Kitura?

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

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

Не могли бы вы предоставить пример токена, который вы пытаетесь декодировать? Вы надеетесь проверить токен или просто расшифровать его? Вы создали структуру, которая моделирует утверждения, которые вы надеетесь декодировать из JWT?

Matt Kilner 21.05.2019 14:16

Я не могу предоставить пример токена. Как я видел, декодирование идет вместе с проверкой в ​​этом образце. Оба пути были бы потрясающими. Должен ли я полностью моделировать токен как заявку?

Matthias Karl 21.05.2019 14:34

Не могли бы вы предоставить ссылку на то, откуда вы сгенерировали токен? Вы можете использовать верификатор .none, чтобы пропустить проверку токена. Это позволит вам определить, связана ли проблема с проверкой или декодированием JWT. Вы можете использовать предоставленную структуруClaimsStandardJWT для декодирования стандартных утверждений. Если у вас есть какие-либо пользовательские утверждения, которые вы хотите декодировать, вам необходимо смоделировать их в своей собственной структуре.

Matt Kilner 21.05.2019 14:41

хорошо... это проблема с претензией. У меня есть токен, похожий на образец токена v1 с этого сайта: ссылка на лазурь

Matthias Karl 21.05.2019 14:57
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
1
4
145
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы должны иметь возможность декодировать токен 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)

Декодирование (даже пример строки v1 из ms docs) по-прежнему возвращает ноль.

Matthias Karl 21.05.2019 15:59

Пришлось немного подкорректировать заявку, но наконец-то это сработало! Спасибо, Мэтт и Эндрю!

Matthias Karl 22.05.2019 06:43

Другие вопросы по теме