2021-08-08-OIDC, Oauth2.0 , SMAL 的合而不同
OIDC, Oauth2.0 , SMAL 的合而不同
名词释义
协议 | 描述 |
---|---|
SAML 2.0 | Security Assertion Markup Language |
OAuth 2.0 | Web Authorization Protocol |
OpenID Connect 1.0 | Simple identity layer on top of OAuth 2.0 |
关键角色定义比较
Role | OAuth | OIDC | SAML |
---|---|---|---|
End User | Resource Owner | End User | End User |
Application | Client | Relying Party (RP) | Service Provider (SP) |
Identity Provider | Authorization Server (AS) | OpenID Provider (OP) | Identity Provider (IDP) |
Web Browser | User-Agent | User-Agent | User-Agent |
协议流程比较
授权代码流和SAML HTTP POST绑定是各自协议中最常见的两种流。
从下图可以看出,授权代码流的步骤3有一个额外的后端请求,即令牌请求。
隐式流删除了令牌请求步骤,因此实际上与SAML HTTP POST绑定相同。
SAML工件流是SAML的一个不太为人所知的变体,它非常类似于授权代码流。
关键步骤
最终用户导航到Web应用程序的受保护资源。Web应用程序生成身份验证请求并将浏览器重定向到身份提供程序
身份提供者处理身份验证请求,然后识别用户并在将响应提交回web应用程序之前请求用户授权。
对于授权码流,Web应用程序接收一个必须交换为令牌的引用句柄。对于隐式和HTTP POST流,应用程序直接接收令牌。由于令牌是通过Web浏览器发送的,因此令牌大小通常存在技术限制。
最后,Web应用程序根据令牌表示的声明与最终用户发起经过身份验证的会话。
OAuth & OIDC 认证流
SAML HTTP POST binding
Implicit Flow 隐匿授权
SAML Artifact binding
总结
流程看起来都非常相似。然而在消息和请求格式上存在显著差异:SAML基于XML,而OAuth基于HTTP请求参数和JSON消息。
许多人认为基于XML的SAML协议,使用起来比 OAuth 更困难。幸运的是,使用 JAI 可视化的集成工具,这种差异变得无关紧要。
Protocol Flow | Implementation | Backend Request | PKCE |
---|---|---|---|
Authorization Code Flow | Required | Token Request | Yes |
SAML HTTP POST | Required | – | – |
Implicit Flow | Optional | – | – |
SAML Artifact | Optional | Artifact Resolve Request | – |
两个协议都存在相同类型的流,但是具体实现要求包含的内容有所不同。
带有PKCE的授权代码流是这些流中最安全、最通用的。PKCE实现了SAML或隐式流中不可用的安全功能。由于实现授权代码流需要所有符合OAuth和OIDC的身份提供程序,而且消息大小实际上是无限的,因此它是最好的通用替代方案。
今天就介绍到这里,下一篇介绍不同 token 的区别。www.fujieid.com
2021-08-08-OIDC, Oauth2.0 , SMAL 的合而不同相关推荐
- oauth2.0授权码_OAUTH 2.0授权码授予
oauth2.0授权码 OAuth 2.0提供了许多安全流程(或授权类型),以允许一个应用程序访问另一个应用程序中的用户数据. 在此博客中,我们将介绍OAuth 2.0授权:授权代码授权. 首先,有许 ...
- 08蚂蚁-互联网安全架构——4.OAuth2.0
基于OAuth2.0协议方式 什么是OAuth OAuth: OAuth(开放授权)是一个开放标准,允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站 ...
- 【Flutter】Flutter 开发环境搭建 ( 2021年08月25日 补充最新资料 | 最新安装教程 )
文章目录 前言 一.Android Studio 环境安装 Flutter / Dart 插件 二.Flutter SDK 下载 三.设置 Flutter 环境变量 1.设置 Flutter SDK环 ...
- 2021.04.08 线程和进程的使用
2021.04.08 线程和进程的作用 直接通过Thread创建子线程 Thread(target=需要在子线程中调用的函数,args=(函数的实参列表)) from threading import ...
- JavaScript中的ParseInt(08)和“09”返回0的原因分析及解决办法
今天在程序中出现一个bugger ,调试了好久,最后才发现,原来是这个问题. 做了一个实验: alert(parseInt("01")),当这个里面的值为01====>07时 ...
- OAuth2.0(及OIDC 1.0)选型建议及SSO、SLO方案
目录 1. 关于认证 2. OAuth 2.0 3. OIDC 1.0 4. OIDC选型建议 4.1 PKCE 5. SSO方案 5.1 SSO SPA 5.2 SSO WEB 6. SLO方案 6 ...
- Spring Security oauth2.0微信小程序登录
微信小程序前期开发准备,可以参考这篇文章微信小程序前期准备 1.学习过Spring Secrity oauth2.0的都知道,他有四种登录模式可以选择 authorization code(授权码模式 ...
- java github关联登录_没错,用三方Github做授权登录就是这么简单!(OAuth2.0实战)...
全2册git版本控制管理(第2版)+ 99.8元 包邮 (需用券) 去购买 > 本文收录在个人博客:www.chengxy-nds.top,技术资源共享. 上一篇<OAuth2.0 的四种 ...
- taobao.trades.sold.get-查询卖家已卖出的交易数据(根据创建时间),淘宝店铺卖出订单查询API接口,R2接口,oAuth2.0交易接口代码分享
一.taobao.trades.sold.get-查询卖家已卖出的交易数据(根据创建时间),淘宝店铺卖出订单查询API接口,R2接口,oAuth2.0交易接口代码分享 搜索当前会话用户作为卖家已卖出的 ...
最新文章
- Rust linux 系统接口使用
- 零基础自学python的建议-你是如何自学 Python 的?
- vs2012调试中出现char类型形参与LPCTSTR类型不匹配
- 选择结构_穿透的switch语句
- 小米6指主板图示_小米MIX2手机不开机,修过没修好,通病问题教你一坨锡就能搞定...
- 【渝粤题库】陕西师范大学200341实变函数作业(高起本、专升本)
- Qt开发技巧:编写.pro文件,在构建流程中加入命令行的方法
- HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容
- 孩子哭的时候大人应该怎么办?
- python中分支语句elif与else的区别_浅谈对python中if、elif、else的误解
- [译] 什么阻塞了 DOM?
- dubbo之SPI扩展机制注解:@Extension注解的作用
- web前端学习基础教程,简单的图片旋转木马自动轮播js代码
- Windows10搭建turn服务器
- 微软邮箱smtp服务器,微软宣布将为网页版的Outlook邮箱服务增加SMTP邮件代发(别名)功能...
- Servlet中forward和redirect的区别(转)
- Verse On-Premises 1.0.8和HCL支持、软件下载
- 1023 穷游?“穷”游?
- 爱奇艺 视频编码信息参考
- 成人潜规则100条.多学着点.未满18岁就算了.阅历不够看不懂的.