[OIDC&&Oauth2 ] 理解Oauth2授权框架

OAuth2.0和OIDC1.0 试想微信的账号密码暴露给接入的客户端Client(比如新开发的App接入微信登录),那么Client端就可以拿着用户的微信账号为所欲为,这显然是最不安全的,微信也绝不可能同意,即便是我们自建的认证中心,接入的Client端也都是我们自己公司的应用,接入的Client都能拿到用户账号密码,显然也增加了用户账号密码泄露的风险,显然也是不可取的,关于用户的账密码,还是越少人(越少Client端应用)知道越好。应用的使用离不开用户,所以用户认证与授权通常亦成为了应用架构中不可或缺的一部分。 阅读详情
一.  什么是Oauth2授权框架?

  Oauth2是一种通用的开放式的面向个人(即用户)网络授权方案,它的前身是Oauth1。但是由于Oauth1设计复杂,易用性差,所以Oauth2与Oauth1并不兼容。


二. Oauth2.0的应用场景

       我们拿csdn登录来举个栗子,来看csdn的登录页面下方:

     

        

  其中的第三方登录(qq, 微信, 微博 ,github等),就是一个Oauth2的授权应用场景。 假设我们在没有csdn账号的情况下需要访问csdn的评论功能那么传统的情况下我们需要创建一个csdn账号然后在登录, 在有了Oauth2授权方案之后。我们可以在不需要登录csdn的情况下通过Github来登录csdn. 那么Github是怎么授权允许给csdn进行登录的呢? 首先我们排除以下可能的几点:


一: 授权不是将Github的账号密码发送过去比对.

二: 授权只是针对csdn而不是博客园或者某论坛.

三 :  授权是某个时间段到某个时间段的授权.

四:   授权是有范围的授权,而不是将所有资料都公开给csdn

那么搞清楚以上几个要点,我们在来谈Oauth2.0的专业术语.


三. Oauth2专业术语定义:

 角色(Roles)

 Oauth2.0当中共定义了四种角色:

一: client

   这里的“客户端"不包含任何特定的实现特性,比如在上方的栗子中csdn就是一个客户端.


二: resource owner

 资源拥有者, 比如在上方中,你点击csdn的第三方登录(Github),你拥有Github的账号,并且已经授权让csdn访问你在Github中的账号(通过点击第三方按钮). 此时你就是资源拥有者.


三: authorization server

授权服务器,当你点击了csdn登录页面下方的Github登录按钮之后就会跳转到Github提供的授权服务器


四:resource server

资源服务器, 当你点击同意授权之后,资源服务器会将你的信息发往client,在上面的栗子中等于Github的资源服务器将你信息发给csdn.


如果还不理解请见下图:


当你点击第三方登录时(点击Github),你作为resource owner, csdn为client. 接着跳转到如上的页面,此时我们可以认为上面的页面就是Github提供的authorization server. 当你点击同意授权后(Authorize passprotcsdn)资源服务器会将你的信息发送给csdn.

将上面的东西在文档化一点,就变成了如下图(图片引用RFC 6749):


(A): 客户端请求资源所有者的授权。(csdn请求你使用第三方登录)


(B):资源所有者同意授权。(你点击了第三方登录(假设为Github)  )


(C): 客户端获得了资源所有者的授权之后,向授权服务器申请授权令牌(你点击了同意授权按钮)


(D): 授权服务器验证客户端无误后发放授权令牌(Github验证客户端是csdn)


(E): 客户端拿到授权令牌之后请求资源服务器发送用户信息


(F): 资源服务器验证令牌无误后将用户信息发放给客户端(将你的Github的昵称,图像等,发送给csdn)



经过上面的步骤就完成一套Oauth2的授权流程,不难看出在上面的步骤中关键是如何同意授权获取Token,那么下面就

讲Oauth2.0的几种授权方式.


笔者注: 上面流程图中的authorization server应该为授权服务器而非认证服务器。同样Oauth2是授权框架而非认证框架

           从表现形式和专业定义的角度来讲都应该是 authorization 而非 authentication.

四:Oauth2的四种授权流程描述:

授权流程可以理解为客户端在经过资源拥有者同意之后从授权服务器中获取授权令牌的几种过程。


4.1 授权码模式获取授权过程(Authorization Code):

笔者注:User-Agent在本文章中表示为浏览器(以上图片引用自RFC 6749)

(A) 客户端初始化参数,并且通过浏览器将用户引导至授权服务器


(B) 用户同意或者拒绝客户端的授权请求.(通过浏览器)


(C)用户通过浏览器同意了授权,那么授权服务器将会发送一个授权码给客户端(二个C步骤同时完成,并且对用户不可见)


(D) 客户端拿到了授权服务器给的授权码之后将授权码(Authorization Code)发送给授权服务器,请求授 权令牌


(E)授权服务器验证授权码,若授权码无误发放授权令牌(Access Token)和刷新令牌


将上面的图和流程对应到csdn和github为:

1. csdn通过浏览器下方的第三方登录引导用户至github的授权服务器(大致对应A步骤)

2. 用户点击同意授权(Authorize passprotcsdn)(对应步骤B)

3.用户在浏览器中点击了同意授权后,Github将他的授权码发送给csdn后台(对应步骤C)

4.csdn拿到了授权码之后将授权码发送给Github的授权服务器(对应步骤 D)

5.Github授权服务器验证csdn发送过来的授权码是否是第三步中发送过来的授权码,是则发放允许授权令牌(对应步骤E)


由此可见A和B是需要资源所有者进行操作的,C D E都是客户端和服务器在各自的后台进行完成的。那么完成这些

步骤它们所需要的参数是什么呢?

4.1.1 授权码模式请求参数(对应步骤A):

客户端请求授权服务器需要携带的请求参数

一. response_type(必须携带)

     在授权码模式中response_type的参数值必须为"code".(为了区分和其他三种请求模式的区别, 而     且   从字面上也方便理解, "code" 意思是先拿到授权码在拿token)


二. client_id(必须携带)

     客户端标识符(如栗子当中的csdn, 此参数可以理解为区分是哪个客户端)


三. redirect_uri(可选参数)

    表示重定向的uri(可以理解为当授权服务器返回code时的返回地址)


四.scope(可选参数)

    表示申请权限的范围


五.state(推荐参数)

     state参数通常是一个客户端随机值,发送给授权服务器,授权服务器在原封不动的返回给客户端。

     这样做是为了预防CSRF攻击。



客户端向授权服务器的请求以"application/x-www-form-urlencoded"  方式提交,下面是一个授权码提交的栗子:

GET /authorize?response_type=code&client_id=s6BhdRkqt3&state=xyz
&redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb HTTP/1.1
Host: server.example.com

4.1.2 授权码模式响应参数(对应步骤C ):

授权服务器在接收到客户端的请求参数后,对客户端提交的请求参数进行验证,验证成功后返回

如下参数:


一. code(必须):

      返回给当前请求授权的客户端的授权码,通常设置为10分钟,并且只能使用一次


二. state(可选):

     如果客户端包含这个值,那么授权服务器将值原封不动的返回给客户端


下面是一个返回code的栗子:

HTTP/1.1 302 Found
Location: https://client.example.com/cb?code=SplxlOBeZQQYbYS6WxSbIA
&state=xyz

4.1.3 请求授权令牌(对应步骤D ):

客户端在拿到授权码之后验证state值,然后向授权服务器请求授权令牌:

一. grant_tpype(必须):

     参数值必须为"authorization_code",表示使用的授权码模式请求授权令牌


二. code(必须):

     授权服务器返回的授权码


三. redirect_uri(可选):

      授权服务器回调给客户端的回调地址,地址于请求code中的地址保持一致


四. client_id(可选):

     客户端标识符,于请求code中的客户端标识符保持一致


授权码模式请求Token的栗子如下:

POST /token HTTP/1.1
Host: server.example.com
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code&code=SplxlOBeZQQYbYS6WxSbIA
&redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fc

4.1.4 授权码模式返回授权令牌:

       授权服务器验证code和client_id信息,验证无误后返回如下参数:

       一.  access_token(必须):

             授权令牌的值


      二. token_type(必须):

          token_type的值大小写不敏感,通常是bearer类型或mac类型。


     三. expires_in(推荐):

          token令牌的过期时间。


     四. refresh_token(可选):

          用来获取新的授权令牌。


    授权服务器以json的格式返回给客户端,栗子如下:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache
{
"access_token":"2YotnFZFEjr1zCsicMWpAA",
"token_type":"example",
"expires_in":3600,
"refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA",
"example_parameter":"example_value"
}

4.2 简化模式(Implicit)获取授权过程

