OAuth简介

Stella981
• 阅读 615

    Oauth的官方简介是:随着大量开放平台的出现,建立在开放平台之上的各种第三方应用也在大量冒出,出对安全性和统一标准的要求,于是出现了oauth协议

    简单来说,OAUTH是一种开放的协议,他能为桌面程序或者基于BS的web应用提供一种简单的标准方式去访问需要用户授权的API(ApplicationProgramming Interface)服务,而且任何第三方都可以使用OAUTH认证服务。在为第三方提供服务的过程中,他还能起到保护用户账号安全的作用

OpenID和OAuth的区别

      在项目开发中,我们经常说认证和授权,经常把他们放到一起去描述,那两者在本质上是有区别的,OpenID和OAuth就是我们说的认证和授权。

      OpenID:Authentication 认证

      OAuth :Authorization   授权

     简单来说,我们可以认为OAuth为我们解决“用户能(想)做什么”,是“WHAT”的问题,而OpenID则为我们验证“用户是谁”,是解决“WHO”的问题。对Oauth和OpenId的作用还是有点抽象,就举个例吧。CSDN使用QQ登录,进入csdn的登录页,点击使用QQ登录,在进入到QQ登录界面后,最开始是要请求认证,用户输入QQ号和密码,点击登录,腾讯互联会先进行验证该用户是否为我的用户,如果是我的用户,那么我会通知你(CSDN),他是我的用户,你可以使用该账户登录你的系统,这个过程就是认证(Authentication),认证就是证明你是谁,你是否是真实存在的,这就是OpenID。

      而在QQ授权登录下方,有两给CheckBox复选框,可以允许CSDN获得您的昵称、头像、性别,这是在认证之后的事了,在腾讯互联你是我平台的用户后,你可以自己选择CSDN是否有权去获取你的相关信息,当你勾选后,腾讯互联就把你的这些基本信息给了CSDN,这个过程就是授权(Authorization),授权就是确定了你是谁后,又把属于你的东西给了别人,这个就是OAuth。

OAuth1.0和OAuth2.0的区别

     OAuth有OAuth1.0和OAuth2.0两个版本,两个版本的区别如下:

  • auth1.0与Oauth2.0是相互不兼容的,所以他们为我们提供了不同的授权方式:

       2.0的用户授权过程有3步:

         A)用户到授权服务器,请求授权,然后返回授权码(AuthorizationCode)

         B)客户端由授权码到授权服务器换取访问令牌(access token)

         C)用访问令牌去访问得到授权的资源、

       总结:获取授权码(Authorization Code)—>换取访问令牌(access_token)—>访问资源:

      ** 1.0的授权分4步,**

         A)客户端到授权服务器请求一个授权令牌(requesttoken&secret)

         B)引导用户到授权服务器请求授权

         C)用访问令牌到授权服务器换取访问令牌(accesstoken&secret)

         D)用访问令牌去访问得到授权的资源

       总结:请求授权令牌(request token&secret)—>换取访问令牌(access token&secret)—>访问资源

  •  1.0协议每个token都有一个加密,2.0则不需要。这样来看1.0似乎更加安全,但是2.0要求使用https协议,安全性也更高一筹。
  • 2.0充分考虑了客户端的各种子态,因而提供了多种途径获取访问令牌,有:授权码、客户端私有证书、资源拥有者密码证书、刷新令牌等方式,而且验证过程更为简洁。相比之下 1.0只有一个用户授权流程。
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
凯文86 凯文86
3年前
Spring Cloud OAuth2 微服务认证授权
OAuth2.0是用于授权的行业标准协议,它致力于简化客户端开发人员的工作,同时为Web应用、桌面应用、移动应用等各种客户端应用提供了特定的授权流程。本文讲解如何使用OAuth2协议来授权客户端应用访问SpringCloud微服务。微服务认证授权概述单点登录相比于单体应用,微服务应用需要在多个服务之间共享
Stella981 Stella981
3年前
Spring Security实现OAuth2授权认证教程(实现token认证)
一、OAuth2介绍1、什么是OAuth2?OAuth是一个开放标准,该标准允许用户让第三方应用访问该用户在某一网站上存储的私密资源(如头像、照片、视频等),而在这个过程中无须将用户名和密码提供给第三方应用。实现这一功能是通过提供一个令牌(token),而不是用户名和密码来访问他们存放在特定服务提供者的数据。
Easter79 Easter79
3年前
SpringSecurity进阶:OAuth2.0详解
OAuth2是什么?OAuth是一个为了方便用户登入而使用的授权流程,他的优点是不需要向第三方平台暴露我们的用户名和密码,而是使用授权服务器颁发短期的token和效验token的方式开放部分资源给第三方平台OAuth是一个授权协议不是认证协议OAuth2的授权方式!(https://p1tt
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
5 分钟部署一个 OAuth2 服务并对接 Shibboleth
前言这还是一个标题党。OAuth2现在已经是开放授权协议的事实标准,你可以看到几乎所有的xxx开放平台均采取的OAuth2协议来进行授权。而在AuthorizationCode模式的基础上结合JWT,标准化的userinfoendpoint和服务发现,就成了OpenIDConnect。当然即便不加上这些限定,OA
Stella981 Stella981
3年前
CAS 实现站内单点登录及实现第三方 OAuth、OpenId 登录(四)
一、OAuth配置1.配置OAuth提供商<bean id"weibo" class"com.buession.oauth.provider.impl.WeiboProvider"    <property name"key" value"the_key_for_
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Oauth2.0 认证的Web api例子
Oauth2.0的解释OAuth(开放授权)是一个开放标准,允许用户授权第三方移动应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他们数据的所有内容。OAuth是一个关于授权(Authorization)的开放网络标准,目前的版本是2.0版。注意是Authorization(授权),而不