CCP OAuth2.0 隐藏式授权实践

简介: > 内容协作平台(Content Collaboration Platform, 后面简称CCP)是为开发者提供的面向企业、个人数据管理、内容识别、协作的开放平台。CCP 提供多种OAuth2.0协议接口,方便其他第三方应用接入。 > 本文主要讲解纯前端应用(例如SPA, Chrome插件等)接入CCP所使用的OAuth2.0隐藏式授权的场景和实践方案。 > 什么是 OAuth2.
内容协作平台(Content Collaboration Platform, 后面简称CCP)是为开发者提供的面向企业、个人数据管理、内容识别、协作的开放平台。CCP 提供多种OAuth2.0协议接口,方便其他第三方应用接入。

本文主要讲解纯前端应用(例如SPA, Chrome插件等)接入CCP所使用的OAuth2.0隐藏式授权的场景和实践方案。

什么是 OAuth2.0? 可以看阮老师的文章: OAuth 2.0 的一个简单解释

OAuth2.0 隐藏式: 有些纯前端 Web 应用,没有后端,无法采用 OAuth2.0 授权码模式,因为将 client_secret 放在前端是很危险的行为。OAuth2.0 隐藏式(implicit) 即是授权服务直接向前端Web应用发令牌。

1. CCP 使用介绍

只需3步配置,即可拥有一个云盘系统。

(1) 创建域

用户可以在 阿里云CCP官网控制台,创建一个域(domain),假设domainID为 hz01, CCP会分配1个 API 子域名: https://hz01.api.alicloudccp.com

image.png

(2) 配置OAuth登录页面

配置好域的用户体系配置:

image.png

CCP会分配1个认证授权服务子域名: https://hz01.auth.alicloudccp.com

(3) 直接开通官方提供的BasicUI云盘应用

image.png

允许访问后,再以超级管理员登入一次激活,即可开通成功。

image.png

BasicUI 提供1个子域名: https://hz01.apps.alicloudccp.com。您的用户可以通过此子域名访问云盘系统了。

2. CCP OAuth2.0 隐藏式授权流程

image.png

(1) 授权请求

用户浏览CCP的云盘应用https://hz01.apps.alicloudccp.com,想要用一个第三方应用在线markdown编辑器打开 a.md 这个文件。

  • 这个编辑器是一个纯前端应用,假设域名为 https://a.com
  • 编辑器提供 redirect_uri 为: https://a.com/callback.html
  • 我们可以构造下授权请求url:
https://hz01.auth.alicloudccp.com/v2/oauth/authorize?
response_type=token&
client_id=xxx&
redirect_uri=CALLBACK_URL&
scope=FILE.ALL
  • 其中 CALLBACK_URL 为 encodeURIComponent('https://a.com/callback.html')
  • client_id 为markdown编辑器的appId。

(2) 用户认证和授权

浏览器请求这个url,会跳转到登录页面,用户登录确认后,会重定向到CALLBACK_URL且通过hash返回access_token等信息,如: https://a.com/callback.html#access_token=xxxxx&expire_in=3600&token_type=Bearer

image.png

(3) callback

编辑器的callback.html页面,解析location的hash。

  • access_token等参数解析出来,保存到本地存储中。
  • callback.html 需要清空历史记录,因为access_token是在url中的,会保留在历史记录里。

(4) 调用CCP API

编辑器就可以通过 access_token 来操作 a.md 文件了。

3. 使用 OAuth Widget

CCP 官方提供了一些拥有特定功能的 Widget, 供第三方应用接入时使用。

OAuth Widget即是将上面的OAuth2.0 隐藏式授权逻辑封装起来,做成一个可重用的组件。

下面介绍此widget的用法:

(1) 引入js

<button id="btn_1">登录</button>
<script src="https://g.alicdn.com/ccp/ccp-widgets/0.1.1/index.min.js"></script>

(2) 点击按钮,即可弹出登录窗口

