この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
こんばんは。モバイルアプリサービス部の平屋です。
本記事では、JWTDecode.swiftを使ってJWTをデコードする実装を紹介します。
検証環境
- macOS Mojave 10.14.4
- Xcode Version 10.1
- CocoaPods 1.6.1
導入
CocoaPodsやCarthageなどを使用して導入できます。
Cocoapods
use_frameworks!
pod 'JWTDecode', '~> 2.2'
Carthage
github "auth0/JWTDecode.swift" ~> 2.2
実装
decode(jwt:)
メソッドを使用してJWTオブジェクトを取得し、JWTオブジェクトから必要な値を取り出します。
// JWT (https://jwt.io/に記載されているサンプル)
let jwtText = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
// ヘッダー、ボディの値を取り出す
guard let jwt = try? decode(jwt: jwtText),
let algorithm = jwt.header["alg"],
let type = jwt.header["typ"],
let subject = jwt.body["sub"] as? String,
let name = jwt.body["name"] as? String,
let issuedAt = jwt.body["iat"] as? Int else {
return
}
// ログ出力する
print("[HEADER] algorithm:\(algorithm), type:\(type)")
print("[PAYLOAD] subject:\(subject), name:\(name), issuedAt:\(issuedAt)")
動作確認
サンプルコードを実行すると、以下のログが得られました。
[HEADER] algorithm:HS256, type:JWT
[PAYLOAD] subject:1234567890, name:John Doe, issuedAt:1516239022