Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
unidocs-zh
提交
dce6425e
unidocs-zh
项目概览
DCloud
/
unidocs-zh
通知
3216
Star
106
Fork
815
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
94
列表
看板
标记
里程碑
合并请求
70
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
unidocs-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
94
Issue
94
列表
看板
标记
里程碑
合并请求
70
合并请求
70
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
dce6425e
编写于
11月 09, 2022
作者:
C
chenruilong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
docs: update uni-id-summary.md
上级
3f1b8e76
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
184 addition
and
1 deletion
+184
-1
docs/uniCloud/uni-id-summary.md
docs/uniCloud/uni-id-summary.md
+184
-1
未找到文件。
docs/uniCloud/uni-id-summary.md
浏览文件 @
dce6425e
...
...
@@ -193,7 +193,12 @@ uni-id的云端配置文件在`uniCloud/cloudfunctions/common/uni-config-center/
```
json
//
如果拷贝此内容切记去除注释
{
"passwordSecret"
:
""
,
//
数据库中password字段是加密存储的,这里的passwordSecret即为加密密码所用的密钥,注意修改为自己的密钥,使用一个较长的字符串即可
"passwordSecret"
:
[
{
"value"
:
"hmac-sha256"
,
"version"
:
1
}
],
//
数据库中password字段是加密存储的,这里的passwordSecret即为加密密码所用的加密算法,详见
[
密码安全
]
"passwordStrength"
:
"medium"
,
//
密码强度,新增于
uni-id-pages
1.0
.
8
版本,见下方说明
"tokenSecret"
:
""
,
//
生成token所用的密钥,注意修改为自己的,使用一个较长的字符串即可
"tokenExpiresIn"
:
7200
,
//
全平台token过期时间,未指定过期时间的平台会使用此值
...
...
@@ -1280,3 +1285,181 @@ module.exports = {
beforeRegister
}
```
### 密码安全@password-safe
uni-id 默认使用了
`hmac-sha1`
加密算法对密码进行加密,自
`uni-id-co@1.0.28`
版本起新增了
`hmac-sha256`
加密算法,开发者可以自己需求选择不同的算法,推荐使用
`hmac-sha256`
算法。
在
`uni-config-center/uni-id/config.json`
中配置,
[
uni-id/config.json说明
](
uni-id-summary.html#config
)
```
json
{
"passwordSecret"
:
[
{
"type"
:
"hmac-sha256"
,
//
必须指定算法类型
默认
hmac-sha
1
"version"
:
1
}
]
}
```
修改 passwordSecret
[
参考
](
uni-id-summary.html#modifysecret
)
#### 升级 hmac-256 加密算法指南
适用于
`uni-id-co@1.0.28`
以下版本,
首先确认
`uni-config-center/uni-id/config.json`
中
`passwordSecret`
字段类型
`passwordSecret`
字段可能是
`string`
或者
`array`
类型,示例如下:
```
json
//
1
string
{
"passwordSecret"
:
"passwordSecret-demo"
}
//
2
array
{
"passwordSecret"
:
[
{
"value"
:
"passwordSecret-demo"
,
"version"
:
1
}
]
}
```
如果
`passwordSecret`
是字符串类型,修改为数组类型后,在
`passwordSecret`
中添加
`hmac-256`
算法,同时
`version`
加 1
```
json
{
"passwordSecret"
:
[
{
"value"
:
"passwordSecret-demo"
,
"version"
:
1
},{
"type"
:
"hmac-256"
,
"version"
:
2
}
]
}
```
#### 自定义加密算法
如果内置的加密算法无法满足业务需求,可以自定义加密规则。
首先在
`uni-config-center/uni-id/config.json`
中增加自定义密码类型
`custom`
```
json
{
"passwordSecret"
:
[
{
"value"
:
"passwordSecret-demo"
,
"version"
:
1
},
{
"type"
:
"hmac-sha256"
,
//
必须指定算法类型
默认
hmac-sha
1
"version"
:
2
},
{
"type"
:
"custom"
,
//
固定值
custom,代表使用自定义规则
"version"
:
3
}
]
}
```
在
`uni-config-center/uni-id/custom-password.js`
文件(没有请手动创建)中创建加密与验证方法即可。
```
javascript
module
.
exports
=
{
/**
* 密码加密
* @param {String} password 用户输入的密码
* @param {Object} clientInfo 客户端信息
* @param {Object} passwordSecret config.json 匹配到的 passwordSecret
* @return {{version, passwordHash}}
*/
encryptPassword
:
function
({
password
,
clientInfo
,
passwordSecret
})
{
// 必须按照此格式返回
return
{
passwordHash
:
password
,
version
:
passwordSecret
.
version
}
},
/**
* 密码验证
* @param {String} password 用户输入的密码
* @param {Object} userRecord 用户信息
* @param {Object} clientInfo 客户端信息
* @param {Object} passwordSecret config.json 匹配到的 passwordSecret
* @return {boolean}
*/
verifyPassword
:
function
({
password
,
userRecord
,
clientInfo
,
passwordSecret
})
{
return
password
===
userRecord
.
password
}
}
```
#### 其它系统迁移用户至uni-id兼容方案
从其他数据库或者从业务中迁移系统的用户表到
`uni-id`
可能会遇到用户密码兼容问题,比如旧系统中用户密码加密方案为
`md5`
,而
`uni-id`
使用的是
`hmac-sha256`
,为了无缝迁移用户密码可以采用
`uni-id`
自定义密码规则过渡到
`hmac-sha256`
加密算法。
1.
迁移之前我们需要在
`uni-config-center/uni-id/config.json`
文件中创建自定义类型的
`paswordSecret`
,如下:
```
json
{
"passwordSecret"
:
[
{
"type"
:
"custom"
,
"version"
:
1
}
]
}
```
2.
处理旧系统中用户表数据,主要处理以下与密码相关的字段
-
密码字段重命名为
`password`
,值不变
-
添加
`password_secret_version`
字段,值为
`custom`
类型的
`version`
3.
在
`uni-config-center/uni-id/custom-password.js`
文件中创建
`verifyPassword`
方法用户验证旧系统用户密码。
```
javascript
module
.
exports
=
{
/**
* 密码验证
* @param {String} password 用户输入的密码
* @param {Object} userRecord 用户信息
* @param {Object} clientInfo 客户端信息
* @param {Object} passwordSecret config.json 匹配到的 passwordSecret
* @return {boolean}
*/
verifyPassword
:
function
({
password
,
userRecord
,
clientInfo
,
passwordSecret
})
{
return
password
===
userRecord
.
password
}
}
```
4.
将处理完毕的用户表导入进 uni-id-users 表中即可。
5.
旧系统用户第一次登录时将会使用自定义规则的验证方法,验证通过后密码将升级为配置文件中最新的算法规则。
**注意**
如果最新版本的 type 是 custom,那么所有用户的加密及校验都会使用自定义算法规则。
如果仅是为了迁移使用,请另外在
`passwordSecret`
中添加
`hmac-sha256`
类型算法,用于其他用户的加密与校验。
这样只有旧系统中的用户才会使用
`custom`
自定义规则,其他用户或者迁移后的用户会使用
`hmac-sha256`
算法规则。
```
json
{
"passwordSecret"
:
[
{
"type"
:
"custom"
,
"version"
:
1
},
{
"type"
:
"hmac-sha256"
,
"version"
:
2
}
]
}
```
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录