CCP OAuth2.0 隐藏式授权实践

本文涉及的产品
.cn 域名,1个 12个月
简介: > 内容协作平台(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

目录
相关文章
|
3月前
|
存储 安全 数据安全/隐私保护
SSO 单点登录与 OAuth2.0 的技术区别与应用
【8月更文挑战第24天】在现代软件开发和企业信息化建设中,身份认证与授权是不可或缺的一环。SSO(Single Sign-On,单点登录)和OAuth 2.0作为两种重要的身份认证与授权机制,各自具有独特的特点和应用场景。本文将详细探讨这两种机制的区别,并分享在工作学习中的技术干货。
146 0
|
4月前
|
安全 前端开发 Java
实现基于OAuth2的安全认证与授权
实现基于OAuth2的安全认证与授权
|
6月前
|
安全 数据安全/隐私保护 UED
|
存储 开发框架 安全
快速理解 IdentityServer4 中的认证 & 授权
在实际的生产环境中,存在各种各样的应用程序相互访问,当用户访问 `app` 应用的时候,为了安全性考虑,通常都会要求搭配授权码或者安全令牌服务一并访问,这样可有效地对 `Server` 端的 `API` 资源起到一定程度的有效保护...
446 0
快速理解 IdentityServer4 中的认证 & 授权
|
消息中间件 前端开发 JavaScript
SSO 单点登录和 OAuth2.0 的区别和理解
SSO 单点登录和 OAuth2.0 的区别和理解
|
存储 JSON 前端开发
授权机制OAuth2.0
授权机制OAuth2.0
233 0
|
存储 安全 Java
案例之oauth2认证所需资源说明|学习笔记
快速学习案例之oauth2认证所需资源说明
案例之oauth2认证所需资源说明|学习笔记
|
存储 算法 前端开发
Security+Oauth2权限认证(案例 源码)
Security+Oauth2权限认证(案例 源码)
156 0
Security+Oauth2权限认证(案例 源码)
|
存储 安全 前端开发
OIDC SSO - OAuth2.0的授权模式选择
## 背景信息 &gt; OIDC SSO相关文档总共4篇,主要内容为对OIDC实现SSO登录流程时的各个细节和相关技术的阐述:1. 《OIDC SSO - OAuth2.0的授权模式选择》 2. 《[OIDC SSO - 相关SSO流程和注意事项](https://ata.alibaba-inc.com/articles/218495)》 3. 《[OIDC SSO - Discovery Mech
1093 0
OIDC SSO - OAuth2.0的授权模式选择
|
安全 数据安全/隐私保护
OAuth 2.0授权框架详解
OAuth 2.0授权框架详解
OAuth 2.0授权框架详解