SwiftyJWT 0.0.3

SwiftyJWT 0.0.3

Wstunes维护。



SwiftyJWT 0.0.3

  • 作者:
  • Wstunes

SwiftyJWT是一个轻量级、纯Swift库,用于以灵活的方式生成JWT。

特性

  • 用特定的标题、载荷和算法生成JWT。
  • 解码JWT字符串到JWT实体,在必要的检查后。
  • 多断言检查。
  • 支持多种算法。
  • HS,RSA算法密钥管理。

如何集成

pod 'SwiftyJWT'

支持的算法

该库通过以下算法实现JWT验证和签名:

JWS 算法 描述
HS256 HMAC256 HMAC使用SHA-256
HS384 HMAC384 HMAC使用SHA-384
HS512 HMAC512 HMAC使用SHA-512
RS256 RSA256 RSASSA-PKCS1-v1_5与SHA-256
RS384 RSA384 RSASSA-PKCS1-v1_5与SHA-384
RS512 RSA512 RSASSA-PKCS1-v1_5与SHA-512

使用

使用特定的头部、负载和算法生成JWT

HS

let alg = JWTAlgorithm.hs256("secret")
let headerWithKeyId = JWTHeader.init(keyId: "testKeyId")
var payload = JWTPayload()
payload.expiration = 515616187993
payload.issuer = "yufu"
payload.subject = "shuo"
payload.customFields = ["name": EncodableValue(value: "wang"),
            "isAdmin": EncodableValue(value: true),
            "age": EncodableValue(value: 125),
            "height": EncodableValue(value: 121.5)]

let jwtWithKeyId = try? JWT.init(payload: payload, algorithm: alg, header: headerWithKeyId)

RSA

let privateKey = try! RSAKey.init(base64String: "keyString", keyType: .PRIVATE)
let alg = JWTAlgorithm.rs256(privateKey)
let jwtWithKeyId = try? JWT.init(payload: payload, algorithm: alg, header: headerWithKeyId)

将JWT字符串解码为JWT实体

HS

let jwtString = "ey....."
let alg = JWTAlgorithm.hs256("secret")
let jwt = try? JWT.init(algorithm: alg, rawString: jwtString)

RSA

let jwtString = "ey....."
let publicKey = try! RSAKey.init(base64String: "keyString", keyType: .PUBLIC)
let alg = JWTAlgorithm.rs256(publicKey)
let jwt1 = try? JWT.init(algorithm: alg, rawString: jwtString)

JWTPayload声明检查

let payload = JWTPayload()
try payload.checkExpiration()
try payload.checkIssueAt(allowNil: false)
try payload.checkSubject(expected: "shuo")
try payload.checkIssuer(expected: "yufu")
try payload.checkAudience(expected: "here")