OIDC1-基础概念

1.OIDC简介

1.1.什么是OIDC

OpenID Connect(OIDC 是一种基于 OAuth 2.0 的身份验证协议,用于验证用户身份并获取基本的用户信息。它将 OAuth 2.0 的授权能力扩展到了身份验证,主要用于实现单点登录(SSO)。

1.2. OIDC 与 OAuth 2.0 的关系

         OAuth 2.0 是一个授权框架,允许应用程序以安全的方式代表用户访问资源。

         OIDC 基于 OAuth 2.0,在此基础上增加了 身份验证(Authentication,通过 ID Token 让客户端获取用户身份信息。

         主要区别:OAuth 2.0 主要用于授权访问用户资源,而 OIDC 则专注于身份验证,确保用户身份的真实性。

1.3.身份提供者(IdP)

         身份提供者(Identity Provider, IdP 是负责验证用户身份并颁发 ID Token的实体,常见的身份提供者有 Google、Facebook、Microsoft等。

         身份提供者的职责是通过用户的登录凭据(例如用户名和密码)进行验证,并向客户端返回用户的身份信息。

1.4. ID Token

         ID Token 是 OIDC 的核心,它是一个用于携带用户身份信息的令牌,通常采用 JWTJSON Web Token 格式。

         ID Token 包含用户的身份声明(如用户名、邮箱、用户ID),以及 Token 的元数据(如签发时间、有效期等)。

1.5. Access Token(访问令牌)

         Access Token 是用于 OAuth 2.0 的授权令牌,允许客户端访问受保护的资源服务器(例如用户的个人信息、文件等)。

         OIDC 中虽然主要涉及身份验证,但 Access Token 仍然用于资源访问授权。

1.6. OAuth 2.0 授权流程

         授权码流程(Authorization Code Flow:用户通过身份提供者进行身份验证后,返回授权码。客户端使用授权码换取 Access Token 和 ID Token。

         隐式流程(Implicit Flow:用户直接获取 ID Token 和 Access Token,而不经过授权码阶段,适用于前端应用。

         混合流程(Hybrid Flow:结合授权码和隐式流程的特点,适用于需要更多灵活性和安全性的场景。

1.7. JWT(JSON Web Token)

         JWT 是 OIDC 中常用的格式,用于编码 ID Token 和 Access Token。它由三个部分组成:Header(头部)Payload(载荷)、和 Signature(签名)

         通过 JWT,客户端可以解码用户身份信息,并验证 Token 是否由身份提供者合法签发。

1.8.用户声明(Claims)

         Claims 是 ID Token 中携带的用户信息,比如用户ID、邮箱、登录时间等。

         Claims 分为两类:标准声明(Standard Claims自定义声明(Custom Claims,前者是 OIDC 规范中定义的通用用户属性,后者由身份提供者或客户端自定义。

1.9. 单点登录(SSO)

         SSOSingle Sign-On 是 OIDC 的一个常见应用场景,允许用户通过一次身份验证即可访问多个应用或系统,而无需重复登录。

         OIDC 通过 ID Token 使得不同的应用共享用户的身份认证信息,提供无缝的用户体验。

1.10.授权服务器(Authorization Server)

         授权服务器是负责处理用户的身份验证和授权请求的服务器。

         授权服务器发放ID Token 和 Access Token,确保客户端能够验证用户身份和获取授权访问的资源。

2. OIDC 和 OAuth 2.0 的关系

         OpenID ConnectOIDC 是一个基于 OAuth 2.0 协议的身份认证协议,允许应用程序通过身份提供者验证用户身份,并获取基本的用户信息(如用户名、电子邮箱等)。OIDC 主要用于单点登录(SSO)和身份验证,帮助应用程序无需直接处理用户凭据(例如用户名和密码),而是通过可信的身份提供者(如Google、Facebook等)完成身份验证。

         OIDC 的核心目标 是在保持 OAuth 2.0 授权机制的基础上,增加身份验证能力,让客户端不仅能获得访问资源的授权,还能获取并验证用户的身份信息。

         OAuth 2.0 是一个授权框架,允许用户授权第三方应用访问其资源(如个人文件、照片、联系人等),而无需向第三方应用提供实际的凭据(如用户名和密码)。它的核心目的是解决授权问题,而非身份验证。OAuth 2.0 中最常见的令牌是 Access Token,用于授权客户端访问用户的资源。

         OIDC 在 OAuth 2.0 的基础上增加了身份验证层,解决了“谁是用户?”的问题。它引入了 ID Token,这是一种安全的、可验证的令牌,包含用户的身份信息(如用户名、邮箱、登录时间等)。OIDC 的关键点是让客户端能够通过第三方身份提供者验证用户身份,同时保持 OAuth 2.0 授权流程的简洁和安全性。

3. OIDC 与 OAuth 2.0 的主要区别

3.1.目的不同

         OAuth 2.0:解决 授权 问题,允许应用获取访问用户资源的权限(如访问用户的文件、照片等)。

         OIDC:解决 身份验证 问题,确保应用可以安全地验证用户身份。

3.2.令牌类型不同

         OAuth 2.0:使用 Access Token 来授权客户端访问资源服务器,Access Token 中不包含用户身份信息。

         OIDC:引入了 ID Token,用于向客户端证明用户身份,ID Token 中包含用户的身份声明(如用户名、邮箱等)。

3.3.工作流程

         在 OAuth 2.0 中,客户端通过授权服务器获取 Access Token,然后使用 Access Token 访问资源服务器中的受保护资源。

         在 OIDC 中,客户端除了获取 Access Token 之外,还会获取一个 ID Token,用于验证用户身份。

3.4.用户信息传递

         OAuth 2.0 中无法直接获取用户身份信息(只能访问资源服务器的授权资源)。

         OIDC 则通过 ID TokenUserInfo Endpoint 返回用户的身份信息。

4.OIDC 如何增强 OAuth 2.0

         OIDC 使用 OAuth 2.0 作为授权框架,但在此基础上引入身份验证功能,允许客户端验证用户身份,并获取用户的基本信息。这使得 OIDC 能够在授权之外,为 Web 应用、移动应用以及 API 提供统一的身份认证方式。

5.以下是一些有用的OIDC工具和资源

Auth0:提供了全托管的身份验证和授权服务,支持OIDC和OAuth 2.0,适用于多种应用场景和语言。

Keycloak:一个开源的身份和访问管理解决方案,支持OIDC以及其他标准协议,可用于企业级和开发者使用。

Okta:提供了强大的身份验证和用户管理服务,支持OIDC以及其他标准协议,适合企业和开发人员使用。

IdentityServer:一个开源的身份和访问控制解决方案,支持OIDC和OAuth 2.0,广泛应用于.NET和ASP.NET应用程序。

Google Identity Platform:Google提供的身份验证解决方案,支持OIDC和OAuth 2.0,适用于集成Google账号登录的应用程序。

OAuth.com:提供了关于OIDC和OAuth 2.0的详细文档和指南,适合开发者学习和实施这些协议。

OIDC Debugger:一个在线工具,用于调试OIDC流程,可以帮助开发者理解和调试OIDC协议中的各个步骤和参数。

https://zq99299.github.io/note-book/oath2/02/05.html#%E9%A1%B9%E7%9B%AE%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9C

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1543942.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

XSS闯关小游戏(前13关)

挖掘思路 1.存在可控参数 2.页面存在回显 3.使用带有特殊字符的语句去测试&#xff0c;网站是否进行了实例化 ( 例如 ">123 ) 4.构造闭合&#xff0c;实现payload的逃逸 1 name处参数可控&#xff0c;直接打即可 2 这里知道<>被实体编码了 再测试">1…

DANN GRL

域自适应是指在目标域与源域的数据分布不同但任务相同下的迁移学习&#xff0c;从而将模型在源域上的良好性能迁移到目标域上&#xff0c;极大地缓解目标域标签缺失严重导致模型性能受损的问题。 介绍一篇经典工作 DANN &#xff1a; 模型结构 在训练阶段需要预测如下两个任务…

langchain的构成

1.简介 langchain的构成其包含langchain-core,langchain-community,langchain,langgraph,langserve,langSmith。 2&#xff0c;构件的详解 ‌LangChain Core‌ ‌LangChain Core‌是LangChain框架的核心组成部分&#xff0c;它包含了不同组件的基本抽象以及将它们组合在一起…

【每天学个新注解】Day 4 Lombok注解简解(三)—@NonNull

我们在之前的三天学了Lombok常用的注解&#xff1a; 【每天学个新注解】Day 1 Lombok注解简解&#xff08;〇&#xff09;—Getter、Setter、ToString、EqualsAndHashCode、Constructor 【每天学个新注解】Day 2 Lombok注解简解&#xff08;一&#xff09;—Data、Build、Value…

Kubernetes调度单位Pod

Kubernetes调度单位Pod 1 Pod简介 不直接操作容器container。 一个 pod 可包含一或多个容器&#xff08;container&#xff09;&#xff0c;它们共享一个 namespace&#xff08;用户&#xff0c;网络&#xff0c;存储等&#xff09;&#xff0c;其中进程之间通过 localhost 本地…

iOS 巨魔技巧:一键汉化巨魔商店

嘿&#xff0c;这是黑猫。iOS 巨魔商店一直都有个严重的问题&#xff1a;界面纯英文&#xff0c;不支持简体中文。 当然了&#xff0c;在IT行业&#xff0c;英语是通用语言。但是&#xff0c;既然巨魔/越狱面向普罗大众的技术&#xff0c;那么做好语言适配&#xff0c;还是很关…

idea插件开发系列1-环境搭建

前言 还记着10多年前有幸接触了eclipse插件开发&#xff0c;10多年后的今天有开发了idea的插件&#xff0c;真是一个轮回&#xff01; 为什么要学习idea插件开发呢&#xff1f; 目前公司使用自己的MVC框架&#xff0c;没有相应的idea插件支持&#xff08;如类似mybatis插件可…

Redis简单介绍与安装应用

在当今的互联网时代&#xff0c;数据的快速存取和处理变得至关重要。Redis&#xff0c;作为一种高性能的键值存储系统&#xff0c;已经成为许多开发者和企业的首选。本文将简要介绍Redis的基本概念、工作原理以及其在实际应用中的一些典型用例。 一、简介 1&#xff09;概念 …

centos7 docker部署nacos

1. 一行代码安装git yum -y install git 2. 下载最新版nacos源码&#xff1a; git clone https://github.com/nacos-group/nacos-docker.git 进入nacos-docker文件 cd nacos-docker 3.docker安装数据库Mysql8 按这个来就行&#xff0c;非常好 Docker安装mysql8-超详细、每…

记某学校小程序漏洞挖掘

前言&#xff1a; 遇到一个学校小程序的站点&#xff0c;只在前端登录口做了校验&#xff0c;后端没有任何校验&#xff0c;奇葩弱口令离谱进去&#xff0c;站点里面越权泄露敏感信息&#xff0c;接管账号等漏洞&#xff01;&#xff01;&#xff01; 渗透思路 1.绕过前端 …

docker 创建showdoc服务 showdoc容器部署教程

1. 下载最新版本镜像 # 按照最新版本 docker pull star7th/showdoc 2. 创建映射文件夹&#xff1a; # 创建文件夹 mkdir -p /data/showdoc_data# 可写权限 chmod 777 /data/showdoc_data 3.创建容器命令&#xff1a; docker run -d --name showdoc --userroot --privileged…

DoppelGanger++:面向数据库重放的快速依赖关系图生成

doi&#xff1a;DoppelGanger: Towards Fast Dependency Graph Generation for Database Replay&#xff0c;点击前往 文章目录 1 简介2 架构概述3 依赖关系图3.1 符号和问题定义3.2 无 IT(k) 图3.3 无 OT 图表3.4 无 OTIT 图表3.5 无 IT[OT] 图表3.6 输出确定性保证 4 重复向后…

go-admin-ui的菜单分割线设计思路和代码实现

在菜单管理添加分割线&#xff0c;类似这种&#xff1a; 思路&#xff1a;利用空间结构和数据特点来唯一区分出分割线&#xff0c;来划分业务区域 <template><div><h1>Split Line Controller</h1><ul><li v-for"route in displayedRout…

Thinkphp5x远程命令执行 靶场攻略

环境配置 靶场&#xff1a;vulhub/thinkphp/5-rce docker-compose up -d #启动环境 漏洞复现 1.访问靶场&#xff1a;http://172.16.1.198:8080/ 2.远程命令执⾏ POC&#xff1a; ?sindex/think\app/invokefunction&functioncall_user_func_array&vars[0]system…

网安新声 | 黎巴嫩BP机爆炸事件带来的安全新挑战与反思

网安加社区【网安新声】栏目&#xff0c;汇聚网络安全领域的权威专家与资深学者&#xff0c;紧跟当下热点安全事件、剖析前沿技术动态及政策导向&#xff0c;以专业视野和前瞻洞察&#xff0c;引领行业共同探讨并应对新挑战的策略与可行路径。 9月17日&#xff0c;黎巴嫩境内发…

项目实战:lngress搭建Nginx+WP论坛+MariaDB

1. 网站架构 本次部署形式完全舍弃 Docker&#xff0c;将所有应用都置于Kubernetes&#xff0c;采用 Deployment 而非单 Pod 部署&#xff0c;稳定性得到升级。 2. 部署 MariaDB [rootk8s-master ~]# mkdir tdr [rootk8s-master ~]# cd tdr/ &#xff08;1&#xff09;定义 …

YOLOv8改进,YOLOv8添加STA注意机制(超级令牌注意力机制,CVPR2023),并二次创新C2f结构,助力涨点

改进前训练结果: 改进后训练结果: 摘要 在Transformer架构引入“超级令牌”(Super Token)的机制,旨在解决浅层网络中过多冗余的局部特征捕捉问题。传统的Transformer在捕捉长程依赖性方面表现出色,但在浅层网络中,由于局部特征冗余,导致了计算效率的低下。为了解决…

Nginx基础详解1(单体部署与集群部署、负载均衡、正反代理、nginx安装)

本阶段的任务 1.学会集群的操作概念 2.完成对Nginx的入门操作 3.使用Nginx实现集群和负载均衡 4.使用Nginx实现高可用的方案 目录 1.单体部署与集群部署 1.1单体部署的概念 1.2单体部署的优缺点 1.3集群部署的概念 1.4集群部署的优缺点 1.5集群部署需要注意的点 1.…

基于Springboot共享充电宝管理系统JAVA|VUE|SSM计算机毕业设计源代码+数据库+LW文档+开题报告+答辩稿+部署教+代码讲解

源代码数据库LW文档&#xff08;1万字以上&#xff09;开题报告答辩稿 部署教程代码讲解代码时间修改教程 一、开发工具、运行环境、开发技术 开发工具 1、操作系统&#xff1a;Window操作系统 2、开发工具&#xff1a;IntelliJ IDEA或者Eclipse 3、数据库存储&#xff1a…

CSS的弹性盒子模型(Flex box)

弹性盒子模型是CSS3的一种新的布局模式&#xff0c;弹性盒是一种当页面需要适应不同的屏幕大小以及设备类型时确保拥有合适的布局方式&#xff0c;引入弹性盒子模型的目的时提供更加有效的方式来对一个容器中的子元素进行排列&#xff0c;对齐和分配空白空间。 弹性盒子由弹性容…