window.onload = function () {
  document.getElementById('btn_1').onclick = async function () {
    var tokenInfo = await CCPWidgets.oAuthLogin({
        domain_id: '<Your Domain ID>',
        client_id: '<Your App ID>' 
    })
    //用户登录授权后,即可拿到tokenInfo
    console.log(tokenInfo)
  }
}

(3) 弹出登录框效果

image.png

目录
相关文章
|
8月前
|
消息中间件 自然语言处理 供应链
Pandabuy复制指南:淘宝1688代购系统搭建
Pandabuy以“反向海淘”模式为核心,助力海外用户代购中国商品,主打欧美市场。通过物流收费、佣金、汇率差等多元盈利,两年营收达40亿元。依托网红营销、低价策略与社区运营,实现高速增长。系统搭建推荐微服务架构,对接淘宝1688 API,强化合规与供应链管理,结合SEO、社媒营销及风控体系,打造高效安全的国际代购平台。
|
8月前
|
Prometheus 运维 监控
别再裸奔搞监控了!一篇带你上手 Prometheus+Grafana 的实战指南
别再裸奔搞监控了!一篇带你上手 Prometheus+Grafana 的实战指南
1353 2
|
数据采集 运维 算法
大数据项目管理:从需求分析到成果交付的全流程指南
【4月更文挑战第9天】本文介绍了大数据项目从需求分析到成果交付的全过程,包括需求收集与梳理、可行性分析、项目规划、数据准备与处理、系统开发与集成,以及成果交付与运维。文中通过实例展示了如何进行数据源接入、数据仓库建设、系统设计、算法开发,同时强调了需求理解、知识转移、系统运维的重要性。此外,还提供了Python和SQL代码片段,以说明具体技术实现。在大数据项目管理中,需结合业务和技术,灵活运用这些方法,确保项目的成功执行和价值实现。
3912 1
|
Ubuntu 物联网 Android开发
QT应用编程: 编写低功耗BLE蓝牙调试助手(Android系统APP)
QT应用编程: 编写低功耗BLE蓝牙调试助手(Android系统APP)
1971 0
QT应用编程: 编写低功耗BLE蓝牙调试助手(Android系统APP)
|
存储 人工智能 BI
Paimon 1.0: Unified Lake Format for Data + AI
Paimon 1.0: Unified Lake Format for Data + AI
383 5
|
安全 搜索推荐 Android开发
深入探索安卓与iOS系统的差异及其对用户体验的影响
在当今的智能手机市场中,安卓和iOS是两大主流操作系统。它们各自拥有独特的特性和优势,为用户提供了不同的使用体验。本文将深入探讨安卓与iOS系统之间的主要差异,包括它们的设计理念、用户界面、应用生态以及安全性等方面,并分析这些差异如何影响用户的使用体验。
|
存储 供应链 安全
区块链技术在现代物流行业的革新应用
本文深入探讨了区块链技术如何在现代物流行业中扮演着革命性的角色,通过提供去中心化、不可篡改的记录系统。文章首先概述了区块链技术的基本原理及其在物流行业中的应用潜力,随后详细分析了该技术如何提高物流透明度、减少欺诈行为、优化库存管理以及降低运营成本。最后,讨论了区块链技术面临的挑战和未来发展前景,为物流行业专业人士提供了深刻的洞见与实践指导。
561 26
|
存储 缓存 网络协议
MAC协议原理与ARP协议
总结一下,MAC协议是控制同一网络媒介上多个设备的数据访问的规范,而ARP是解决局域网络中的IP地址到MAC地址的转换问题,以确保IP包能在本地网络上传输到正确的设备。尽管这两种协议服务于网络通信中的不同层面,但它们都是网络正常操作的基本要素,保证了数据能从一个设备准确无误地传递到另一个设备。
630 0
|
SQL 前端开发 JavaScript
编程语言的分类与特点
编程语言的分类与特点
|
Web App开发 前端开发 JavaScript
前端检测用户地区
前端检测用户地区
604 0