在简化模式(又称隐式模式)获取授权令牌中,省去了获取code的步骤. 在浏览器中(JavaScript)完成获取授权令牌的过程,简化模式中不需要验证客户端身份,同时也不支持刷新令牌。授权服务器将授权令牌进行uri_hash返回给浏览器,所以授权令牌是可见的.简化模式适用于客户端运行在浏览器或者flsh中, 同时也要求浏览器必须绝对可信,因为授权令牌可以被泄露给恶意用户或程序.



简化模式流程图如下(图片引用 RFC 6749 ):

(A): 客户端初始化参数并通过浏览器将用户引导至授权服务器(二个A同步)

(B):用户给予客户端授权

(C):假设用户同意授权,授权服务器将访问令牌以uri hash的方式重定向至A步骤指定的回调地址

(D):浏览器向资源服务器发送一个请求(不包括收到的hash值)

(E):资源服务器返回一个web页面(通常是嵌入脚本的html文档)

(F):浏览器在获得资源服务器提供脚本后提取其中的授权令牌

(G):浏览器将授权令牌发送给客户端

4.2.1 简化模式中客户端请求的参数:

一.  response_type(必须):

      该参数表示请求授权的类型,该值固定为"token"

         二.  client_id(必须):

                 客户端标识符  

      

         三. redirect_uri(可选):

             授权服务器返回token后的重定向地址


        四. scope(可选):

            请求授权的范围


        五. state(推荐):

           state参数通常是一个客户端随机值,发送给授权服务器,授权服务器在原封不动的返回给客户端。这样做是为了预防CSRF攻击。


一个简化授权请求的参数栗子如下:

GET /authorize?response_type=token&client_id=s6BhdRkqt3&state=xyz
&redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb HTTP/1.1
Host: server.example.com
在js中可以用如下代码组装请求参数,示范如下:

var tokenparams = {
    client_id: "your clientid",
    client_secret: "your client_secret",
    redirect_uri:"your redirecturi",
    scope:"your scope",
    response_type:"token",

}


function formatParams( params ){
    return "?" + Object
            .keys(params)
            .map(function(key){
                return key+"="+encodeURIComponent(params[key])
            })
            .join("&")
}

4.2.2 授权服务器响应授权令牌参数:

一. access_token(必须):

     返回的授权令牌值


二. token_type(必须):

     token_type的值大小写不敏感,通常是bearer类型或mac类型。


三.expires_in(推荐):

    token令牌的过期时间。


四.scope(可选):

    请求的授权范围.


五. state(必须):

     如果客户端包含这个值,那么授权服务器将值原封不动的返回给客户端.


简化模式返回授权令牌示范如下:

HTTP/1.1 302 Found
Location: http://example.com/cb#access_token=2YotnFZFEjr1zCsicMWpAA
&state=xyz&token_type=example&expires_in=3600
  Location是4.2.1步骤中指定的redirect_uri,授权令牌等相关信息包含在uri_hash中.

