Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
2301_76266857
unidocs-zh
提交
dce6425e
U
unidocs-zh
项目概览
2301_76266857
/
unidocs-zh
与 Fork 源项目一致
Fork自
DCloud / unidocs-zh
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
unidocs-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录