OAuth 2.0 与 OpenID Connect

在现代身份认证与授权体系中,OAuth 2.0 和 OpenID Connect(OIDC) 经常被一起提及,但它们解决的是不同层面的问题。理解两者的区别和协作关系,是构建安全、标准的身份系统的关键。 是什么? OAuth 2.0 不是身份验证协议,而是一个授权框架,允许第三方应用在用户授权下访问受保护资源,而无需获取用户密码。 OpenID Connect(OIDC)是一种基于OAuth 2.0协议构建的‌身份认证标准‌,旨在为现代应用程序提供简单、安全且可互操作的用户身份验证方式。它通过在OAuth 2.0的授权框架之上添加一个身份层,解决了OAuth 2.0本身不完善的身份认证问题。 重要区分: OAuth 2.0 = 授权 OpenID Connect = 身份认证+授权 OAuth2.0授权流程 OAuth2 定义了好几种授权模式,有Authorization Code、Client Credentials、Device Code、Implicit Flow和Password Credentials,隐式流和密码凭据模式被认为是不安全的,不推荐使用。 核心角色: 角色 描述 Resource Owner(资源所有者) 通常是用户自己 Client(客户端) 请求访问用户资源的应用(Web、移动、单页应用SPA 等) Authorization Server(授权服务器) 颁发令牌(如 Casdoor、Keycloak、Google OAuth) Resource Server(资源服务器) 托管用户数据(如 API 服务),接受并验证访问令牌,以确定请求是否合法 授权码模式(Authorization Code Flow) 适用于:服务器端 Web 应用、移动 App、单页应用SPA(配合 PKCE 使用) sequenceDiagram participant User as 用户 participant Client as 客户端 participant AS as 授权服务器 participant RS as 资源服务器 User->>Client: 访问应用 Client-->>User: 重定向至授权服务器<br>(client_id, redirect_uri, scope, state, code_challenge) User->>AS: 登录并同意授权 AS-->>User: 重定向回客户端<br>(?code=xxx&state=yyy) User->>Client: 浏览器携带授权码 Client->>AS: POST /token<br>(code, client_id, client_secret*, code_verifier) AS-->>Client: 返回 access_token (+ refresh_token) Client->>RS: GET /api/data<br>Authorization: Bearer <access_token> RS-->>Client: 返回受保护资源 流程 ...

June 15, 2024 · 3 min · 607 words · erpan

vim 常用操作及配置

vim常用操作汇总 光标移动 上下左右 k/j/h/l 行首 0 或者 ^ 行尾 $ 单词和字符串间移动 指令 动作 w/W 正向移动到下一个单词开头,大写的忽略特殊字符、符号等 b/B 和w相对应的反向移动,移动到上一个单词开头 e/E 正向移动到下一个单词结尾 ge 反向移动 {num+} f/F+空格 正向/反向移动到本行空格的地方,num相当于移动几次 跳转 指令 动作 ctrl+f 向下翻页 ctrl+b 向上翻页 ctrl+d/u 向下/向上翻半页 gg 文件行首 G 最后一行 行号+gg/G 都是跳到指定行号的行 g+ctrl+g/G 查看光标位置,输出包含行、列、词、字节位置 缩进操作符 指令 动作 » 和 « 或者 :> 和 :< 当前行右缩进和左缩进,后者命令行模式 :line_num1,line_num1+x> 或者 :line_num>x 命令行模式,批量缩进,缩进x行 复制粘贴 复制剪贴内容存于寄存器, :reg可以查看寄存器内容 指令 动作 yy / 8yy 复制/8行 dd / 8dd 剪贴/8行 p/P 粘贴到光标前/后 u 撤销 ctrl+r 重做 yw 复制当前光标单词 y8w / y8W 复制含当前光标的正向8个单词,大写W的含义和W移动含义相同(忽略一些符号) x/4x/X 剪贴单个字符/4个字符,大写就是反向 d{w/h/j/k/l} 可以各种组合 d$/D 删除光标到行尾 d^ 删除光标到行首 插入、查找、替换 插入 指令 动作 I/A i/a 行首、行尾插入,向前向后插入 o/O 下一行、上一行插入 num + (i/I/A/a/o/O) 多次插入,即重复插入多个字符或者多行 转换 指令 动作 ~ 单个字符大小写转换 g~w 单词大小写反转 g~$ 或 g~~ 整行大小写反转 gU或gu + 回车 整行转大写或小写 gU/uw 单词转大写或小写,转换光标到词尾的部分 ’.’:点操作符表示重复上一次操作 ...

June 20, 2019 · 4 min · 704 words · erpan