• JWT和OAuth2


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

    OAuth2是一种授权框架
            另一方面,OAuth2是一种授权框架,提供了一套详细的授权机制(指导)。用户或应用可以通过公开的或私有的设置,授权第三方应用访问特定资源

    JWT是一种安全标准。基本思路就是用户提供用户名和密码给认证服务器,服务器验证用户提交信息的合法性;如果验证成功,会产生并返回一个Token(令牌),用户可以使用这个token访问服务器上受保护的资源。

    token的例子:[所有部分都 base64 URL-safe进行编码处理]

    eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

    一个token包含三部分:

    header.claims.signature

    Header头部分---------->头部分简单声明了类型(JWT)以及产生签名所使用的算法。 

    {  "alg" : "AES256",  "typ" : "JWT"}

    Claims声明------------>声明部分是整个token的核心,表示要发送的用户详细信息。有些情况下,我们很可能要在一个服务器上实现认证,然后访问另一台服务器上的资源;或者,通过单独的接口来生成token,token被保存在应用程序客户端(比如浏览器)使用。

    {  "sub": "1234567890",  "name": "John Doe",  "admin": true}
    Signature签名------------------>签名的目的是为了保证上边两部分信息不被篡改。如果尝试使用Bas64对解码后的token进行修改,签名信息就会失效。一般使用一个私钥(private key)通过特定算法对Header和Claims进行混淆产生签名信息,所以只有原始的token才能于签名信息匹配。
            这里有一个重要的实现细节。只有获取了私钥的应用程序(比如服务器端应用)才能完全认证token包含声明信息的合法性。所以,永远不要把私钥信息放在客户端(比如浏览器)




    ==============================

    OAuth2

    OAuth2不是一个标准协议,而是一个安全的授权框架。它详细描述了系统中不同角色、用户、服务前端应用(比如API),以及客户端(比如网站或移动App)之间怎么实现相互认证。

    Roles角色
    应用程序或者用户都可以是下边的任何一种角色:

      • 资源拥有者

      • 资源服务器

      • 客户端应用

      • 认证服务器

    Client Types客户端类型
    这里的客户端主要指API的使用者。它可以是的类型:

      • 私有的

      • 公开的

    Client Profile客户端描述
    OAuth2框架也指定了集中客户端描述,用来表示应用程序的类型:

      • Web应用

      • 用户代理

      • 原声应用

    Authorization Grants认证授权
    认证授权代表资源拥有者授权给客户端应用程序的一组权限,可以是下边几种形式:

      • 授权码

      • 隐式授权

      • 资源拥有者密码证书

      • 客户端证书

      • Endpoints终端

    OAuth2框架需要下边几种终端:

    • 认证终端

    • Token终端

    • 重定向终端

  • 相关阅读:
    架构探险笔记3-搭建轻量级Java web框架
    软件工程
    Mysql基础
    Navicat快捷键
    百度搜索的使用技巧
    利用adb截图然后传到电脑
    Div不用float布局
    安卓开发之ScrollView
    安卓开发ScrollView嵌套ListView只显示一行
    修改eclipse的背景色(转载)
  • 原文地址:https://www.cnblogs.com/KL2016/p/14658822.html
Copyright © 2020-2023  润新知