一、概述
在 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…
四、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 登录的用户信息了,如下图: