15.4.1 UAA用户账户和身份验证服务
UAA用于管理用户,用作OAuth2提供者,当客户端用户使用时为其发布令牌。通过与登录服务器协作,它可以通过用户的凭据对其进行认证,也可以使用这些凭据用作SSO服务。该服务为管理用户账号和注册OAuth2客户端提供端点。
UAA包括以下功能:用户和群组管理,以及用于UAA认证的登录和注销服务。
1、用户和群组的数据集结构
用户数据集结构如图15-22所示。
图15-22 用户数据集结构
群组数据集结构如图15-23所示。
图15-23 群组数据集结构
2、用户API
(1)创建用户
URL:/uaa/Users
请求方式:POST
参数:
名称 |
说明 |
userName |
登录名(必填),必须唯一 |
password |
密码(必填) |
name中的givenName |
姓名(必填) |
emails |
邮箱(必填),只能填一个 |
phoneNumbers |
电话号码,只能填一个 |
其它列标识 |
对应输入值 |
返回:状态码,200—请求成功,400—无效的JSON格式或不存在的数据列,401—无效的令牌,409—登录名已经存在,请求成功返回用户JSON对象
示例:
$.ajax({
url:"/uaa/Users",
type:"POST",
contentType:"application/json",
data:JSON.stringify({
"userName":"zhangsan",
"name": {"givenName":"张三"},
"password":"secret",
"phoneNumbers":[ {"value":"123456789"}],
"emails":[{"value":"zhangsan@newdao.com"}]
})
});
(2)修改用户
URL:/uaa/Users/用户ID
请求方式:PATCH
参数:
名称 |
说明 |
列标识 |
输入新值 |
emails |
不能修改 |
返回:状态码,200—请求成功,400—无效的JSON格式或不存在的数据列,401—无效的令牌,404—用户不存在,请求成功返回用户JSON对象
示例:
$.ajax({
url:"/uaa/Users/8fa39e09-4c43-481c-9017-2abf9738eabf",
type:"PATCH",
contentType:"application/json",
headers: {
"Accept" : "application/json",
"If-Match" : "*"
},
data:JSON.stringify({
"userName":"lisi3",
"name": {"givenName":"李四3"},
"password":"secret3"
})
});
(3)删除用户
URL:/uaa/Users/用户ID
请求方式:DELETE
参数:无
返回:状态码,200—请求成功,400—无效的JSON格式或不存在的数据列,401—无效的令牌,404—用户不存在,请求成功返回用户JSON对象
示例:
$.ajax({
url:"/uaa/Users/8fa39e09-4c43-481c-9017-2abf9738eabf",
type:"DELETE",
contentType:"application/json"
});
3、群组API
(1)创建群组
URL:/uaa/Groups
请求方式:POST
参数:
名称 |
说明 |
displayName |
群组名(必填),必须唯一 |
description |
群组描述 |
type |
必须是default(必填),否则管理后台组织管理功能中不显示 |
返回:状态码,200—请求成功,409—群组名已经存在,请求成功返回群组JSON对象
示例:
$.ajax({
url:"/uaa/Groups",
type:"POST",
contentType:"application/json",
data:JSON.stringify({
"displayName":"产品部",
"description":"开发牛刀云",
"type":"default"
})
});
(2)群组中加入用户
URL:/uaa/Groups/群组ID/members
请求方式:PATCH
参数:
名称 |
说明 |
value |
用户ID |
返回:状态码,200—请求成功,400—无效的用户ID,404—群组不存在,请求成功返回群组成员JSON对象
示例:
$.ajax({
url:"/uaa/Groups/5f914487-187e-42c0-8bf9-7e74e5391022/members",
type:"POST",
contentType:"application/json",
data:JSON.stringify({
"value":"8fa39e09-4c43-481c-9017-2abf9738eabf"
})
});
(3)群组中删除用户
URL:/uaa/Groups/群组ID/members/用户ID
请求方式:DELETE
参数:无
返回:状态码,200—请求成功,404—群组或成员不存在,请求成功返回群组成员JSON对象
示例:
$.ajax({
url:"/uaa/Groups/5f914487-187e-42c0-8bf9-7e74e5391022
/members/8fa39e09-4c43-481c-9017-2abf9738eabf",
type:"DELETE",
contentType:"application/json"
});
(4)删除群组
URL:/uaa/Groups/群组ID
请求方式:DELETE
参数:无
返回:状态码,200—请求成功,请求成功返回群组JSON对象
示例:
$.ajax({
url:"/uaa/Groups/5f914487-187e-42c0-8bf9-7e74e5391022",
type:"DELETE",
contentType:"application/json"
});
4、登录注销API
(1)登录 login
URL:/login
请求方式:POST
参数:
名称 |
说明 |
username |
登录名或手机号,都可用于登录 |
password |
密码 |
返回:状态码,200—请求成功,请求成功返回用户JSON对象
示例:
$.ajax({
type : "POST",
url : "/login",
dataType:"json",
contentType:"application/json",
data : {
username : "zhangsan",
password : "secret"
}
});
(2)注销 logout
URL:/logout
请求方式:GET
参数:无
返回:状态码,200—请求成功
示例:
$.ajax({
type : "GET",
url : "/logout",
contentType:"application/json",
});
(3)注册 register
URL:/uaa/Users/register
请求方式:POST
参数:同创建用户。请求头中传用户输入的验证码
返回:状态码,200—请求成功,500——发送失败
示例:
$.ajax({
url:"/uaa/Users/register",
type:"POST",
contentType:"application/json",
headers: {"code":"515742"},
data:JSON.stringify({
"active":true,
"userName":"159123456",
"name": {"formatted":"王五","givenName":"王五"},
"password":"secret",
"emails":[{"value":"wangwu@newdao.com","primary":true}],
"phoneNumbers":["159123456"]
})
});
(4)获取当前用户信息
URL:/uaa/userinfo
请求方式:GET
参数:无
返回:状态码,200—请求成功,400—无效的JSON格式或不存在的数据列,401—无效的令牌,403—需要openid,请求成功返回用户JSON对象
示例:
$.ajax({
url:"/uaa/userinfo",
type:"GET",
contentType:"application/json"
});