没有合适的资源?快使用搜索试试~ 我知道了~
jwt-handbook.pdf
5星 · 超过95%的资源 需积分: 10 44 下载量 146 浏览量
2018-01-21
14:20:42
上传
评论 1
收藏 1.28MB PDF 举报
温馨提示
试读
96页
son web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。
资源推荐
资源详情
资源评论
The JWT Handbook
Sebastián E. Peyrott, Auth0 Inc.
Version 0.12.0, 2016-2017
Contents
Special Thanks 4
1 Introduction 5
1.1 What is a JSON Web Token? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2 What problem does it solve? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3 A little bit of history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2 Practical Applications 8
2.1 Client-side/Stateless Sessions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.1.1 Security Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.1.1 Signature Stripping . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.1.2 Cross-Site Request Forgery (CSRF) . . . . . . . . . . . . . . . . . . 10
2.1.1.3 Cross-Site Scripting (XSS) . . . . . . . . . . . . . . . . . . . . . . . 11
2.1.2 Are Client-Side Sessions Useful? . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.1.3 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2 Federated Identity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.2.1 Access and Refresh Tokens . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.2.2 JWTs and OAuth2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.2.3 JWTs and OpenID Connect . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.2.3.1 OpenID Connect Flows and JWTs . . . . . . . . . . . . . . . . . . . 20
2.2.4 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.2.4.1 Setting up Auth0 Lock for Node.js Applications . . . . . . . . . . . 21
3 JSON Web Tokens in Detail 23
3.1 The Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.2 The Payload . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.2.1 Registered Claims . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.2.2 Public and Private Claims . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.3 Unsecured JWTs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.4 Creating an Unsecured JWT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.4.1 Sample Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.5 Parsing an Unsecured JWT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.5.1 Sample Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
1
4 JSON Web Signatures 30
4.1 Structure of a Signed JWT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.1.1 Algorithm Overview for Compact Serialization . . . . . . . . . . . . . . . . . 32
4.1.2 Practical Aspects of Signing Algorithms . . . . . . . . . . . . . . . . . . . . . 33
4.1.3 JWS Header Claims . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.1.4 JWS JSON Serialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.1.4.1 Flattened JWS JSON Serialization . . . . . . . . . . . . . . . . . . . 38
4.2 Signing and Validating Tokens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.2.1 HS256: HMAC + SHA-256 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.2.2 RS256: RSASSA + SHA256 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.2.3 ES256: ECDSA using P-256 and SHA-256 . . . . . . . . . . . . . . . . . . . . 40
5 JSON Web Encryption (JWE) 41
5.1 Structure of an Encrypted JWT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.1.1 Key Encryption Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.1.1.1 Key Management Modes . . . . . . . . . . . . . . . . . . . . . . . . 46
5.1.1.2 Content Encryption Key (CEK) and JWE Encryption Key . . . . . 47
5.1.2 Content Encryption Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.1.3 The Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.1.4 Algorithm Overview for Compact Serialization . . . . . . . . . . . . . . . . . 49
5.1.5 JWE JSON Serialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.1.5.1 Flattened JWE JSON Serialization . . . . . . . . . . . . . . . . . . 52
5.2 Encrypting and Decrypting Tokens . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.2.1 Introduction: Managing Keys with node-jose . . . . . . . . . . . . . . . . . . 52
5.2.2 AES-128 Key Wrap (Key) + AES-128 GCM (Content) . . . . . . . . . . . . 54
5.2.3 RSAES-OAEP (Key) + AES-128 CBC + SHA-256 (Content) . . . . . . . . . 54
5.2.4 ECDH-ES P-256 (Key) + AES-128 GCM (Content) . . . . . . . . . . . . . . 55
5.2.5 Nested JWT: ECDSA using P-256 and SHA-256 (Signature) + RSAES-
OAEP (Encrypted Key) + AES-128 CBC + SHA-256 (Encrypted Content) . 55
5.2.6 Decryption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
6 JSON Web Keys (JWK) 58
6.1 Structure of a JSON Web Key . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
6.1.1 JSON Web Key Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
7 JSON Web Algorithms 61
7.1 General Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
7.1.1 Base64 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
7.1.1.1 Base64-URL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
7.1.1.2 Sample Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
7.1.2 SHA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
7.2 Signing Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
7.2.1 HMAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
7.2.1.1 HMAC + SHA256 (HS256) . . . . . . . . . . . . . . . . . . . . . . . 71
7.2.2 RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
7.2.2.1 Choosing e, d and n . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
7.2.2.2 Basic Signing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
2
7.2.2.3 RS256: RSASSA PKCS1 v1.5 using SHA-256 . . . . . . . . . . . . . 76
7.2.2.3.1 Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
7.2.2.3.1.1 EMSA-PKCS1-v1_5 primitive . . . . . . . . . . . . 78
7.2.2.3.1.2 OS2IP primitive . . . . . . . . . . . . . . . . . . . . 79
7.2.2.3.1.3 RSASP1 primitive . . . . . . . . . . . . . . . . . . . 79
7.2.2.3.1.4 RSAVP1 primitive . . . . . . . . . . . . . . . . . . . 80
7.2.2.3.1.5 I2OSP primitive . . . . . . . . . . . . . . . . . . . . 80
7.2.2.3.2 Sample code . . . . . . . . . . . . . . . . . . . . . . . . . . 81
7.2.2.4 PS256: RSASSA-PSS using SHA-256 and MGF1 with SHA-256 . . 86
7.2.2.4.1 Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
7.2.2.4.1.1 MGF1: the mask generation function . . . . . . . . 87
7.2.2.4.1.2 EMSA-PSS-ENCODE primitive . . . . . . . . . . . 88
7.2.2.4.1.3 EMSA-PSS-VERIFY primitive . . . . . . . . . . . . 89
7.2.2.4.2 Sample code . . . . . . . . . . . . . . . . . . . . . . . . . . 91
7.3 Future Updates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
3
剩余95页未读,继续阅读
资源评论
- 洞庭秋波2019-07-19挺不错的参考资料
- Mr_Lc2018-06-27英文的,可借鉴!
- chx_man2018-05-09正好用到JWT
- aguncn2018-05-04这个资源不错,对我现在的工作很重要哈, 感谢
lichunyuan12
- 粉丝: 0
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功