云开发CloudBase集成腾讯数字身份管控平台CIAM,快速实现账号管理

发布者:腾讯安全
发布于:2021-11-12 17:26

一、概述

在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的值如下:

参数名

参数值

redirectUri

$/callback

logoutRedirectUrl

$/logout ,$/

注: $即为第一步记录的值。

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登录的用户信息了,如下图:


Tencent CIAM的产品文档链接:https://cloud.tencent.com/document/product/1441/55003


Tencent CIAM的官网控制台链接:https://console.cloud.tencent.com/ciam


欢迎进入腾讯IDAM体验交流群,免费活动正在火热进行中!



声明:该文观点仅代表作者本人,转载请注明来自看雪