2013-09-23 66 views
2

我使用一个自定义的协议,以确保我的REST API - 哈希一串独特的数据一起(包括用户的令牌),并发送它作为一个Authorization头(非常类似于AWS rest api)。REST API认证机制

目前,我正在做的用户发送的未\ PW,以获得未来的所有呼叫令牌:

POST http://xxxx/token 
Body: {"username" : "Bob", "password":"foo"} 

我的问题是我应该如何保护初始登录呼叫产生用户的令牌?目前的情况是否足够好?

回答

0

您的解决方案看起来像是在POST正文中调用了具有用户名和密码的j_security_servlet。 你可以找到更多有关servlet这里: http://docs.oracle.com/javaee/1.4/tutorial/doc/Security5.html

你可能想选择一个TLS安全连接到加密你的用户名/密码,你寄过来。 但是您可能想要结合使用HTTP基本身份验证和TLS或其他成熟的技术,而不是设计自己的技术。

Btw。我的回答是使用SSL/TLS。

0

您不妨使用OAuth2,因为这基本上就是您正在实施的。请参见“4.3资源所有者密码凭证授权。”:http://tools.ietf.org/html/rfc6749#section-4.3

在OAuth2用户的请求是这样的(例如,从RFC):

POST /token HTTP/1.1 
Host: server.example.com 
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW 
Content-Type: application/x-www-form-urlencoded 

grant_type=password&username=johndoe&password=A3ddj3w 

用于授权客户端应用程序的“授权”报头的使用,正文中的用户名/密码是您用户的凭据。

这里是对应的响应:

HTTP/1.1 200 OK 
Content-Type: application/json;charset=UTF-8 
Cache-Control: no-store 
Pragma: no-cache 

{ 
    "access_token":"2YotnFZFEjr1zCsicMWpAA", 
    "token_type":"example", 
    "expires_in":3600, 
    "refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA", 
    "example_parameter":"example_value" 
} 

OAuth2用户需要用于安全TLS/SSL(如brazo还回答)。