正版全新 快速发货
¥ 51.2 4.7折 ¥ 109 全新
库存56件
作者田杰
出版社清华大学出版社
ISBN9787302658825
出版时间2024-04
装帧平装
开本其他
定价109元
货号29715510
上书时间2024-11-17
前 言
在很多成功实施了数字化转型的组织中,身份认证解决方案都占据着非常核心的地位。
在数字化的今天,我们的日常生活越来越离不开数字身份认证。从简单的登录注册到覆盖个人、组织和国家等各个层面的身份验证,数字身份认证已经成为我们与数字世界互动的重要环节。然而,数字身份认证不仅仅涉及简单的用户名和密码组合,它涵盖广泛的概念、技术和实践。通过一系列的标准身份认证协议,不同系统可以安全地开放互联,使得系统集成可以像搭建积木一样,将效率提升到更高水平,这正是身份认证协议最振奋人心的地方。
本书旨在帮助读者深入理解数字身份认证技术和实践,从概念到项目实战,为读者提供全面而深入的指南。在讲解理论的同时,我们将穿插代码案例,并使用多种编程语言(主要包括 .Net、Java和Node.js)来进行说明。我们的期望是读者不仅了解相关知识,而且能够灵活应用(甚至可以先进行应用,之后再深入理解)。本书将引导读者深入探讨数字身份认证的基础概念、认证机制和安全协议,以及各种实际应用场景和解决方案。
第1部分(第1~3章)将介绍身份认证的基础概念。
第1章将探讨什么是身份认证,以及与授权的联系与区别。深入研究身份认证的目标对象、认证方式和认证场景,旨在帮助读者建立对身份认证全貌的认识。此外,将介绍一些常用术语,如令牌与会话的选择、SAML、OAuth 2.0和OIDC等,以帮助读者理解身份认证领域的关键概念和技术。
第2章将重点介绍认证机制、安全协议和加密算法。深入探讨认证的基本原理和非对称加密在身份认证中的应用。此外,将详解JWT(JSON Web Token)结构化令牌的组成部分和防篡改技术,帮助读者理解如何保障认证过程的安全性。
第3章将介绍各种认证解决方案。探讨云解决方案和开源解决方案,包括IDaaS(Identity-as-a-Service)和一些常用的身份认证平台,如Authing、Okta、Auth0、Azure AD和AWS Cognito等。通过学习这些解决方案,读者将能够了解各种场景下的认证实践和选择。
第2部分(第4~9章)重点关注身份认证的实战应用。
第4章集中讲解纯前端应用接入身份认证的实战案例。所谓“纯”前端,是指没有后端服务器支持的前端应用。对于有后端服务器支持的前后端分离项目,我们更倾向于在专为前端设置的后端服务器(即BFF层)上接入身份认证,以此来保护前端应用。
第5章将介绍如何在前端代理服务器(Backend for Frontend,BFF)中接入身份认证。本章将会简略回顾一下BFF的发展历程,然后以Keycloak、Duende IdentityServer等身份认证服务为例详解如何使用BFF和它们进行对接。
第6章将探讨如何在后端领域服务中接入身份认证。以微服务架构为例,本章将介绍在后端领域服务中接入身份认证的方法。与前端和BFF的接入方式显著不同,前端和BFF会涉及与用户的交互,而后端服务接入身份认证服务更多的是为了保护后端服务的安全性。它偏重于和身份认证服务的交互,而不是和用户的交互。
第7章将阐述如何在已有应用中接入身份认证。在实际的工作中,除自己从零开始开发一个系统外,通常还会遇到直接使用成熟的开源系统或者购买一个商业系统并将其部署在自己的环境中,随后通过配置甚至二次开发来接入自己的用户系统。本章将通过几个实际案例,帮助读者理解如何在已有的应用中接入身份认证。
第8章将详细介绍如何接入社交账号登录。我们将以Keycloak和Duende IdentityServer为例,解释如何开发社交账号登录插件,并在本章最后提供一个通用的套路。
第9章将对第2部分的实战案例进行总结,并通过完成一个自动化测试用例来结束本部分。
第3部分(第10~17章)将探讨一些高级主题。
第10章将介绍如何在微信小程序中集成认证平台。我们将讨论微信小程序和Web相比有哪些限制,并以Authing为例介绍如何在微信小程序中接入身份认证。
第11章将讨论GraphQL。包括GraphQL的基本概念和使用方法,并基于Nest.js框架尝试开发一个GraphQL版本的OIDC认证服务。
第12章将专门讲解单点登录和用户联邦,这在多个系统之间共享用户身份信息非常重要。内容包括单点登录和用户联邦的基本概念,并提供实战案例。
第13章将专门讲解统一登出,这是单点登录的重要组成部分。在实践中仅有退出单一应用和退出所有应用两种需求,本章将分别介绍如何实现这两种需求。
第14章集中讲解对微信服务的高阶运用,包括微信公众号、微信小程序和微信开放平台。这不仅要求我们对微信服务有深入的理解,还要求我们对身份认证有深入理解。本章将以多个不同的系统为例展示如何灵活地实现扫码登录。最后还总结了通过微信服务实现微信登录的三种不同的途径。
第15章介绍多因素认证,并详细讲解常用的多因素认证的实现步骤,以阿里云的服务为例,介绍如何扩展Keycloak以在登录过程中对用户进行短信验证码的二次验证。
第16章将介绍OIDC的设备码许可模式。前面章节中讨论的登录流程主要集中在OIDC最常用的授权码许可模式上,本章将详解这方面的内容。
第17章主要介绍OIDC中的另一种许可模式—令牌交换流程。为更好理解令牌交换流程,我们将从一个更简单的NONCE模式开始,然后再介绍令牌交换流程的基本概念和使用方法。
第4部分(第18章)将讨论身份认证的未来趋势与展望。
第18章将介绍一些新兴的认证协议,如FIDO2和WebAuthn等。其中,一些技术正日趋成熟,而另一些则仍属于实验性质,但它们都具有广阔的应用前景。
通过阅读本书,读者将更深入地理解数字身份认证技术与实践。无论你是信息安全领域的专业人士,还是对数字身份认证感兴趣的读者,本书都将成为你不可或缺的指南。让我们一同踏上这个知识之旅,探索数字身份认证的精髓,开启安全数字生活的大门。
鉴于笔者水平有限,书中难免存在疏漏之处,敬请各位读者批评指正。读者可以发送电子邮件至zhenl@163.com提出意见或建议。
本书配套源码可通过微信扫描下方的二维码进行下载。如果在下载过程中遇到问题,请发送电子邮件至booksaga@126.com,并将邮件主题写为“数字身份认证技术与实践”。
最后,感谢各位读者选择本书,希望本书能对读者的学习有所助益。
笔 者
2024年2月
《数字身份认证技术与实践》内容涵盖身份认证的基础理论,包括身份认证与授权的区别、常见的认证方式以及关键技术和协议,如SAML、OAuth 2.0、OIDC等。除基础概念外,《数字身份认证技术与实践》还展示如何在不同的环境中安全地接入和实现身份认证,包括纯前端应用、BFF和后端领域服务。同时,《数字身份认证技术与实践》详细讨论如何在现有应用中集成其他身份认证系统,以及如何实现社交账号登录等功能。对于追求深入理解的读者,《数字身份认证技术与实践》还准备了一些高级主题,包括在微信小程序中集成认证平台、GraphQL中的身份认证、单点登录、统一登出、多因素认证以及OIDC的高级许可模式等内容。《数字身份认证技术与实践》不仅提供概念性的解释,还借助丰富的代码案例,使用多种编程语言(.Net、Java、Node.js)来展示身份认证技术的应用,让读者在实践中加深理解。 《数字身份认证技术与实践》是为数字化时代的软件工程师、系统架构师、信息安全专家以及对身份认证感兴趣的读者量身定制的图书。《数字身份认证技术与实践》不仅可以帮助读者建立起身份认证的知识体系,更重要的是教会读者如何在实际工作中灵活应用这些知识。如果您希望在数字身份认证领域深入发展,或者希望提升应用安全性,那么《数字身份认证技术与实践》将是您理想的选择。
田杰 复旦大学软件工程硕士,研究方向为企业信息化。曾经在 DHL、英孚教育任职,目前供职于XX集团中国数字技术部,担任资深软件工程师。对身份认证领域有着非常丰富的上手经验,在知乎等平台受到较多关注,并通过付费咨询方式帮助众多企业解决了他们面临的身份认证相关问题。
目 录
第1部分 身份认证的基础概念
第1章 什么是身份认证 2
1.1 身份认证简介以及和授权的联系与区别 3
1.1.1 身份认证简介 3
1.1.2 身份认证与授权的联系与区别 3
1.2 认证目标对象有哪些 4
1.2.1 机器认证 4
1.2.2 人类认证 6
1.3 认证场景有哪些 7
1.3.1 2A,面向API的身份认证 8
1.3.2 2B,面向企业合作伙伴的身份认证 8
1.3.3 2C,面向客户的身份认证 9
1.3.4 2D,面向开发者的身份认证 9
1.3.5 2E,面向内部员工的身份认证 9
1.4 常用术语有哪些 10
1.4.1 令牌与会话如何选择 10
1.4.2 什么是SAML、OAuth 2.0和OIDC 16
1.4.3 许可类型 21
1.4.4 访问令牌和身份令牌的区别 28
1.4.5 刷新令牌是什么 29
1.4.6 什么是单点登录 29
1.5 小结 32
第2章 认证机制与相关算法 33
2.1 认证的基本原理,怎么证明你是谁 33
2.1.1 认证的基本原理 34
2.1.2 常见的身份验证方法 34
2.2 计算机安全学基础 38
2.2.1 机密性、完整性和可用性 38
2.2.2 安全机制:哈希与加密 39
2.2.3 非对称加密在身份认证过程中的应用 40
2.3 常用的算法 42
2.3.1 SHA(重点:SHA256) 42
2.3.2 自适应单向函数 45
2.3.3 RSA 53
2.3.4 常用的签名算法 55
2.4 JWT结构化令牌详解 56
2.4.1 头部 57
2.4.2 载荷 58
2.4.3 签名 59
2.4.4 动手实验 60
2.5 小结 62
第3章 认证解决方案 63
3.1 云解决方案 63
3.1.1 IaaS、PaaS、SaaS与IDaaS 63
3.1.2 多租户的概念及其实例 64
3.1.3 IDaaS实例 65
3.2 开源解决方案 65
3.2.1 基于Java的Keycloak及其关键组件 66
3.2.2 CAS 68
3.2.3 基于.NET Core的Duende IdentityServer 69
3.2.4 基于Node.js的OIDC Server 69
3.3 小结 70
第2部分 身份认证的实战应用
第4章 纯前端应用如何接入身份认证 72
4.1 实例讲解 72
4.1.1 准备工作 72
4.1.2 实例演示 72
4.2 安全性分析及应对策略 104
4.2.1 公开客户端 104
4.2.2 关闭隐式许可流程 105
4.2.3 开启 PKCE 105
4.3 小结 106
第5章 前端代理服务器如何接入身份认证 107
5.1 BFF架构的演进回顾 107
5.1.1 单体应用架构 107
5.1.2 前后端分离架构 107
5.1.3 BFF架构 108
5.1.4 BFF架构的发展 108
5.2 BFF中的身份认证实现方式 111
5.3 BFF中的身份认证流程 111
5.4 示例代码 111
5.5 实例讲解 112
5.5.1 在Naive BFF中接入认证平台 112
5.5.2 在TMI BFF中接入认证平台 112
5.5.3 在Full BFF中接入认证平台 116
5.6 小结 119
第6章 后端领域服务如何接入身份认证 120
6.1 领域服务和BFF有什么区别 120
6.2 实例讲解 121
6.2.1 在Java Spring Boot应用中接入认证 121
6.2.2 通过Bean方式扩展Spring应用 131
6.2.3 不使用spring-boot-starter-oauth2-resource-server 137
6.3 小结 144
第7章 成熟的产品如何接入身份认证 145
7.1 在自托管GitLab实例中集成Keycloak登录 145
7.1.1 步骤详解 145
7.1.2 测试登录 153
7.1.3 总结 154
7.2 Keycloak互相集成 154
7.2.1 在线演示 154
7.2.2 单点登录 156
7.2.3 集成步骤 159
7.3 用OIDC方式在Keycloak中集成阿里云登录方式 163
7.3.1 最终效果体验 163
7.3.2 在阿里云RAM访问控制台的OAuth应用中创建应用 164
7.3.3 在Keycloak中添加Identity Provider 165
7.3.4 在阿里云控制台回填回调地址 168
7.3.5 在阿里云身份管理工作台创建用户 168
7.3.6 在Keycloak中给Identity Provider增加Mappers 169
7.3.7 在Keycloak中给Client scopes增加Mappers 170
7.3.8 定制用户完善资料页面 172
7.3.9 邮箱验证 174
7.4 小结 176
第8章 社交登录实战 177
8.1 在Keycloak中集成GitHub登录 177
8.1.1 注册应用 178
8.1.2 添加GitHub提供者 178
8.1.3 验证 180
8.2 在IdentityServer中添加GitHub登录 181
8.2.1 线上体验 181
8.2.2 准备工作 182
8.2.3 核心代码 183
8.3 在Duende IdentityServer中集成Epic Games登录 184
8.3.1 效果演示 185
8.3.2 配置 186
8.3.3 将域名添加到组织中 187
8.3.4 概念 188
8.3.5 创建产品 188
8.3.6 创建客户端 188
8.3.7 记下客户端凭据 188
8.3.8 添加回调地址 189
8.3.9 创建应用 189
8.3.10 关联客户端 190
8.3.11 填写法律必需的URL 190
8.3.12 Epic Games的OIDC端点 191
8.3.13 授权 192
8.3.14 获取令牌 192
8.3.15 典型的响应 192
8.3.16 代码实现 193
8.3.17 完成 197
8.4 三步开发社交账号登录 197
8.4.1 不要自行实现 197
8.4.2 自行实现的一般套路 198
8.4.3 在Keycloak中开发钉钉登录插件 198
8.5 小结 202
第9章 本部分的总结回顾 203
9.1 对接身份认证的一般套路 203
9.1.1 在身份认证平台注册应用 203
9.1.2 在应用中配置身份认证平台的信息 203
9.1.3 构造OIDC授权请求 204
9.1.4 构造OIDC Token请求 205
9.1.5 使用OIDC Token请求OIDC用户信息 206
9.1.6 调用退出端点 206
9.1.7 相关故障排除指引 207
9.2 以Keycloak为例做个梳理 209
9.2.1 涉及的请求端点 209
9.2.2 流程图概览 210
9.2.3 步骤详解 210
9.3 以一个集成测试结束 214
9.3.1 添加测试工程 216
9.3.2 添加测试类 217
9.3.3 配置发现 217
9.3.4 登录授权 218
9.3.5 处理回调以及提取授权码 219
9.3.6 请求令牌 220
9.3.7 请求用户信息 220
9.3.8 总结 220
第3部分 高级主题
第10章 如何在微信小程序中集成认证平台 222
10.1 和Web相比,微信小程序有哪些限制 222
10.2 Web View如何安全地取得小程序的原生身份信息 228
10.3 个人版小程序如何对接身份认证平台 233
10.4 小结 237
第11章 GraphQL身份认证 238
11.1 GraphQL简介 238
11.2 在GraphQL中如何实现身份认证 241
11.3 小结 258
第12章 如何实现单点登录和用户联邦 259
12.1 用户连接与用户联邦 260
12.2 单点登录实战 264
12.2.1 使用Keycloak打造多个系统间的单点登录体验 264
12.2.2 在Strapi中接入单点登录 268
12.3 用户联邦实战 275
12.3.1 在Keycloak中联邦LDAP用户源 275
12.3.2 基于Keycloak实现自定义的联邦源 291
12.4 在Duende IdentityServer中实现用户联邦 296
12.5 小结 300
第13章 如何实现统一登出 301
13.1 仅退出当前应用 301
13.2 退出当前应用和登录平台 302
13.2.1 前通道 303
13.2.2 后通道 303
13.3 小结 305
第14章 灵活实现扫码登录 306
14.1 基于Spring Security实现公众号关注即登录 306
14.1.1 背景和价值 306
14.1.2 Java Spring-Security 307
14.1.3 Open API 307
14.1.4 关注公众号即登录的流程设计 307
14.1.5 应用架构设计 310
14.1.6 API First开发方式 311
14.1.7 基于Spring Security实现关注微信公众号即登录 311
14.1.8 总结 324
14.2 基于Keycloak的关注微信公众号即登录方案 324
14.2.1 好处 325
14.2.2 实现效果预览 325
14.2.3 基于Keycloak的关注微信公众号即登录方案的实施架构 326
14.2.4 具体设计与实现 327
14.2.5 总结 334
14.3 基于Authing.cn的关注微信公众号即登录的实现方案 334
— 没有更多了 —
以下为对购买帮助不大的评价