4.2.3 后续操作.

        浏览器访问指定的回调地址,不带上hash(#键后面的值)后面的值(D步骤),资源服务器返回一个脚本

        (对应E步骤).  脚本为返回授权令牌. 示范代码如下:

        var hash = location.hash.substring(1);
        var scope= new Object();
         if (hash.length > 0) {
            var regex = /([^&=]+)=([^&]*)/g;
            var keyValue;
            while (keyValue = regex.exec(hash)) {
                var key = keyValue[1];
                var value = keyValue[2];

                if ('access_token' == key) {
                    scope.accessToken = value;
                } else if ('token_type' == key) {
                    scope.tokenType = value;
                } else if ('expires_in' == key) {
                    scope.expiresIn = value;
                } else {
                    scope.tokenError = value;
                }
            }

     浏览器拿到token之后,将token令牌返回给客户端(对应F,G步骤)

    笔者注: 简化模式中的资源服务器就是授权服务器回调token的地址, 浏览器去请求之前回调用的地址。 然后在解析hash后面的值, 得到 token.

  4.3  密码模式(Resource Owner Password Credentials)获取授权过程:

使用此模式时,用户直接向客户端提供账号密码. 但是客户端不保存账号密码。这种模式通常是用户高度信任

客户端,如操作系统或高权限的程序.


4.3.1 密码模式流程图如下(图片引用 RFC 6749):


(A):用户将账号密码发送给客户端.

(B):客户端将账号密码发送给授权服务器,并请求授权令牌.

(C):授权服务器验证账号密码无误后,将令牌发送给客户端.

4.3.1 密码模式请求授权参数:

一. grant_type(必须):

         参数值必须为"password",表示使用的密码模式请求授权令牌


二.username(必须):

        表示用户名.


三. password(必须):

      表示密码.


四. scope(可选):

     请求授权范围


密码模式请求授权示范如下:

POST /token HTTP/1.1
Host: server.example.com
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-Type: application/x-www-form-urlencoded
grant_type=password&username=johndoe&password=A3ddj3w

4.3.2 授权服务器响应参数:

        授权服务器响应参数同授权码模式中相应参数一样.下面是一个示范:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache
{
"access_token":"2YotnFZFEjr1zCsicMWpAA",
"token_type":"example",
"expires_in":3600,
"refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA",
"example_parameter":"example_value"
}

4.4 客户端模式(Client Credentials Grant)获取授权过程

     客户端模式指直接客户端已自己的名义向授权服务器请求授权令牌, 此模式中用户(即资源拥有者)不参与授权过程

     所以在此模式中也并不会出现用户敏感数据,它适用场景为获取需要授权的静态资源等.


4.4.1 客户端授权模式流程图(图片引用 RFC 6749):

(A): 客户端向授权服务器提供认证,并请求授权令牌

(B): 授权服务器返回授权令牌

4.4.2  客户端模式授权请求参数:

一. grant_type(必须):

      参数值必须为"client_credentials",表示使用的客户端模式请求授权令牌


二.scope(可选):

    表示请求的授权范围


一个请求的栗子如下:

POST /token HTTP/1.1
Host: server.example.com
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials

4.4.3 客户端模式响应参数:

授权服务器响应参数和简化模式中响应的参数相同, 一个例子如下.

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache
{
"access_token":"2YotnFZFEjr1zCsicMWpAA",
"token_type":"example",
"expires_in":3600,
"example_parameter":"example_value"
}
五. Oauth2.0流程中的一些疑问与安全防护

5.1.0  state参数如何防止CSRF攻击?


   回到csdn和github的栗子.  假设现在有二个位用户, 一个是攻击者小明, 一个是普通用户小芳. 攻击者小明拥有Github

  的账号,于是他使用授权码的模式进行CSRF攻击,流程如下:


  一.小明访问csdn第三方登录,使用Github进行第三方登录。


 二. csdn将小明引导至Github同意授权页面,小明点击同意。


三. 小明使用抓包工具截获Github授权服务器返回的code请求。 这是小明拿到了自己的code。


四. 小明准备一个和csdn相仿的页面,诱导普通用户小芳来访问。这个页面后台会模仿csdn向

     Github申请令牌的动作。申请令牌的Code就是第三步中获得的Code.


五. 小芳访问了小明准备的页面,并点击第三方Github登录。令牌的申请流程在小芳的浏览器中顺利

     的触发,csdn从github授权服务器中拿到了access_token,不过这个access_token是攻击者小明的


六. csdn将小明的github账号同小芳的csdn账号关联绑定起来 ,从此以后小明就可以用自己的Github账号

    通过Oauth2小芳的csdn账号.


5.2 攻击的前提条件:

   一. 小芳在csdn上已经登录过(session是有效的).


   二. 授权码没有过期.



5.3防御方法

 防止这种攻击的方法就是在客户端请求授权服务器的时候加上一个state参数和当前请求用户做唯一关联。这样客户端在

接收到授权服务器传回来的state值时,比对它为当前用户请求时的state值是否一致来验证当前请求是否合法。那么读者

可能在想为什么授权码模式中需要获取code这一步,不获取code直接拿token就不会被拿到code,而且减少了一次网络

请求增加了效率. 答案是不能的, 因为浏览器中的回调地址是一个不安全的信道, 不适合传递token,  而code可以在浏览器

中的redirect_uri中传递, 因为在拿code去换取token的同时还会验证code的client_id身份, 如果是其他第三方拿到code,

那么它不是当前code的client也就并不会生效。


六. 总结

    Oauth2授权框架还拥有一些什么问题.

   一.  access_token不透明问题, 及客户端不知道access_token是否是授权服务器发送过来的。

  二.  access_token一般是md5加密的sessionid或username,所能携带的有用信息较少。

  三. 授权码模式中,授权码容易被截获。

 下篇文章将为大家带来Oauth2.0的扩展。 Jwt以及PKCE。


 开源项目介绍: Soatuh开源项目实现了本专栏的技术要点和功能,欢迎star, 或加入开发组。 项目内容

                       请访问项目地址。

 项目地址:       https://github.com/zhoujie123/Soauth













          



 



   


























【笔记】浅谈OAuth2 accessToken和OIDC idToken的理解和使用场景 前言 OAuth2 官网:https://oauth.net/2/ OIDC:Open ID Connect 官网:http://openid.net/connect/ What is OpenID Connect? OpenID Connect 1.0 is a simple identity layer on top of the OAuth 2.0 protocol. It allows Clients to verify the identity of the End-User bas 阅读详情

相关推荐

开放平台实现安全的身份认证与授权原理与实战:OIDC与OAuth2.0的区别

1.背景介绍 随着信息技术的飞速发展,越来越多的人把自己的个人数据、生活事务、金融交易甚至是财产权利都放在了互联网上。因此,保护用户数据的安全成为了当务之急。为此,安全意识高,技术能力强的互联网企业应运而生。 互联网企业面临的最大安全风险之一就是数据被盗用、泄露、篡改等。解决这一问题的第一步就是构建可信任的平台,并且让用户能够自助获取必要

AI天才研究院 584

【授权与认证】OAuth 2.0 和 OIDC 的异同点

OIDC 协议定义的名词和 OAuth 2.0 协议定义的稍微有些出入:OpenID Provider ,简称 OP :相当于 OAuth 2.0 中的授权服务器,除了负责颁发 Access Token ,还会颁发 ID Token。例如 IDaaS 就是一个 OP。Relying Party ,简称 RP :代指 OAuth 2.0 中的客户端。End User ,简称 EU :即用户。最后, OIDC 的授权流程与 OAuth 2.0 是一样的,

叮当猫的喵i 4638

北京联通IPTV组播实战:OpenWRT软路由配置全解析

本文详细解析了在北京联通IPTV环境下,利用OpenWRT软路由和udpxy工具实现组播转单播的实战配置。内容涵盖网络接口设置、防火墙规则、udpxy安装配置、直播源M3U文件处理以及全平台播放指南,帮助用户无需机顶盒即可在家庭局域网内任何设备上流畅观看电视直播。

weixin_29313547的博客 1416

Oauth2.0的四种模式

1. 授权码模式 (1)资源拥有者打开客户端,客户端要求资源拥有者给予授权,它将浏览器被重定向到授权服务器,重定向时会 附加客户端的身份信息。如: /uaa/oauth/authorize? client_id=p2pweb&response_type=code&scope=app&redirect_uri=http://xx.xx/notify 参数列表如下: client_id:客户端接入标识。 response_type:授权码模式固定为code。 scope:客户端权限

qq_37457564的博客 2825

vLLM 多机多卡推理测试与验证(Kubernetes)vLLM 多机多卡推理 Kubernetes 验证

本文记录在两台 L20 机器,每台机器 4 块 L20 显卡(46G)的环境下,使用 vLLM 部署 Qwen2.5-32B-Instruct-GPTQ-Int4 模型并提供多节点多卡推理服务的过程。服务(Serving)模型服务是指将模型部署到生产环境中,通过 API 或其他接口提供预测服务的过程。【分布式推理与服务】(Distributed Inference and Serving)是指在多个机器或设备之间部署和管理机器学习模型,以高效地处理推理请求并满足大规模服务需求。3、启动 vLLM 服务。

流水_鱼鱼的博客 3459

HyperMesh 2025新功能尝鲜:用Volume Tetramesh一键生成工业级四面体网格

HyperMesh 2025推出的Volume Tetramesh功能,通过“体到体”的全新范式,实现了工业级四面体网格的一键生成。该功能利用Proximity与Curvature参数智能识别并加密几何特征,将工程师从繁琐的几何清理和表面网格划分中解放出来,在保证网格质量的同时,显著提升了前处理效率,尤其适用于发动机缸体等复杂模型的仿真分析。

weixin_29229055的博客 477

OIDC 与 OAuth2.0学习

OpenID Connect (OIDC) 和 OAuth 2.0 是两种不同的协议,它们通常一起使用,但服务于不同的目的。下面是它们的。

一个写了10年bug的程序员日常笔记。 1897

从IR Drop到EM分析:数字IC电源规划中那些没人明说的细节(以MTCMOS配置为例)

本文深入探讨数字IC后端设计中电源规划的关键细节,特别关注MTCMOS配置、电源网络电阻最小化和level shifter供电等实战技巧。通过分析IR Drop和EM问题,提供优化floorplan和powerplan的具体策略,帮助工程师避免常见陷阱,提升芯片设计的稳定性和可靠性。

q9w8e7r6t5的博客 511

别再搞错!OAuth 2.0只是授权协议,OIDC才是认证授权协议

上一文我们对Keycloak保护Spring Boot应用进行了实操。让大家见识到了Keycloak的强大。为了掌握Keycloak就必须对OpenID Connect(OIDC)协议进行...

程序猿DD 1573

STM32 FATFS文件系统按行读取SD卡数据

STM32 SD数据实现按行读取

qq_32216815的博客 7829

计算机组成原理(第三版)唐朔飞-第六章计算机的运算方法-课后习题(1-16)

计算机组成原理(第三版)唐朔飞-第六章计算机的运算方法-课后习题(1-16)

weixin_45735391的博客 8万+

http://www.vipredbottomshoe.com 444

twitter-inner-ditto243043490840330241 div5 trillion in repatriated off-shore funds tampered with illegally by hi...

cty59264的博客 5195

使用 MATLAB/Simulink + Deep Learning Toolbox,构建一个基于LSTM的电网负荷预测模

本文介绍了一个基于Simulink和深度学习的智能电网负荷预测与调度建模方法。通过LSTM神经网络构建负荷预测模型,将历史负荷、天气、日期等特征作为输入,预测未来24小时负荷。然后将训练好的模型集成到Simulink仿真系统中,结合发电单元模型和经济调度逻辑,实现预测驱动的电力调度优化。实验结果表明,该方法预测误差在2.5%-4.0%之间,相比传统调度方式可降低15%-25%的运行成本。文章详细展示了从数据准备、特征工程、模型训练到系统集成的完整流程,为智能电网中AI技术的应用提供了实用参考。

amy_mhd的博客 172

浅谈 OIDC 以及和 OAuth2.0 的区别

OpenID Connect(OIDC)是由 OpenID 基金会开发的一种身份层协议,它建立在 OAuth2.0 框架之上,旨在提供一种标准化的方式来验证用户身份并获取其基本信息。与单纯的 OAuth2.0 不同,OIDC 不仅关注于授权(即允许应用程序访问用户在其他服务上的资源),更强调身份验证——确认“你是谁”。OpenID Connect 作为 OAuth 2.0 之上的身份验证层,通过标准化的流程和强大的安全特性,有效解决了现代网络环境中用户身份验证的复杂挑战。

勿在浮沙柱筑高台 1387

第4.4节:保护轴承与安全系统

飞轮储能系统的保护轴承是磁悬浮失效时的最后安全屏障,其设计需满足非干涉性、高可靠性和有限寿命承载原则。转子跌落过程包括自由下落、碰撞、进动和滑行减速等复杂非线性阶段,产生远超常规工况的冲击载荷。保护轴承需具备极限冲击容量、高温耐受性和抗卡死能力。系统采用多层级安全架构,结合故障诊断与健康管理,通过监测振动、电流等参数实现预测性维护。安全停机序列有序结合主动制动与被动摩擦制动,确保系统在极端工况下的安全。保护轴承类型多样,需根据系统规模与可靠性要求合理选择。

技术工作者 229

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

开发者谈 | OAuth 2.0 和 OIDC 协议的关系?(内含必看案例)

撰稿人:Authing 开发者 寻寻觅觅的 Gopher还记得那个吃披萨的例子吗?《5000 字干货 | IDaaS 身份即服务背后的基石》一文中阐述了 SaaS,PaaS,IaaS 三者的区别。IDaaS 实际上就是一个基于 SaaS 模式的 IAM 解决方案,也就是云上的身份和访问管理服务,完全由受信任的第三方云服务厂商托管和管理。它允许企业使用单点登录、身份验证和访问控制来提供对任意接入的已实现标准协议应用的安全访问。而 IDaaS 背后,有两个支撑着其和和协议。...

Authing的博客 2208

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Spring OAuth2.0 OIDC详解

OAuth2.0 OIDC详解

onePlus5T的博客 3224

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

OAuth 2.0 的四种方式

RFC 6749 OAuth 2.0 的标准是RFC 6749文件。该文件先解释了 OAuth 是什么。 OAuth 引入了一个授权层,用来分离两种不同的角色:客户端和资源所有者。......资源所有者同意以后,资源服务器可以向客户端颁发令牌。客户端通过令牌,去请求数据。 这段话的意思就是,OAuth 的核心就是向第三方应用颁发令牌。然后,RFC 6749 接着写道: (由于互联...

lamb7758的博客 805

OAuth2.0 & OIDC1.0及落地方案

本文介绍了OAuth2.0 & OIDC1.0的相关术语、授权模式及交互流程等,并站在不同角度论述了OAuth2.0 & OIDC1.0作为建设企业用户认证中心的落地思路,给出了不同客户端类型关于授权模式的选型建议,最后结合Spring Security OAuth2生态给了典型架构(前后端分离+微服务+应用网关)的集成示例。

罗小爬的技术宝书 4381

OAuth2.0简介

一、引言: 我经常网购和外卖,每天都有快递员来送货。我必须找到一个办法,让快递员通过门禁系统,进入小区。 如果我把自己的密码,告诉快递员,他就拥有了与我同样的权限,这样好像不太合适。万一我想取消他进入小区的权力,也很麻烦,我自己的密码也得跟着改了,还得通知其他的快递员。 有没有一种办法,让快递员能够自由进入小区,又不必知道小区居民的密码,而且他的唯一权限就是送货,其他需要密码的场合,他都没有权限? 二、授权机制的设计 于是,我设计了一套授权机制。 第一步,门禁系统的密码输入器下面,增加一个按钮,叫做"获取授

文盲青年的博客 695

Oauth和Oauth2.0的区别

一、       Oauth的概念 Oauth的官方简介是: An open protocol to allow secure API authorization in a simple andstandard method from web, mobile and desktop applications. 随着大量开放平台的出现,建立在开放平台之上的各种第三方应用也在大量冒出,出对安全性

Cola 2740

授权 - JWT、OAuth、OAuth2、SpringSecurityOAuth2的区别

JWT、OAuth、OAuth2、SpringSecurityOAuth2的区别简介JWTOAuthOAuth2SpringSecurityOAuth2 简介 JWT JWT是一种认证协议 JWT提供了一种用于发布接入令牌(Access Token),并对发布的签名接入令牌进行验证的方法。 令牌(Token)本身包含了一系列声明,应用程序可以根据这些声明限制用户对资源的访问。 OAuth OAuth2 SpringSecurityOAuth2 ...

个人纪录、总结! 4154

万维网与互联网

互联网 1.互联网是传递数据的管道,各种程序都会用,其中传输数据最多的程序是万维网 万维网 2.可以用浏览器来访问万维网。万维网的最基本单位是【单个页面】 3.页面上有内容,也有去往其他页面的链接【超链接】(文字或图片),这些超链接形成巨大的互联网络 4.为了使网页能相互连接,每个网页需要一个唯一的地址,这个地址叫“统一资源定位器”(URL) 5.计算机想要访问一个网站时,先输入域名,...

lincoco49的博客 3万+

单点登录:SAML、OAuth2、OIDC 的区别与联系

进一步的,同一个Client在不同Application Server可能也有不同的权限,这时候Authentication Server就需要包含Authorization Server(授权服务)功能。举个例子,我登录优快云的时候,有个选项是是否使用微信登录,如果使用微信登录,就会从微信服务获取用户信息并登录。OIDC的核心在于授权过程中,一并提供用户的身份认证信息ID-Token(使用JWT来包装)给到第三方客户端,OP通常还提供了GetUserInfo的接口,用于获取用户更完整的信息。

Lvlht的博客 4510

OAuth2.0概述

OAuth2.0概述 OAuth(Open Authorization)是一个关于授权(authorization)的开放网络标准,允许用户授权第三 方应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他们数据的所有内容。OAuth在全世界得到广泛应用,目前的版本是2.0版。 OAuth协议:https://tools.ietf.org/html/rfc6749 协议特点: 简单:不管是OAuth服务提供者还是应用开发者,都很易于理解与使用; 安全:没有涉及

qq_43843037的博客 1万+
上一篇: 能够检测多种设备类型的Spring Mobile
下一篇: 一文读懂JWT,JWS,JWE
zh_coder
博客等级 码龄12年 31粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值