雲開發CloudBase整合騰訊數字身份管控平臺CIAM,快速實現賬號管理

騰訊安全發表於2021-11-12

一、概述

在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提供的強大的使用者體系的認證管理能力。

雲開發CloudBase整合騰訊數字身份管控平臺CIAM,快速實現賬號管理

3.2 配置流程

本文將以CloudBase Express應用為例,為大家介紹如何使用雲開發CloudBase的快速建立、使用和整合 Tencent CIAM ,最後預覽整合認證後的效果,只需要以下四步就可以輕鬆完成:

雲開發CloudBase整合騰訊數字身份管控平臺CIAM,快速實現賬號管理

步驟一:透過雲開發CloudBase建立Express應用

1、建立Express環境應用

在快速整合CIAM認證前,你需要建立一個CloudBase Express環境,進入CloudBase控制檯首頁 ,點選新建按鈕,會彈出如下圖所示的新建窗體:

雲開發CloudBase整合騰訊數字身份管控平臺CIAM,快速實現賬號管理

透過選擇Express應用,就可以快速建立一個帶有express示例程式碼的CloudBase環境,進入雲函式->點選函式名稱->函式配置,可以看到建立好的函式資訊如下圖:

雲開發CloudBase整合騰訊數字身份管控平臺CIAM,快速實現賬號管理

2、記錄CloudBase “訪問地址” 資料

待建立完成後,CloudBase會自動生成應用資訊,點選我的應用->應用列表中點選管理->訪問地址,複製該訪問地址,將會用於後續Tencent CIAM引數的配置。

雲開發CloudBase整合騰訊數字身份管控平臺CIAM,快速實現賬號管理

步驟二:建立Tencent CIAM應用,獲取引數資料

在配置前我們需要先建立Tencent CIAM應用,Tencent CIAM控制檯提供了立即建立的能力,可以一鍵完成建立,操作步驟如下:

1、進入 數字身份管控平臺(公眾版) 控制檯,點選立即建立按鈕。

雲開發CloudBase整合騰訊數字身份管控平臺CIAM,快速實現賬號管理

2、配置redirectUri、logoutRedirectUrl回撥地址

進入 數字身份管控平臺(公眾版) ,在應用管理>應用列表>配置>引數配置頁面中配置redirectUri、logoutRedirectUrl的值如下:

雲開發CloudBase整合騰訊數字身份管控平臺CIAM,快速實現賬號管理

引數名

引數值

redirectUri

$/callback

logoutRedirectUrl

$/logout ,$/

注: $即為第一步記錄的值。

3、獲取CloudBase Express模板程式碼中需要的引數資料

至此,Tencent CIAM應用的建立和配置就已經完成啦,在進入到最後一步之前,我們需要在Tencent CIAM控制檯中獲取幾個引數:clientId、userDomain、redirectUri、logoutRedirectUrl

,獲取引數的位置和值如下:

在應用管理>應用列表>檢視詳情>引數配置頁面中記錄redirectUri、logoutRedirectUrl回撥地址

雲開發CloudBase整合騰訊數字身份管控平臺CIAM,快速實現賬號管理

在應用管理>應用列表頁面中獲取clientId 應用ID

雲開發CloudBase整合騰訊數字身份管控平臺CIAM,快速實現賬號管理

2、在個性化設定>域名設定頁面中獲取userDomain 租戶域名

在域名設定介面中開發者可以使用騰訊雲平臺域名或者自有域名,確認後記錄該資料值。

雲開發CloudBase整合騰訊數字身份管控平臺CIAM,快速實現賬號管理

步驟三:在CloudBase中匯入模板程式碼並更新引數資料

雲開發CloudBase整合騰訊數字身份管控平臺CIAM,快速實現賬號管理

下載 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訪問服務 ,進行服務註冊。

雲開發CloudBase整合騰訊數字身份管控平臺CIAM,快速實現賬號管理

需要將每一個express路由註冊到HTTP訪問服務中,配置完成後如下圖:

雲開發CloudBase整合騰訊數字身份管控平臺CIAM,快速實現賬號管理

2、預覽整合效果

進入選單我的應用,在應用列表中找到express-starter, 點選訪問按鈕,即可開啟連結,看到程式碼整合後的效果:

雲開發CloudBase整合騰訊數字身份管控平臺CIAM,快速實現賬號管理

點選登入,頁面自動跳轉至CIAM:

雲開發CloudBase整合騰訊數字身份管控平臺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 整合流程

雲開發CloudBase整合騰訊數字身份管控平臺CIAM,快速實現賬號管理

4.2 整合配置

獲取環境ID 和 自定義登入私鑰

登入Cloudbase控制檯在環境>環境總覽>頁面中獲取環境ID

雲開發CloudBase整合騰訊數字身份管控平臺CIAM,快速實現賬號管理

在環境 > 登入授權 下的自定義登入欄中,單擊私鑰下載或者私鑰複製:

雲開發CloudBase整合騰訊數字身份管控平臺CIAM,快速實現賬號管理

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登入的使用者資訊了,如下圖:

雲開發CloudBase整合騰訊數字身份管控平臺CIAM,快速實現賬號管理


Tencent CIAM的產品文件連結:https://cloud.tencent.com/document/product/1441/55003


Tencent CIAM的官網控制檯連結:https://console.cloud.tencent.com/ciam


歡迎進入騰訊IDAM體驗交流群,免費活動正在火熱進行中!


雲開發CloudBase整合騰訊數字身份管控平臺CIAM,快速實現賬號管理

相關文章