用户鉴权中心建设草稿

云用户登录安全信息表

 

设计原则:为使用平台的每个用户建立一个安全登录信息表。

简称:USLIUser security login information

用户基础信息

名称

字段名/元素名

可查询

注解

版本

version

用户编码

userId

用户名称

userName

性别

gender

昵称

nickName

照片

photo

验证手机号

validate-MobilePhone

验证邮件地址

validate-Email

验证人脸

validate-Face

保留

验证指纹

validate- fingerprint

保留

最近登录时间

lastLoginTime

创建时间

createTime

密码

passWord

1、不低于8位,至少含一个大写字符和一个小写字符

2、私钥加密

XML

<?xml version="1.0" encoding="UTF-8"?>

<?xml version="1.0" encoding="UTF-8"?>

<!–用户基础信息–>

<userBaseInformation>

   <id value="123"/>

   <meta>

       <versionId value="1"/>

       <lastUpdated value="2012-8-8 23:59:59Z"/>

   </meta>

   <version value="1000"/>

   <!–0..*–>

   <useName>

       <!–usual | official | temp | nickname | anonymous | old | maiden–>

       <!–bind:   http://www.cnfhir.com/vs/nameUse–>

       <use value="official"/>

       <text value="王五"/>

       <family value=""/>

       <given value=""/>

   </useName>

   <!–生理性别代码表(GB/T 2261.1-2003)–>

   <!–urn:oid:2.16.156.10011.2.3.3.4–>

   <!–0:未知的性别1:男性2:女性9:未说明的性别–>

   <gender>

       <system value="http://www.cnfhir.com/vs/gender"/>

       <code value="1"/>

       <display value="男性"/>

   </gender>

   <identifier>

       <!– 身份证号命名空间卫生系统的OID–>

       <system value="urn:oid:2.16.156.10011.1.3"/>

       <!– 身份证号 –>

       <value value="530801197603062217"/>

   </identifier>

   <photo value="Base64"/>

   <validate>

       <mobilePhone value="138******"/>

       <Email value="123@qq.com"/>

   </validate>

   <createTime value="2012-8-8 23:59:59"/>

   <language>

       <coding>

          <system value="urn:ietf:bcp:47"/>

          <code value="zh-CN"/>

          <display value="Chinese(China)"/>

       </coding>

   </language>

</userBaseInformation>

 

 

 

数据库信息

基础信息库表: UserInfo

字段名

类型

注解

userId

String(18)

用户编码+版本号(主键)

versionId

String(10)

数据实例版本号

struVer

String(10)

用户信息数据模版本

encryptionUserData

Text

加密用户数据

useState

int

使用状态

1:正在使用

0:历史

createdTime

datetime

建立时间

 

登录校验表:UserValidate

字段名

类型

注解

userId

String(18)

用户编码(主键)

passWordHash

String(20)

密码哈希

passWordRetryTimes

int

密码重试次数

mobilePhoneMask

String(20)

手机号伪码

显示为"138*******1"

mobilePhoneHash

String

真实手机号哈希值

EmailMask

String(50)

邮件地址伪码

5****@qq.com

EmailHash

String

真实邮件地址哈希值

Status

String(1)

0:锁定

1:正常

lastLoginTime

Datetime

最近登录时间

createTime

Datetime

建立时间

Code

String(100)

code

Code_genernate_time

Datetime

Code 码产生时间

Code_ expires_in

int

code超时(S

access_token

String(100)

access_token

accessToken_generate_time

Datetime

Accesstoken产生时间

access_token expires_in

Int

access_token过期(S

refresh_token

String(100)

refresh_token

 

规则:

       用户信息表采用数字证书加密存储,数据库中不明文保存敏感信息(采用伪码和哈希值配对鉴别),敏感信息包括:手机号、邮箱地址、密码。系统中不保存明文用户密码信息。

       1、密码错3次,需要等待10分钟再试。

       2、密码错6次,账户锁定。需要进行验证解锁。

       3、用户名丢失者,可以通过手机号或者邮件验证,同时必须修改新的密码

 

Oauth2授权APP登录表

表名:Oauth2_PermitClientApp

字段名

类型

说明

userId

String

clientUrl

String

https://192.168.1.23:8001/?app=123

 

createTime

 

URL:访问参数

参数类别

 

参数名

说明

 

 

 

 

第一步:客户端请求访问某应用APP123)资源

http:// localhost:8000/xxx?appid=123&*****

服务端发现没有参数appAccessCode,服务端就会自动转向登录界面:

https:// localhost:8090/oauth/login.html? redirect_uri=

 http:// localhost:8000/xxx?appid=123&*****

注意这里的redirect_uri需要转换字符,不能包含?&

 

第二步:客户端进入登录界面,输入用户名和密码提交,产生随机数state。要求服务器产生临时code

https://localhost:8090/oauth/authorize?response_type=code&scope=read write&client_id=123&redirect_uri=

 http:// localhost:8000/xxx?appid=123&*****&state=09876999

服务端解析,校验用户名和密码,产生Code返回,记录state

服务端自动转向到App服务端:

http:// localhost:8000/xxx?appid=123&*****&login?code=bca654ab6133ab3cbc55bb751da93b1c&state=09876999

 

 

第三步:APP服务端使用codestateoauth服务器交换accessCode

localhost:8090/oauth/token?client_id=test&client_secret=test&grant_type=authorization_code&code=bca654ab6133ab3cbc55bb751da93b1c&redirect_uri= localhost:8000/xxx?appid=123&*****&scope=read  write&state=09876999

 

oauth服务器收到请求,回复APP服务端。

{

"access_token": "23e003b5e4b9b7eda228b845532d8336",

"refresh_token": "d6b49710f398c405a62f31a6676c5830",

"token_type": "Bearer",

"expires_in": 43199

}

 

 

第四步:App服务器获得access_token,acess_token 访问oauth服务中的用户信息

localhost:8090/oauth/userinfo?access_code=23e003b5e4b9b7eda228b845532d8336

返回用户信息

userBaseInformation信息(xml或者json

此处省略……..

 

第五步:App服务器建立一个登陆用户信息表,同时生成app_access_code(用户访问App授权码)

userId:

access_code:

login_time

refresh_token:

app_access_code:

expires_in:

 

发出转向:

http:// localhost:8000/xxx?appid=123&*****&userid=123&app_access_code=xxx

 

 

access_token过期后,重新想oauth服务申请新的access_code

http://localhost:8090/oauth/token?grant_type=refresh_token&refresh_token=ad3941d1-c6dd-4a2e-a9c8-eac6a9a59dd2

 

结束:

 

 

 

资源路径及名称关键字

系统

关键词名称

说明

Oauth

oauth/token

Oauth

oauth/login.html

Oauth

oauth/authorize

Oauth

oauth/userinfo

 

 

URL参数关键词表

系统

关键词名称

说明

Oauth

Code

不区分大小写

Oauth

appAccessCode

Oauth

login

Oauth

redirect_uri

Oauth

appid

Oauth

scope

Oauth

state

Oauth

response_type

Oauth

grant_type

 

要发表评论,您必须先登录