最近我在学用 Spring MVC 写 RESTful API. 现在到了加用户的时候。
以下问题可能组织的不是很好,好多概念还很模糊 :)
1. 我现在这个练习的web service 简单来说就是有User,每个User 可以 CRUD 属于自己的 Task。
API想做成下面这样 (不知道spring security 有没有提供现成的功能)
POST /user/authenticate form_data: { username, password }
return: access_token
第一步获取这个token,这个会expire,如果expired 后续的call会返回“请重新authenticate”的status code。
后续的API call 都会加上这个 access_token
GET /user/{user_id}/tasks form_data:{ access_token }
return: a list of tasks
POST /user/{user_id}/tasks form_data: { access_token, content: “the content”}
return: success create task
POST /register form_data: { access_token, username: “”, password: “” }
return: success create user
以上的验证方式算是OAuth的简单用法么,以上方法正确可行么?
2. 宏观来说,一般对于web的app,好像都用form login,然后用cookie+session记录这个login的状态。但是对于一个REST Service,如何实现用户的认证?
我看了一下,
(a). 简单的可以用http basic, http digest但是这个必须要https。
(b). 复杂的是OAuth。 这个涉及到给第三方client权限,对于我的这个练习,web_client / mobile_client 是我自己写的,应该不需要认证。
(c). 好像也可以沿用cookie,在android上把cookie存在某个地方,模拟浏览器的那些对cookie的动作,这个感觉不那么好。
一般在企业里用的是什么样的用户认证方式?比如说QQ之类有不同客户端的应用(desktop,web,mobile)
以下问题可能组织的不是很好,好多概念还很模糊 :)
1. 我现在这个练习的web service 简单来说就是有User,每个User 可以 CRUD 属于自己的 Task。
API想做成下面这样 (不知道spring security 有没有提供现成的功能)
POST /user/authenticate form_data: { username, password }
return: access_token
第一步获取这个token,这个会expire,如果expired 后续的call会返回“请重新authenticate”的status code。
后续的API call 都会加上这个 access_token
GET /user/{user_id}/tasks form_data:{ access_token }
return: a list of tasks
POST /user/{user_id}/tasks form_data: { access_token, content: “the content”}
return: success create task
POST /register form_data: { access_token, username: “”, password: “” }
return: success create user
以上的验证方式算是OAuth的简单用法么,以上方法正确可行么?
2. 宏观来说,一般对于web的app,好像都用form login,然后用cookie+session记录这个login的状态。但是对于一个REST Service,如何实现用户的认证?
我看了一下,
(a). 简单的可以用http basic, http digest但是这个必须要https。
(b). 复杂的是OAuth。 这个涉及到给第三方client权限,对于我的这个练习,web_client / mobile_client 是我自己写的,应该不需要认证。
(c). 好像也可以沿用cookie,在android上把cookie存在某个地方,模拟浏览器的那些对cookie的动作,这个感觉不那么好。
一般在企业里用的是什么样的用户认证方式?比如说QQ之类有不同客户端的应用(desktop,web,mobile)