zoukankan      html  css  js  c++  java
  • OAuth 2.0

    OAuth 2.0

    OAuth 2.0 是一种授权机制,主要用来颁发令牌(token)。OAuth 的核心就是向第三方应用颁发令牌

    概念及解释

    OAuth 2.0 的一个简单解释

    OAuth 2.0 的四种方式

    • 授权码(authorization-code) // 需要经过授权码,适用于有前后端
    • 隐藏式(implicit) // 适用于没有后端的应用,不需要授权码
    • 密码式(password): // 直接用用户名密码,用于内部应用
    • 客户端凭证(client credentials) // 适用与对APP授权,而不是单个用户

    四种方式都需要在B站先注册

    浅谈OAuth 和 OpenID 相关技术

    OpenID 和 OAuth

    两者很像,但本质上来说它们是截然不同的两个东西:

    • OpenID: 只用于 身份认证(Authentication),允许你以 同一个账户 在 多个网站登陆。它仅仅是为你的 合法身份 背书,当你以 Facebook 账号登陆某个站点之后,该站点 无权访问 你的在 Facebook 上的 数据。
    • OAuth: 用于 授权(Authorisation),允许 被授权方 访问 授权方 的 用户数据。

    Access Token 和 Refresh Token

    职责的分离:

    • refresh token: 负责 身份认证;
    • access token: 负责 请求资源。

    JWT(JsonWebToken)

    JWT 顾名思义,它是 JSON 结构的 token,由三部分组成:

    • header
    • payload
    • signature

    header 用于描述 元信息,例如产生 signature 的算法:

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

    payload 用于携带你希望 向服务端传递的信息。你既可以往里添加 官方字段,例如:iss(Issuer), sub(Subject), exp(Expirationtime),也可以塞入 自定义的字段

    { "userId": "b08f86af-35da-48f2-8fab-cef3904660bd"}
    

    signature 译为 签名,创建签名要分以下几个步骤:

    1. 从 接口服务端 拿到 密钥,假设为 secret。
    2. 对 header 进行 base64 编码,假设结果为 headerStr。
    3. 将 payload 进行 base64 编码,假设结果为 payloadStr。
    4. 将 headerStr 和 payloadStr 用 . 字符 拼装起来成为字符 data。
    5. 以 data 和 secret 作为参数,使用 哈希算法 计算出 签名。
  • 相关阅读:
    oc基础-oc之集合NSDictionary,NSMutableDictionary
    Pythonic是什么?
    Python 单例模式
    开通博客第一天
    webstrorm快捷键整理
    Javascript设计模式(一)
    遍历json创建树状表(首先的前提条件是要引入jquery的jquery treeTable插件)
    关于高性能javascript 笔记
    css animation 动画的制作
    canvas画扇形图(本文来自于http://jo2.org/html5-canvas-sector/)
  • 原文地址:https://www.cnblogs.com/Nine4Cool/p/13810313.html
Copyright © 2011-2022 走看看