云开发 CloudBase 集成腾讯数字身份管控平台 CIAM,快速实现账号管理
一、概述
在 Web 应用的开发搭建中,为用户提供登录认证功能是一项基础且普遍的需求,从以往的开发者反馈来看,这一模块往往需要自主搭建,耗时费力。而腾讯数字身份管控平台(公众版)(以下简称 Tencent CIAM)的出现则帮助开发者大大简化了这一部分的使用体验。
Tencent CIAM 用于管理公众互联网用户的账号、注册和认证规则,打通分散的用户数据孤岛、帮助应用更好地进行用户识别与画像,帮助开发者快速搭建安全、可靠的登录认证体系,实现用户登录认证。目前,云开发 Cloudbase 自定义登录可以无缝集成 Tencent CIAM,只需导入代码模版和几行代码修改,即可快速在应用中完成身份认证模块的添加。
二、CIAM 功能优势
灵活的注册/认证流程配置
支持自定义配置登录、注册、MFA、忘记用户、忘记密码等流程,支持自定义 logo、公司名称、域名配置能力。
多种应用类型支持
支持 Web 应用、单页应用、移动 APP 应用、小程序应用等应用类型。
多渠道统一登录体验
支持通过 web 应用、移动应用、H5 应用、小程序应用、微信公众号等多种渠道登录的统一登录体验。
多种认证方式支持
支持账号密码认证、短信认证、邮箱认证、等通用认证方式,支持微信、QQ、支付宝等主流社交认证源方式。
灵活用户数据模型自定义
支持根据业务配置不同的用户模型,支持用户自定义属性,支持为属性字段配置是否必填、字段类型等,提供正则表达式等高级能力。
账号融合支持
支持基于手机号、邮箱、微信 openid、微信 unionid 等认证属性识别同一个自然人用户并进行账号融合。
三、CloudBase Express 集成 Tencent CIAM
3.1 集成流程
开发者通过访问 CloudBase APP/Gateway 服务上注册的云函数, CloudBase 云函数代码中通过调用 Tencent CIAM 提供的 SDK(CIAM-NODE-SDK )提供的方法,使 CloudBase 应用可以直接调用和访问 Tencent CIAM 中的登录、获取用户信息以及退出等认证能力,并向外暴露该认证能力,使开发者应用根据现有业务完成认证能力的集成。开发者在集成 CloudBase Express 环境的代码后,将即刻拥有 Tencent CIAM 提供的强大的用户体系的认证管理能力。
3.2 配置流程
本文将以 CloudBase Express 应用为例,为大家介绍如何使用云开发 CloudBase 的快速创建、使用和集成 Tencent CIAM ,最后预览集成认证后的效果,只需要以下四步就可以轻松完成:
步骤一:通过云开发 CloudBase 创建 Express 应用
1、创建 Express 环境应用
在快速集成 CIAM 认证前,你需要创建一个 CloudBase Express 环境,进入CloudBase控制台首页 ,点击新建按钮,会弹出如下图所示的新建窗体:
通过选择 Express 应用,就可以快速创建一个带有 express 示例代码的 CloudBase 环境,进入云函数->点击函数名称->函数配置,可以看到创建好的函数信息如下图:
2、记录 CloudBase “访问地址” 数据
待创建完成后,CloudBase 会自动生成应用信息,点击我的应用->应用列表中点击管理->访问地址,复制该访问地址,将会用于后续 Tencent CIAM 参数的配置。
步骤二:创建 Tencent CIAM 应用,获取参数数据
在配置前我们需要先创建 Tencent CIAM 应用,Tencent CIAM 控制台提供了立即创建的能力,可以一键完成创建,操作步骤如下:
1、进入 数字身份管控平台(公众版) 控制台,点击立即创建按钮。
2、配置 redirectUri、logoutRedirectUrl 回调地址
进入 数字身份管控平台(公众版) ,在应用管理>应用列表>配置>参数配置页面中配置 redirectUri、logoutRedirectUrl 的值如下:
注: ${我的应用中的服务 url}即为第一步记录的值。
3、获取 CloudBase Express 模板代码中需要的参数数据
至此,Tencent CIAM 应用的创建和配置就已经完成啦,在进入到最后一步之前,我们需要在 Tencent CIAM 控制台中获取几个参数:clientId、userDomain、redirectUri、logoutRedirectUrl
,获取参数的位置和值如下:
在应用管理>应用列表>查看详情>参数配置页面中记录 redirectUri、logoutRedirectUrl 回调地址
在应用管理>应用列表页面中获取 clientId 应用 ID
2、在个性化设置>域名设置页面中获取 userDomain 租户域名
在域名设置界面中开发者可以使用腾讯云平台域名或者自有域名,确认后记录该数据值。
步骤三:在 CloudBase 中导入模板代码并更新参数数据
下载 cloudbase-express-ciam-sample.zip ,在提交方法中选择本地上传 ZIP 包进行代码导入,代码完成后点击保存并安装依赖按钮完成上传,接下来需要在代码编辑器中 找到如下 app.js 文件中代码片段并修改,根据上述获得的 clientId、userDomain、redirectUri、logoutRedirectUrl 参数值,更新 CloudBase Express 应用函数代码的 参数数据,进入云函数->点击对应的函数名称->函数代码 Tab 页,对下面的参数进行更新:
const { NodeClient } = require('ciam-node-sdk'); // node-sdk
const ciam = new NodeClient({
clientId: ‘your-clientid', // 此处为 CIAM 的应用 ID,CIAM 应用中获取
userDomain: 'your-userDomain', // 此处为租户域名,CIAM 域名管理中获取
redirectUri:'your-redirectUri', // 此处为回调地址,CIAM 应用管理中获取
logoutRedirectUrl: 'your-logoutRedirectUrl', // 此处为退出回调地址,CIAM 应用管理中获取
scopes: ['openid'],
protocol: 'OIDC_PKCE',
});
步骤四:预览集成效果
1、配置 HTTP 访问服务
在查看集成效果前,需要配置HTTP访问服务 ,进行服务注册。
需要将每一个 express 路由注册到 HTTP 访问服务中,配置完成后如下图:
2、预览集成效果
进入菜单我的应用,在应用列表中找到 express-starter, 点击访问按钮,即可打开链接,看到代码集成后的效果:
点击登录,页面自动跳转至 CIAM:
至此,你已经完成了 CIAM 的代码集成,可以直接使用 CIAM 的登录、注册功能了,全程不到五分钟,是不是非常快捷。
Tencent CIAM 产品目前已经正式发布,提供了专用的 ciam-node-sdk,通过该 SDK,您可以将登录认证模块与您自己的 Web 函数项目快速集成,大大简化开发流程,提升开发体验。
ciam-node-sdk:https://www.npmjs.com/package/ciam-node-sdk
四、CloudBase 自定义登录集成 Tencent CIAM
如果你除了在 Tencent CIAM 控制台中控制用户,也希望在云开发 CloudBase 中管理用户,那么你需要基于 CloudBase 自定义登录来集成 Tencent CIAM。
使用 CloudBase 自定义登录集成 CIAM 的用户,只需要将通过 Tencent CIAM 登录成功后获取的用户信息交给 CloudBase 即可完成集成,该集成方案官方已给出非常详细的集成办法: 自定义登录 ,以下为集成的流程和配置示例说明:
4.1 集成流程
4.2 集成配置
获取环境 ID 和 自定义登录私钥
登录 Cloudbase 控制台在环境>环境总览>页面中获取环境 ID
在环境 > 登录授权 下的自定义登录栏中,单击私钥下载或者私钥复制:
2、颁发 Cloudebase 的 Ticket
接下来调用 CloudBase 服务端 SDK,在初始化时传入第 1 步的参数和 Tencent CIAM 用户已完成登录鉴权后获取到的用户信息(customUserId),便可以签发出 Ticket,并返回至用户端。
服务端代码示例:
const cloudbase = require("@cloudbase/node-sdk");
// 1. 初始化 SDK
const app = cloudbase.init({
env: "your-env-id",
// 传入自定义登录私钥
credentials: require("/path/to/your/tcb_custom_login.json")
});
// 2. “创建 CIAM 认证服务” 中获得的用户信息,注意 CIAM 的用户 id 取 sub 字段(currentUser.sub)
const customUserId = currentUser.sub;
// 3. 创建 ticket
const ticket = app.auth().createTicket(customUserId);
// 4. 将 ticket 返回至客户端
return ticket;
用户端应用获取到 Ticket 之后,便可以调用客户端 SDK 提供的 auth.signInWithTicket()登录 CloudBase:
import cloudbase from '@cloudbase/js-sdk';
const app = cloudbase.init({
env: 'your-env-id'
});
const auth = app.auth();
async function login(){
const loginState = await auth.getLoginState();
// 1. 建议登录前检查当前是否已经登录
if(!loginState){
// 2. 请求开发者自有服务接口获取 ticket
const ticket = await fetch('...');
// 3. 登录 CloudBase
await auth.customAuthProvider().signIn(ticket);
}
}
login();
恭喜你,至此已经完成了 CloudBase 自定义登录集成 Tencent CIAM 的全部工作,可以在云开发 CloudBase 的 用户管理 菜单下看到通过 Tencent CIAM 登录的用户信息了,如下图:
评论