说明
ciam-node-sdk 的下载链接:
https://www.npmjs.com/package/ciam-node-sdk
。CIAM 路由设计
路由地址 | 描述 |
/ | index.html |
/login | 登录接口 |
/callback | 登录回调 |
/logout | 退出接口 |
/userinfo | 获取用户信息 |
SDK 提供的方法
方法名称 | 描述 |
generateLoginUrl | 生成认证登录 URL |
fetchToken | 通过 code 获取 token |
getUser | 获取用户信息 |
logout | 退出登录 |
初始化
代码示例
const { NodeClient } = require('ciam-node-sdk'); // node-sdkconst 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',});
参数说明
参数名 | 类型 | 是否必填 | 长度限制 | 描述 |
clientId | string | 是 | - | 管理端添加的小程序应用 ID |
userDomain | string | 是 | - | 租户域名(自定义域名获取) |
redirectUri | string | 是 | - | 登录成功后跳转的 URL |
logoutRedirectUrl | string | 是 | - | 登录退出后跳转的 URL |
scopes | array[Agreement] | 是 | - | 遵循 oauth2.0 规范,默认为 openid |
protocol | string | 否 | - | OIDC_PKCE(默认)、OIDC_DEFAULT |
生成认证登录 URL
用于生成登录的 URL,实现快速跳转到 CIAM 登录页面。
代码示例
// 登录 CIAMapp.get('/login', async(req, res) => {const url = await ciam.generateAuthUrl();res.redirect(url);})
获取 token 和用户信息
该方法用于当 CIAM 登录成功时,根据页面返回的 code 调用 fetchToken ,获取到的 token 用于获取用户信息。
代码示例
// 处理redirect回调app.get('/callback', async (req, res) => {const { code } = req.query;const result = await ciam.fetchToken(code);const { access_token, id_token } = result;const userInfo = await ciam.getUser();req.session.user = { ...userInfo, userInfo };res.redirect('/');})
fetchToken 参数说明
参数名 | 类型 | 是否必填 | 长度限制 | 描述 |
code | string | 是 | 与 CIAM 认证返回的 code 相同 | 该参数由 CIAM 托管并返回 |
退出登录
该方法用于退出 CIAM 登录。
代码示例
// 退出CIAM登录app.get('/logout', async (req, res) => {if (!req.session.user) {res.redirect('/');}const url = await ciam.logout();req.session.destroy();res.redirect(url);})