用户身份管理服务

用户身份管理服务(UIMS)是用来管理Web应用程序的大量用户。可以管理多达2000000000个用户的接口。

关键概念

领域

所有身份和组都属于一个圈子。每个身份都在唯一的圈子内,不能跨界。

一个web应用程序通常只有一个圈子。

用户

用户通过用户名或邮箱地址标识。用户名和邮箱在一个圈子内都是唯一的。用户通过提供与用户名相关联的密码来证明自己。

用户可属于组0个或多个组。每个组会设置有自己的独立的权限。

同一圈子中,允许定义64个组(0-63),而最后一组被保留为root组。属于root组的用户可以在圈子中管理用户。

root组

属于root组的用户有权限来管理圈子中的用户,尤其是,下列操作仅可以由root用户执行

  1. 删除用户
  2. 重置用户密码
  3. 列出所有用户
  4. 将用户分配到组
  5. 将用户移除组
  6. 列出的组中的所有用户

引导

Root用户可以通过配置创建:

  • <service  path=" user"   userdb=" users.db"   root=" root"   email=" email@example.com"   password=" password"   assignGroup=" admin:63" >... </service>

在上例中: 定义 users.db 并且初始化用户名为 'root' 密码为 'password' 的root用户。

参数 描述 类型 默认/要求
path 默认服务路径 String 一般使用user
userdb 存储用户信息的DB名称 String 默认为users.db
root 默认管理员账号 String 使用字母或和数字的组合
email 默认管理员的邮件 String 填写邮箱地址
password 默认管理员的密码 String 字母、数字、特殊字符的组合
assignGroup 指定管理员的权限 String 一般填写admin:63

root用户创建后,root用户可以使用修改密码服务来更改密码。

服务规范

用户验证服务

权限: 公开

使用GET服务常用配置如下所示:

  • <service  path=" user"   userdb=" users.db"   root=" root"   email=" email@example.com"   password=" password"   assignGroup=" admin:63" >... </service>
    • <get  xpipe=" http://www.xmlpipe.org/xpe/db/user/validate" />
    </service>

用户注册服务

权限: 公开

HTTP方法: POST

  • <service  path=" user"   userdb=" users.db"   root=" root"   email=" email@example.com"   password=" password"   assignGroup=" admin:63" >... </service>
    • <get  xpipe=" http://www.xmlpipe.org/xpe/db/user/validate" />
    • <post  xpipe=" http://www.xmlpipe.org/xpe/db/user/register" />
    </service>

用户注册服务需要的参数:

参数 描述 类型 默认/要求
username 唯一的用户名 String 使用字母或和数字的组合
email 用户的邮箱,需要唯一 String 用户的邮箱,找回密码使用
password 用户密码 String 字母、数字、特殊字符的组合

POST body

POST body被视为用户的配置文件。它常用来描述用户的其他信息。字段类型为JSON格式。

                
    {
        "name": "张三",
        "gender": "男" 
    }
                

添加/移除用户所在组

权限: root组

HTTP方法: POST, DELETE

  • <service  path=" user"   userdb=" users.db"   root=" root"   email=" email@example.com"   password=" password"   assignGroup=" admin:63" >... </service>
    • ...
    • <post  xpipe=" http://www.xmlpipe.org/xpe/db/user/admin/group" />
    • <del  xpipe=" http://www.xmlpipe.org/xpe/db/user/admin/group/del" />
    </service>

添加/移除用户所在组服务需要的参数:

参数 描述 类型 默认/要求
username 用户的用户名 String 必须
groups 一个或多个group。使用“,”分隔 String 必须
错误代码

Code 描述
0 没有问题
1 用户不存在
2 group错误
3 无权限或未被授权

查询用户所在组

权限: root组或用户自己

HTTP方法: GET

此服务允许检查用户所属的组。如果提供的用户名与当前用户不对应,那就必须使用管理员用户才能够访问。

  • <service  path=" user"   userdb=" users.db"   root=" root"   email=" email@example.com"   password=" password"   assignGroup=" admin:63" >... </service>
    • ...
    • <get  xpipe=" http://www.xmlpipe.org/xpe/db/user/group/query" />
    </service>
参数 描述 类型 默认/要求
username 被查询用户名 String 选填,如不填则显示当前用户的所在组

返回结果:

    
    {"username":"user1","groups":["staff","root"]};
        

显示用户列表

权限: root组

HTTP方法: GET

  • <service  path=" user"   userdb=" users.db"   root=" root"   email=" email@example.com"   password=" password"   assignGroup=" admin:63" >... </service>
    • ...
    • <get  xpipe=" http://www.xmlpipe.org/xpe/db/users" />
    </service>