簡體   English   中英

REST api身份驗證機制

[英]REST api authentication mechanism

我正在使用自定義協議保護我的REST API的安全-將一堆唯一的數據(包括用戶的令牌)哈希在一起,並將其作為Authorization標頭發送(非常類似於AWS rest api )。

目前,我正在向用戶發送un \\ pw,以便為以后的所有通話獲取令牌:

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

我的問題是我應該如何保護產生用戶令牌的初始登錄呼叫? 目前的狀況夠好嗎?

您的解決方案看起來像是對POST正文中具有用戶名和密碼的j_security_servlet的調用。 您可以在此處找到有關Servlet的更多信息: http : //docs.oracle.com/javaee/1.4/tutorial/doc/Security5.html

您可能要選擇一個TLS安全連接來加密發送過來的用戶名/密碼。 但是您可能想將HTTP基本身份驗證與TLS或其他一些成熟的技術結合起來使用,而不是設計自己的技術。

順便說一句。 我的答案是使用SSL / TLS。

您最好使用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也可以回答)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM