首页 > 其他分享 >聊下认证协议

聊下认证协议

时间:2024-04-07 09:45:59浏览次数:29  
标签:协议 令牌 登录 SAML 认证 WS 聊下 OAuth

前言

如果大家有接触过ADFS或者认证协议,肯定会对五花八门的名词看的眼花缭乱,比如WS-FED、SAML、SAML Token、OAuth、OpenID Connect、Kerbros以及NTLM等, 但实际上我们可以高屋建瓴的学习它们。

拆分

作为程序员或者工程师,我们都擅长将问题拆分和类比,在认证协议上我们同样可以如此分为三方面,登录协议,验证过程以及令牌类型。举个例子,当我们坐飞机时,首先去柜台办理登记手续,出示自己的身份证,然后工作人员会返回给你机票,然后可以拿着身份证去登机口登机。那么这三个方面都是什么?

  1. 登录协议,整个登机的过程就是一个登录协议,规定了整套登机的流程。而WS-FED、SAML、OAuth、OpenID Connect属于登录协议。

  2. 验证过程,在柜台出示身份证,然后交换机票的这个过程被称为验证过程。普通的password认证,以及Kerbros和NTLM属于验证过程。

  3. 令牌,在整个流程中,机票就是属于令牌。 而在认证协议中令牌也有很多种,最常见的是OAuth中的JWT,Json Web Token。需要注意SAML Token此时属于令牌而不是协议。

WS-FED

WS-FED是ADFS Server的登录协议,从三方面来解释这个协议

  1. 登录协议,属于WS-FED

  2. 验证过程,支持多种验证过程,包括Forms-based即password, Kerbros 和NTLM。

  3. 令牌,注意用WS-Fed时,令牌一般是SAML 1.1 Token

那么WS-FED的URL一般是这样的, https://sts.example.com/adfs/ls/? wa=wsignin1.0 & wtrealm=... & wctx=...

参数分别代表的内容如下:

  • wa=wsignin1.0,通知ADFS server登录,这是一个登录操作

  • Wtrealm, 通知ADFS server, 我要获取什么, 比如跟ADFS Server配置的relying party相对应

  • wctx, 认证之后返回去的session data

拓展知识:

Kerbros和NTLM都是windows认证,其中NTLM时属于比较旧的协议,相对于Kerbros是不安全的协议,所以一般作为Kerbros的Fallback

SAML

SAML也是ADFS Server的登录协议,还是从三方面来解释这个协议

  1. 登录协议,属于SAML

  2. 验证过程,支持多种验证过程,包括Forms-based即password, Kerbros 和NTLM。

  3. 令牌,注意用WS-Fed时,令牌一般是SAML 2.0 Token

那么SAML的URL一般是这样的, https://sts.example.com/adfs/ls/? SAMLRequest=... & SigAlg=... & RelayState=... & Signature=...

参数分别代表的内容如下:

  • SAMLRequest, Base64格式,请求内容

  • SigAlg, 签名算法

  • Signature, 对request的签名

  • RelayState, 认证之后返回去的session data

OAuth和OpenID Connect

OAuth 是一种开放标准的授权协议,允许用户让第三方应用访问他们存储在另外服务提供商上的信息而无需将用户名和密码提供给第三方应用。OAuth 作为授权框架,允许第三方应用限定的访问权限,这样用户就不需要与第三方应用共享登录凭据。

举例来说,一个网站(称为客户端)可能允许用户通过Github账户登录,用户可以点击一键登录的按钮,然后被重定向到Github的登录页。在那里,用户输入自己的登录凭据,然后Github会提示用户是否授权那个网站访问其某些信息。一旦用户同意,Github会将用户重定向回原来的网站,同时提供一个授权码。最后,该网站可以使用这个授权码向 Github 请求访问令牌,并使用这个令牌来获取用户信息。

OpenID Connect 是建立在 OAuth 2.0 协议之上的一个身份层,提供了一种身份验证的方式。它允许客户端应用程序依靠授权服务器来验证最终用户的身份,并获取基本的个人资料信息。OpenID Connect 是一个简单的身份验证协议,并且可以和OAuth 2.0无缝集成。
与OAuth 2.0 主要是为了授权访问资源不同,OpenID Connect 提供了更丰富的身份认证信息,通常包含用户的ID令牌和用户信息(比如用户的姓名、邮箱地址等)。

还是从三方面来解释这个协议

  1. 登录协议, OAuth, OIDC

  2. 验证过程,支持多种验证过程,包括Forms-based即password, MFA等

  3. 令牌,JWT即Json Web Token

OAuth 2.0支持很多flow,比如Code flow, Client Credentials Grant flow, Device Code flow等, Code flow的URL一般是

https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?
client_id=535fb089-9ff3-47b6-9bfb-4f1264799865
&response_type=code
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
&response_mode=query
&scope=https%3A%2F%2Fgraph.microsoft.com%2Fmail.read
&state=12345

而OpenID Connect的URL一般是

https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?
client_id=535fb089-9ff3-47b6-9bfb-4f1264799865
&response_type=id_token
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
&response_mode=form_post
&scope=openid
&state=12345
&nonce=678910

标签:协议,令牌,登录,SAML,认证,WS,聊下,OAuth
From: https://www.cnblogs.com/kyo-lynn/p/18118432

相关文章

  • 车载诊断协议DoIP研究和应用
    文章目录文章摘要:第一章 引言第二章 DoIP协议的原理和特点2.1原理2.2特点2.3示例第三章 DoIP在汽车电子系统中的应用3.1诊断与维护3.2远程诊断3.3数据采集与分析3.4软件更新与配置3.5安全与隐私保护第四章 基于Python开发DoIP应用4.1环境配置4.2......
  • 第33次CSP认证500分题解
    近年来最简单的一次\(CSP\)认证,\(3\)个小时现场满分直接拿下。1、没啥好说的,直接开桶拿下。#include<bits/stdc++.h>usingnamespacestd;#defineN1000010template<classT>inlineTread(T&a){Tx=0,s=1;charc=getchar();while(!isdigi......
  • HTTP协议详解
    HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(NextGenerationofHTTP)的建议已经......
  • CCF-CSP认证202403个人总结以及部分代码
    第一次参加,总分340,这个成绩个人觉得比较满意了,毕竟考前一直在划水,也很久没写算法题了。写到第四题,觉得还剩一个小时肯定写不完就又开始划水,暴力模拟完了就开始翻网页抄自己的提交记录,无所事事,想提前交卷。考试结束在网上一搜,第四题好像不是很难,瞬间觉得没写到最后亏了,开始后悔。......
  • socket编程——C++实现基于UDP协议的简单通信(含详解)
    文章后面有代码,可以直接复制在VisualStudio2022中运行(注意:必须是两个项目,客户端服务端各一个,连接在同一网络中,先运行服务端,并且客户端数据发送的目标IP要改为你服务端的IP)目录前言帮助文档一、UDP通信框架1.服务端2.客户端二、服务端实现1.加载库(WSAStartup函数)......
  • 网络安全 | 什么是双因子认证2FA?
    关注WX:CodingTechWork介绍概念双因子认证(2FA),顾名思义,2个因子进行认证。2FA是一种身份验证方法,要求用户提供密码和另一个认证因子或者至少提供两个认证因子(代替密码),才能访问网站、应用程序或网络。由于破解第二个认证因子需要付出更多,并且其他类型的因子更难以窃取或......
  • 系统多种用户角色认证登录授权如何实现?
    前提:本项目是springboot写的后端,使用springsecurity+jwt实现去实现student、company、admin三种用户角色的认证与授权方法1:建立全局唯一的用户标识符uuid为每个用户生成一个全局的UUID。前情提要:本来设计了三张数据库表:student、company、admin。每张表存放相应角色相应用户......
  • 第八章VRRP虚拟路由器冗余协议
    VRRP技术的引入因为某个设备故障导致全网断连叫单点故障,导致业务中断。为了防止业务中断,就要准备两个或多个网关路由器,就用到了VRRP技术。VRRP平时会落在maste主路由上,客户端配置主路由器的网关,如果master挂掉,虚拟路由则会挂到备用路由器上。VRRP的作用:VRRP是一种路由器备份......
  • 认证加密概念笔记
    认证加密概念笔记1.安全认证参考:https://blog.csdn.net/qq_41644069/article/details/1213019551.1公钥私钥公钥和私钥用来加解密数据,如果使用任意一把来加密数据,那么只有使用另外一把才能解密数据。公钥可以公开供其他人使用,自己只保留自己的私钥。一般简单情况就是公钥加......
  • 【stm32】I2C通信协议
    【stm32】I2C通信协议概念及原理如果我们想要读写寄存器来控制硬件电路,就至少需要定义两个字节数据一个字节是我们要读写哪个寄存器,也就是指定寄存器的地址另一个字节就是这个地址下存储寄存器的内容写入内容就是控制电路,读出内容就是获取电路状态I2C硬件规定(硬......