接入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。
目录
相关文章
|
存储 编解码 缓存
webgl系列之抗锯齿和深度缓存
前言 大家好我是Fly 哥, 这是今年webgl 系列的第三篇文章, 如果你之前的两篇文章没看的话,建议先看一下,然后再来看这一篇文章 Webgl 系列之buffer的使用 webgl系列之对光栅化的理解 上一篇文章,任何虚拟3维世界的转换到二维屏幕中通过「采样」 也就判断屏幕上的每个像素中心点是不是在三角形内部的得到了 下面这幅图: 图片 走样之前 这时候有同学问, 这不像三角形哇, 这个其实用个专业的词—— 「锯齿」 , 我的理解 一个三角形经过光栅化后, 得到屏幕上每一个像素点 组成的像素点的集合。那到底是经过什么样的处理得到下面这张图: 图片 final 反走样 其实出现上面
webgl系列之抗锯齿和深度缓存
|
存储 安全 Java
Spring Security与OAuth2集成开发
Spring Security与OAuth2集成开发
|
10月前
|
数据采集 算法 数据安全/隐私保护
【硬件测试】基于FPGA的4FSK调制解调通信系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文基于之前的文章《基于FPGA的4FSK调制解调系统》,增加了ILA在线数据采集模块和VIO在线SNR设置模块,实现了硬件测试版本。通过VIO设置不同SNR(如10dB和20dB),并展示了ILA采集的数据结果。四频移键控(4FSK)是一种数字调制方法,利用四个不同频率传输二进制数据,具有较高的频带利用率和抗干扰性能。输入的二进制数据分为两组,每组两个比特,对应四个频率f1、f2、f3、f4,分别代表二进制组合00、01、10、11。调制过程中选择相应频率输出,并进行幅度调制以增强抗干扰能力。接收端通过带通滤波器提取信号并还原为原始二进制数据。
270 7
|
数据采集 DataWorks 大数据
DataWorks
DataWorks
1477 5
|
前端开发 Java 数据库连接
Spring 框架:Java 开发者的春天
Spring 框架是一个功能强大的开源框架,主要用于简化 Java 企业级应用的开发,由被称为“Spring 之父”的 Rod Johnson 于 2002 年提出并创立,并由Pivotal团队维护。
743 1
Spring 框架:Java 开发者的春天
|
机器学习/深度学习 运维 安全
图神经网络在欺诈检测与蛋白质功能预测中的应用概述
金融交易网络与蛋白质结构的共同特点是它们无法通过简单的欧几里得空间模型来准确描述,而是需要复杂的图结构来捕捉实体间的交互模式。传统深度学习方法在处理这类数据时效果不佳,图神经网络(GNNs)因此成为解决此类问题的关键技术。GNNs通过消息传递机制,能有效提取图结构中的深层特征,适用于欺诈检测和蛋白质功能预测等复杂网络建模任务。
528 2
图神经网络在欺诈检测与蛋白质功能预测中的应用概述
|
存储 缓存 安全
企业出海合规:如何区分数据控制者与数据处理者
数据控制者是确定个人数据处理目的和方式的实体,负有最大责任,需保护数据主体的隐私。数据处理者是按照控制者指示处理个人数据的实体,负责数据安全和协助控制者履行职责。两者需通过明确的合同规定责任。数据控制者的职责包括确定目的、获得同意、确保安全、提供透明度、促进权利行使、进行DPIA和建立协议。数据处理者负责按指示处理数据、确保安全和保密、协助控制者、处理数据泄露通知、数据删除和遵守法律。
1191 0
|
Java Linux
springboot打包部署,分离依赖减少上传体积
springboot打包部署,分离依赖减少上传体积
554 0
|
机器学习/深度学习
时间序列预测模型分享 MLP CNN LSTM 完整代码可直接运行
时间序列预测模型分享 MLP CNN LSTM 完整代码可直接运行
449 0
|
JSON Java API
Spring Boot之Jackson快速入门,你必须得会!
在上一期《SpringBoot之Jackson配置全局时间日期格式》文中提到Jackson,了解到有很多小伙伴对它很感兴趣;顾这一期,我就重点带着大家以最基础的教学方式领大家入门,废话不多说,咱们这就开始。

热门文章

最新文章