Authing 文档
文档
快速开始
概念
使用指南
开发集成
应用集成
加入 APN
多租户(内测版)
旧版
快速开始
概念
使用指南
开发集成
应用集成
加入 APN
多租户(内测版)
旧版
使用指南
  • 快速开始

  • 对用户进行认证
  • 对用户进行权限管理
  • 授权
  • 管理用户账号
  • 管理用户目录
  • 同步中心(BETA)
  • 自建应用
  • ASA 表单代填
  • 单点登录 SSO
  • 成为联邦认证身份源
  • 连接外部身份源(IdP)
  • 打通微信生态
  • 迁移用户到 Authing
    • 使用 SDK 导入用户
    • 配置自定义密码函数
    • 从企业微信、钉钉等第三方身份源导入用户
  • 管理组织机构
  • 自动化
  • 审计日志
  • 配置安全信息

  • 配置用户池信息

  • 部署方案
  • 常见问题 FAQs

  1. 使用指南
  2. /
  3. 迁移用户到 Authing
  4. /
  5. 配置自定义密码函数

¶ 配置自定义密码函数

更新时间: 2021-06-17 12:49:23

如果你想自定义密码加密函数,请在此上传函数片段(目前仅支持 Node.js),函数模版请点击这里下载 (opens new window)(Authing 不会存储用户的密码原文)。

此功能适用于以下场景:

  1. 你将所有用户迁移进了 Authing,但不想让用户修改密码;
  2. 你不信任 Authing 的密码加密算法,想使用自己的密码加密算法;

本文档介绍了如何配置密码加密函数。

¶ 配置步骤

进入用户池,依次点击扩展能力 -> 自定义密码加密 ,如下图所示:

自定义密码加密方法

¶ 下载模版

点击页面中的「下载模版」下载 Node.js 代码模版,模版代码如下所示:

var getRawBody = require('raw-body');

const encryptPassword = password => {
	// 在此编写加密密码的函数

	return password;
};

/**
 *
 * @param {String} password 明文密码
 * @param {String} encryptedPassword 密文密码
 */
const comparePassword = (password, encryptedPassword) => {
	// 在此编写校验密码的函数

	return password === encryptedPassword;
};

module.exports.encrypt = function(request, response, context) {
	// get request body
	getRawBody(request, function(err, body) {
		const queries = request.queries;
		const password = queries.password;

		if (!password) {
			response.setStatusCode(500);
			response.setHeader('content-type', 'application/json');
			response.send(
				JSON.stringify(
					{
						message: 'Please provide password via url query'
					},
					null,
					4
				)
			);
		}

		const respBody = {
			password: encryptPassword(password) // 在此加密密码
		};

		response.setStatusCode(200);
		response.setHeader('content-type', 'application/json');
		response.send(JSON.stringify(respBody, null, 4));
	});
};

module.exports.validate = function(request, response, context) {
	// get request body
	getRawBody(request, function(err, body) {
		const queries = request.queries;
		const password = queries.password;
		const encryptedPassword = queries.encryptedPassword;

		if (!password) {
			response.setStatusCode(500);
			response.setHeader('content-type', 'application/json');
			response.send(
				JSON.stringify(
					{
						message: 'Please provide password via url query'
					},
					null,
					4
				)
			);
		}

		const respBody = {
			isValid: comparePassword(password, encryptedPassword) // 在此校验密码
		};

		response.setStatusCode(200);
		response.setHeader('content-type', 'application/json');
		response.send(JSON.stringify(respBody, null, 4));
	});
};

¶ 编写代码

你需要在 encryptPassword 函数中编写相应的密码加密方法,以及在 comparePassword 函数中编写相应的验证密码加密方法。

若开发者需要引入第三方 NPM 包,请直接使用 NPM 直接安装。

NPM 是 Node.js 生态的包管理工具。

以下是引入 bcrypt 包的一个代码示例:

$ npm install bcrypt

安装完成后在文件夹内会多出一个 node_modules 文件夹,之后编写代码:

var getRawBody = require("raw-body");

const encryptPassword = (password) => {
  // Implement your login here.
  // Your can use bcrypt for example
  // more info here: https://github.com/kelektiv/node.bcrypt.js
  const bcrypt = require('bcrypt');
  return await bcrypt.hash(plainText, await bcrypt.genSalt(10));
};

const vlidatePassword = (plainText, encrypted) => {
  // plainText is the plainText password use provide to be validate.
  // encrypted is user's password encryped in database.

  // Implement your login here.
  // Your can use bcrypt for example
  // more info here: https://github.com/kelektiv/node.bcrypt.js
  const bcrypt = require('bcrypt');
  return await bcrypt.compare(plainText, encrypted);
}

¶ 上传函数至服务器

Authing 支持的代码包只能为 .js 格式或 .zip 格式。

若你没有引入任何包,可直接上传 .js 格式的模版文件;若你引入了包请连带 node_modules 一起打包为 .zip 格式并在 Authing 控制台中上传。

¶ 测试密码加密函数

上传成功后开发者可测试密码加密效果,如下所示,在输入框中输入原密码后点击「加密测试」即可看到加密后的密码(若未上传任何加密函数将显示 Authing 默认的密码加密结果)。

¶ 注意事项

密码加密函数上传后即生效,会影响原用户,建议此功能在完全新的用户池中使用。

若你需要在旧用户池中修改密码加密函数,请联系我们:+86 17602502507。

上一篇: 使用 SDK 导入用户 下一篇: 从企业微信、钉钉等第三方身份源导入用户

本文是否有解决您的问题?

如果遇到其他问题,你可以在 authing-chat/community 联系我们。

  • 配置步骤
  • 注意事项

用户身份管理

集成第三方登录
手机号闪验 (opens new window)
通用登录表单组件
自定义认证流程

企业内部管理

单点登录
多因素认证
权限管理

开发者

开发文档
框架集成
博客 (opens new window)
GitHub (opens new window)
社区用户中心 (opens new window)

公司

服务状态
15559944612
sales@authing.cn
北京市朝阳区北辰世纪中心 B 座 16 层(总)
成都市高新区天府五街 200 号 1 号楼 B 区 4 楼 406 室(分)

京ICP备19051205号

beian京公网安备 11010802035968号

© 北京蒸汽记忆科技有限公司