接入OAuth2

简介: 接入OAuth2

OAuth2.0知识总结

  1. OAuth 2.0是一种授权协议,核心是获取和使用访问令牌。
  2. 授权码许可流程需要引入授权码,既保证安全又实现用户体验。
  3. OAuth 2.0也可视为一种委托协议,用户委托第三方软件代表操作。
  4. 授权码许可流程是OAuth 2.0中最完备、安全的授权方式。
  5. 使用不当会引发安全问题,需要遵守各项规范细节。
  6. 需要使用HTTPS保证通信安全。
  7. JWT不是OAuth 2.0的组成部分,是对其的扩展。
  8. OAuth 2.0提供框架,OIDC在其上实现身份认证。
  9. 第三方软件和平台方都需提高安全意识,保障OAuth 2.0安全。
  10. OAuth 2.0是解决授权和身份认证问题的有效工具。

移动APP接入OAuth2

移动App使用OAuth 2.0的要点总结如下:

  1. 移动App可分为无服务端和有服务端两类,后者使用OAuth 2.0更安全。
  2. 无服务端App可以用PKCE协议防止授权码泄露,但不建议 敏感信息如app_secret。
  3. 有服务端App可以通过服务端获取访问令牌,与Web应用流程类似,安全性高。
  4. 微信等平台都建议移动App使用后台服务获取访问令牌。
  5. 使用微信登录等第三方登录时,App获取授权码,服务端使用code和app_secret获取访问令牌。
  6. 不建议在App端保存敏感信息,使用服务端可以避免安全问题。
  7. PKCE协议可在一定程度上保障无服务端App的安全性。
  8. 建议移动App尽可能使用服务端和后台通信获取访问令牌。
  9. OAuth 2.0核心思想可应用到App中,通过安全使用保障数据安全。

安全风险和防范措施

OAuth 2.0的安全风险及防范措施可以概括以下几点:

  1. CSRF攻击可以通过状态参数state进行防范。
  2. XSS攻击需要对响应内容进行转义处理防止注入恶意代码。
  3. 水平越权需要校验数据归属关系,避免不同用户的数据混淆。
  4. 授权码失窃需要校验app_id并立即作废使用过的授权码。
  5. 重定向URI篡改需要对URI做完整性校验。
  6. 需要遵守OAuth 2.0各项规范细节以保障安全。
  7. 开发人员安全意识不够是导致这些漏洞的常见原因。
  8. 从攻击方考虑也有助于发现更多风险因素。
  9. OAuth 2.0也面临互联网中的通用安全风险。
  10. 安全防范需要全面考虑各种可能的攻击场景。

利用OAuth2 实现OIDC

使用OAuth 2.0实现OIDC可以概括以下要点:

  1. OIDC是一种开放的用户身份认证标准协议,是在OAuth 2.0的基础上构建的。
  2. OIDC新增了ID令牌,用于传递用户标识信息,第三方软件可以用它记录用户登录状态。
  3. OIDC还新增了UserInfo端点,用于第三方软件获取更多用户信息。
  4. ID令牌是一个JWT格式的令牌,包含iss、sub、aud、exp等必要声明信息。
  5. 第三方软件只需解析ID令牌的payload部分,获取用户标识等信息。
  6. 单点登录就是OIDC协议的一种应用场景。
  7. OAuth 2.0提供基础的授权框架,OIDC在其上实现身份认证。
  8. 实现OIDC需要注意ID令牌的安全性、UserInfo信息获取等。
  9. OIDC提供了一个标准的身份认证解决方案。

Spring Security 实现OAuth 2.0

使用 Spring Security 实现 OAuth 2.0 的要点:

  1. 授权服务器使用 JdbcAuthorizationCodeServices 存储授权码,JwtTokenStore 存储 JWT 令牌。
  2. 资源服务器通过本地公钥验证 JWT 令牌,并校验权限。
  3. 支持资源拥有者凭据许可、客户端凭据许可、授权码许可三种模式。
  4. 可以增加 TokenEnhancer 向 JWT 令牌中添加额外信息。
  5. 通过授权码许可实现单点登录,OAuth2RestTemplate 调用资源服务器。
  6. 客户端需要配置客户端信息、令牌端点、授权端点、重定向URI等。
  7. 安全配置需要开放登录页、授权页的访问权限。
  8. 注意使用 HTTPS 传输令牌,避免 CSRF 攻击等安全风险。
  9. Spring Security OAuth 2.0 使用简单,但需要理解工作流程。

基于OAuth2的微服务架构

使用OAuth 2.0/JWT的微服务参考架构要点:

  1. 微服务可以分为5层:流量入口层、Web应用层、网关层、BFF层和领域服务层。
  2. 网关层承担关键的安全功能:校验和转换OAuth访问令牌,以及基于Scope鉴权。
  3. 典型的应用场景包括:第一方Web应用、第一方移动应用、第三方Web应用。
  4. IDP服务负责OAuth协议处理、令牌管理、用户认证。
  5. 前端通过OAuth访问令牌认证,后端通过包含用户信息的JWT令牌认证。
  6. 网关在两种令牌之间转换,实现混合使用。
  7. 与传统Web应用不同,微服务强调服务自治、弹性伸缩、无状态。
  8. 微服务安全力求零认证、细粒度鉴权、无状态会话。
  9. 理解微服务安全机制有助于部署运维OAuth 2.0。

开放平台如何使用Oauth2

  • 开放平台体系的整体结构:
  • 第三方软件:第三方开发者或者 ISV 通过对接开放平台来实现的应用软件。
  • 开放平台:包含 API 网关服务、OAuth 2.0 授权服务和第三方软件开发者中心服务。
  • 受保护资源服务:开放平台提供的 API 服务,需要经过 OAuth 2.0 授权才能被访问。
  • 各大开放平台的授权流程:
  • 推荐使用授权码许可流程。
  • 微信、支付宝、美团等开放平台的授权流程图中都有授权码 code 相关的文字。
  • 授权码流程中的参数说明:
  • 重定向过程用到的参数:response_type、client_id、redirect_uri。
  • 授权端点响应小兔软件用到的参数:code、state。
  • 申请访问令牌需要传递的基本参数:grant_type、client_id、client_secret、code。
  • 令牌端点响应小兔软件涉及的参数:access_token、token_type、expires_in、refresh_token、scope。
目录
相关文章
|
4月前
|
人工智能 Go 开发工具
不改一行代码,看透 AI Agent 的每一次调用
OBI 基于 Linux 内核 eBPF 技术,无需修改业务代码,自动拦截并解析所有 AI 相关 HTTP 流量——覆盖 LLM、Embedding、向量检索、Rerank 及 MCP 工具调用,输出符合 GenAI 语义约定的标准 Trace 与 Metrics,实现 AI Agent 全链路无侵入可观测。
488 32
|
8月前
|
存储 算法 JavaScript
OAuth2协议与微信扫码登录实战
本文介绍了OAuth2协议及其在微信扫码登录中的应用实现。OAuth2是一种开放、安全的授权标准,支持授权码、密码等多种模式,其中授权码模式被微信扫码登录采用。文章详细解析了微信扫码登录流程:用户扫码授权→获取授权码→换取令牌→获取用户信息→完成登录。技术实现方面,使用JWT令牌解决认证服务与资源服务间的校验问题,并提供了完整的后端接口设计(包括获取授权URL、处理回调等)和前端测试页面代码。系统通过网关进行统一认证,各微服务自行处理授权,确保安全性的同时提高性能。整体方案实现了基于OAuth2协议的无缝第
1109 1
|
2月前
|
人工智能 安全 JavaScript
DeepSeek Harness开源Agent运行框架实战:4种安装方式、WebUI启动、插件管理与排坑全流程
随着AI Agent技术快速发展,单纯依靠大模型对话能力,很难完成复杂的自动化任务。模型需要具备读取本地文件、执行脚本、访问网页、操作文件系统、拆分复杂任务并分步执行的能力。DeepSeek Harness,简称DSH,是开源的AI Agent执行运行框架,遵循“Agent = 大模型 + Harness执行底座”的设计理念,为大模型提供一套安全可控的工具调用、任务编排、沙箱执行与插件扩展能力。它提供Web可视化界面与完整命令行工具,支持插件化扩展,能够让大模型自主拆解复杂需求,调用各类工具分步完成目标,无论是本地电脑调试,还是部署在云服务器上长期运行智能体任务都十分合适。本文为从0到1完整保
3394 3
|
人工智能 安全 Cloud Native
Nacos 3.0 架构升级,AI 时代更安全的 Registry
随着Nacos3.0的发布,定位由“更易于构建云原生应用的动态服务发现、配置管理和服务管理平台”升级至“ 一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台 ”。
remote: HTTP Basic: Access denied. The provided password or token is incorrect or your account has 2
remote: HTTP Basic: Access denied. The provided password or token is incorrect or your account has 2
5992 0
|
消息中间件 数据可视化 RocketMQ
可视化生成RocketMQ配置工具
RocketMQ配置复杂?试试这款可视化工具,轻松搞定配置难题,点击体验:https://how-to-config-rocketmq.demoworld.tech/
741 6
|
12月前
|
存储 安全 API
微服务安全之 OAuth2 协议深度解析:从原理到实战落地
本文深入解析OAuth2协议在微服务安全中的应用,涵盖核心概念、四种授权模式(授权码、简化、密码、客户端凭证)、令牌机制(JWT结构、存储管理)、资源服务器实现及安全最佳实践,结合Spring Security实战代码,助力开发者构建安全可靠的系统。
1449 5
|
Linux Docker 异构计算
基于Dify +Ollama+ Qwen2 完成本地 LLM 大模型应用实战
尼恩,一位拥有40年经验的老架构师,通过其丰富的行业经验和深入的技术研究,为读者提供了一套系统化、全面化的LLM大模型学习圣经。这套学习资料不仅帮助许多从业者成功转型,还助力多位工程师获得了高薪工作机会。
|
网络协议 定位技术 Windows
Windows Server 2019 DNS服务器搭建
Windows Server 2019 DNS服务器搭建
1179 1