博客
关于我
OAuth 及 移动端鉴权调研
阅读量:797 次
发布时间:2023-02-17

本文共 1255 字,大约阅读时间需要 4 分钟。

OAuth 授权方案解析

OAuth 概念

OAuth 是一种授权方案,旨在解决用户无需向第三方应用提供用户名密码,便于第三方应用访问用户私密资源的协议。以一个用户在网站B 存有私密信息为例,当用户在第三方网站C 进行操作时,可以通过OAuth 协议授权网站C访问网站B 的信息,从而实现资源共享。

OAuth 工作流程

OAuth 的授权过程主要包含以下几个步骤:

  • 注册与配置:第三方网站C 在网站B 注册,获取 appId 和 appSecret,并配置回调地址。
  • 用户触发授权:用户通过网站C 的操作触发授权流程。
  • 生成授权链接:网站C 生成带有未授权的 RequestToken 链接并跳转至网站B。
  • 用户授权:用户登录网站B 后,完成对 RequestToken 的授权。
  • 获取访问令牌:授权成功后,网站C 使用授权的 RequestToken 向网站B 获取 AccessToken。
  • 访问私密资源:通过 AccessToken 和相应的资源接口,访问用户的私密资源。
  • OAuth 版本对比

    OAuth 发展出三个主要版本,分别针对不同的应用场景:

  • OAuth 1.0:最初版本,主要用于解决用户身份认证问题,但存在安全漏洞。
  • OAuth 1.0a:对 OAuth 1.0 的安全漏洞做了补丁,提升安全性。
  • OAuth 2.0:为了解决签名认证逻辑复杂和对多终端不友好的问题,推出了2.0版本。OAuth 2.0 提供了多种授权方式,适合不同终端对接需求。
  • 服务端对接

    在 Node.js 开发环境下实施 OAuth 对接,可以遵循以下步骤:

  • 注册与配置:访问对应平台的开发者中心,申请 appId、appSecret,并设置回调地址。
  • 服务端配置:根据 Passport 文档配置对应的策略,填写 appId 和 appSecret。
  • 网页端授权入口:在网页端添加对应策略的链接,供用户触发授权。
  • 移动端对接:根据平台要求下载并集成移动端 SDK。
  • 需要注意的是,不同策略可能支持不同的 OAuth 版本,需根据实际需求选择合适的实现方式。

    移动端鉴权方案

    除了 OAuth 鉴权,移动端也可以采用类似的机制完成鉴权。常见方案包括:

  • Redis 存储:颁发的 AccessToken 需要存储并控制过期时间,Redis 是较好的选择。
  • 自定义 cookie session:如果已使用 Redis,实现类似 cookie-session 的机制更为简便,能够保持前后端登录一致性。
  • JWT 实现:JWT 可同时完成鉴权和信息存储,但需注意安全性,确保传输过 SSL。
  • 对比与总结

    OAuth 作为一种标准化的授权协议,广泛应用于多种场景。其优势在于支持多终端对接,且版本迭代不断提升安全性和灵活性。对于服务端对接,Node.js 的 Passport 模块提供了丰富的策略支持,能够满足不同 OAuth 版本的需求。移动端鉴权方案则需要结合具体场景选择合适的实现方式,确保系统的安全性和性能优化。

    转载地址:http://qknfk.baihongyu.com/

    你可能感兴趣的文章
    npm报错fatal: Could not read from remote repository
    查看>>
    npm报错File to import not found or unreadable: @/assets/styles/global.scss.
    查看>>
    npm报错unable to access ‘https://github.com/sohee-lee7/Squire.git/‘
    查看>>
    npm淘宝镜像过期npm ERR! request to https://registry.npm.taobao.org/vuex failed, reason: certificate has ex
    查看>>
    npm版本过高问题
    查看>>
    npm的“--force“和“--legacy-peer-deps“参数
    查看>>
    npm的安装和更新---npm工作笔记002
    查看>>
    npm的常用操作---npm工作笔记003
    查看>>
    npm的常用配置项---npm工作笔记004
    查看>>
    npm的问题:config global `--global`, `--local` are deprecated. Use `--location=global` instead 的解决办法
    查看>>
    npm编译报错You may need an additional loader to handle the result of these loaders
    查看>>
    npm设置淘宝镜像、升级等
    查看>>
    npm设置源地址,npm官方地址
    查看>>
    npm设置镜像如淘宝:http://npm.taobao.org/
    查看>>
    npm配置安装最新淘宝镜像,旧镜像会errror
    查看>>
    NPM酷库052:sax,按流解析XML
    查看>>
    npm错误 gyp错误 vs版本不对 msvs_version不兼容
    查看>>
    npm错误Error: Cannot find module ‘postcss-loader‘
    查看>>
    npm,yarn,cnpm 的区别
    查看>>
    NPOI
    查看>>