Web services RESTAPI认证机制

Web services RESTAPI认证机制,web-services,security,rest,restful-authentication,Web Services,Security,Rest,Restful Authentication,我正在使用自定义协议来保护我的REST API- 将一组唯一数据散列在一起(包括用户的令牌),并将其作为授权头发送(非常类似于) 目前,我正在让用户发送它的un\pw,以便为将来的所有呼叫获取令牌: POST http://xxxx/token Body: {"username" : "Bob", "password":"foo"} 我的问题是如何保护生成用户令牌的初始登录调用?当前的情况足够好吗?您的解决方案看起来像是对一个j_security_servlet的调用,该servlet的正文中

我正在使用自定义协议来保护我的REST API- 将一组唯一数据散列在一起(包括用户的令牌),并将其作为授权头发送(非常类似于)

目前,我正在让用户发送它的un\pw,以便为将来的所有呼叫获取令牌:

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

我的问题是如何保护生成用户令牌的初始登录调用?当前的情况足够好吗?

您的解决方案看起来像是对一个j_security_servlet的调用,该servlet的正文中有用户名和密码。 您可以在此处找到有关servlet的更多信息:

您可能希望选择TLS安全连接来加密您发送的用户名/密码。 但您可能想考虑将HTTP基本身份验证与TLS或其他一些经验证的技术结合起来,而不是设计自己的技术


顺便说一句,我的答案是使用SSL/TLS。

您也可以使用OAuth2,因为这基本上就是您要实现的。请参阅“4.3.资源所有者密码凭据授予”:

在OAuth2中,请求如下(来自RFC的示例):

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

以下是相应的答复:

 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一样也提供了答案)

 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"
 }