该库不会验证JWT。任何格式正确的JWT都可以从Base64URL解码。
从v2迁移?请查看迁移指南。
文档
快速开始
需求
- iOS 12.0+ / macOS 10.15+ / tvOS 12.0+ / watchOS 6.2+
- Xcode 13.x / 14.x
- Swift 5.5+
安装
Swift 包管理器
在 Xcode 中打开以下菜单项
文件 > 添加包...
在 搜索或输入包 URL 搜索框中输入此 URL
https://github.com/auth0/JWTDecode.swift
然后,选择依赖规则,按下 添加包。
CocoaPods
将以下行添加到您的 Podfile
pod 'JWTDecode', '~> 3.1'
然后,运行 pod install
。
Carthage
将以下行添加到您的 Cartfile
github "auth0/JWTDecode.swift" ~> 3.1
然后,运行 carthage bootstrap --use-xcframeworks
。
使用说明
查看所有可用功能,请参阅API 文档
- 导入框架
import JWTDecode
- 解码令牌
let jwt = try decode(jwt: token)
JWT 部分
部分 | 属性 |
---|---|
头部字典 | jwt.header |
JWT 主体中的声明 | jwt.body |
JWT 签名 | jwt.signature |
注册声明
声明 | 属性 |
---|---|
aud 受众 | jwt.audience |
sub 主题 | jwt.subject |
jti JWT ID | jwt.identifier |
iss 发布者 | jwt.issuer |
nbf 开始日期 | jwt.notBefore |
iat 发布时间 | jwt.issuedAt |
exp 过期时间 | jwt.expiresAt |
自定义声明
您可以通过下标检索自定义声明,然后尝试将其值转换为特定类型。
if let email = jwt["email"].string {
print("Email is \(email)")
}
支持的转换如下
var string: String?
var boolean: Bool?
var integer: Int?
var double: Double?
var date: Date?
var array: [String]?
您可以在扩展中轻松添加自定义声明的便利访问器。
extension JWT {
var myClaim: String? {
return self["my_claim"].string
}
}
错误处理
如果JWT格式不正确,`decode(jwt:)`函数将抛出`JWTDecodeError`异常。
catch let error as JWTDecodeError {
print(error)
}
支持政策
本政策定义了JWTDecode.swift对Xcode、Swift和平台(iOS、macOS、tvOS和watchOS)版本的适用支持范围。
Xcode
唯一支持的Xcode版本是当前可以用于向App Store提交应用的版本。一旦Xcode版本停止支持,从JWTDecode.swift中删除该版本**不会被视为重大变更**,并将通过一个**小版本**来实现。
Swift
最低支持的Swift次要版本是与最老支持的Xcode版本一起发布的版本。一旦Swift次要版本停止支持,从JWTDecode.swift中删除它**不会被视为重大变更**,并将通过一个**小版本**来实现。
平台
仅支持最新的4个主要平台版本,从
- iOS 12
- macOS 10.15
- macCatalyst 13
- tvOS 12
- watchOS 6.2
一旦某个平台版本不再受支持,从JWTDecode.swift中移除它不会被认为是破坏性更改,将会在
一个次版本中完成。例如,当iOS 17发布时,iOS 13将停止受支持,JWTDecode.swift将能够在一个次版本中移除它。
在macOS的情况下,无论实际版本号如何,每年的命名发行版都被视为此政策的主要平台版本。
反馈
我们感谢对本次仓库的反馈和贡献!在您开始之前,请查看以下内容
提出问题
要提供反馈或报告错误,请在问题跟踪器上提出问题。
漏洞报告
请勿在公开的 GitHub 问题跟踪器上报告安全漏洞。有关安全问题披露程序的详细信息,请参阅负责任公开计划。
Auth0 是一个易于实现、可定制的身份验证和授权平台。要了解更多信息,请参阅为什么选择 Auth0?
本项目受 MIT 许可协议的许可。有关更多信息,请参阅许可文件。