JSONWebToken 2.2.0

JSONWebToken 2.2.0

测试已测试
语言语言 SwiftSwift
许可证 BSD
发布最新发布2017年9月
SwiftSwift 版本3.0
SPM支持 SPM

Kyle Fuller 维护。



  • Kyle Fuller

JSON Web Token

Swift 对 JSON Web Token 的实现。

安装

CocoaPods 是推荐的安装方法。

pod 'JSONWebToken'

使用方法

import JWT

编码声明

JWT.encode(claims: ["my": "payload"], algorithm: .hs256("secret".data(using: .utf8)!))

编码声明集

var claims = ClaimSet()
claims.issuer = "fuller.li"
claims.issuedAt = Date()
claims["custom"] = "Hi"

JWT.encode(claims: claims, algorithm, algorithm: .hs256("secret".data(using: .utf8)))

使用构建模式构建 JWT

JWT.encode(.hs256("secret".data(using: .utf8))) { builder in
  builder.issuer = "fuller.li"
  builder.issuedAt = Date()
  builder["custom"] = "Hi"
}

解码 JWT

当解码 JWT 时,您必须提供一个或多个算法和密钥。

do {
  let claims: ClaimSet = try JWT.decode("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.e30.2_8pWJfyPup0YwOXK7g9Dn0cF1E3pdn299t4hSeJy5w", algorithm: .hs256("secret".data(using: .utf8)!))
  print(claims)
} catch {
  print("Failed to decode JWT: \(error)")
}

当 JWT 可能用一种算法或许多密钥签名时

try JWT.decode("eyJh...5w", algorithms: [
  .hs256("secret".data(using: .utf8)!),
  .hs256("secret2".data(using: .utf8)!),
  .hs512("secure".data(using: .utf8)!)
])

支持的声明

此库支持以下声明验证

  • 发行者 (iss) 声明
  • 过期时间 (exp) 声明
  • 不早于 (nbf) 声明
  • 发行时间 (iat) 声明
  • 受众 (aud) 声明

算法

此库支持以下算法

  • none - 未加密的 JWT
  • hs256 - 使用 SHA-256 哈希算法的 HMAC(默认值)
  • hs384 - 使用 SHA-384 哈希算法的 HMAC
  • hs512 - 使用 SHA-512 哈希算法的 HMAC

许可证

JSONWebToken 在 BSD 许可证下发布。有关更多信息,请参阅 LICENSE