2017-04-18 78 views
2

我正在使用Spring引導來編寫Restful API端點。我想創建登錄/註銷功能。我不想使用Spring引導的默認登錄頁面。Spring引導Restful API:簡單認證

從我的理解,一個簡單而安全的方式來做到這一點,就是:

  1. 客戶提供服務器的用戶名和密碼,
  2. 服務器發送認證碼,其用戶可以使用後續調用該API端點
  3. 的認證代碼是有效的,直到用戶註銷/一定的時間量經過

是否有任何常規的名稱爲的這種方法認證?

我不想使用Spring引導登錄頁面。 Spring引導是否有任何其他的默認實現這個身份驗證方法?如果是,它會在哪裏存儲認證碼。它存儲在內存中嗎?

+0

「我不想使用Spring啓動登錄頁面「。 - 你沒有解釋爲什麼*。那你想要更換呢? – chrylis

+0

我正在實施restful api。沒有用戶界面。 –

+0

那麼也許你正在尋找帶有密碼授權的Spring Security OAuth2? – chrylis

回答

1

我以前有過同樣的問題。由於您正在實施Rest API,因此默認情況下它應該是無狀態的,所以這意味着您每次想要請求某些API時都應該進行身份驗證。如果你喜歡這種方式,也許嘗試擁有一些你可以用來執行認證的CAS系統。這與你在問題中描述的幾乎相同。 (這是我博客中簡化CAS的post)。否則,你也可以考慮在你的Rest服務前面有一個入口點或者代理,在這個代理中你可以根據它提供的憑證爲客戶設置一個令牌,然後要求客戶發送這個令牌與請求一起。設置令牌的到期時間並在該時間後無效。

我不認爲在Spring引導中對此有任何現有的實現,但對於基於CAS和令牌的請求,您可以使用Spring Security作爲部分功能,例如, TokenBasedAuthentication已經在Spring Security中實現了

+0

與其他答案中提到的JWT有什麼不同? –

+1

當我發佈我的答案時,他還沒有在那裏:),對於基於令牌的解決方案,我認爲它們完全一樣。 – Simon

2

無狀態,基於令牌的認證就是你要找的。 JSON Web Tokens(JWT)是其中的一個實現。

我寫了一篇關於在SpringBoot中設置JWT以便與Angular一起使用的教程。它太長時間,包括在這裏 - 這是一個兩個舞伴,和第二部分,智威湯遜處理在http://chariotsolutions.com/blog/post/angular-2-spring-boot-jwt-cors_part2

如果你想在第一部分,它在http://chariotsolutions.com/blog/post/angular-2-spring-boot-jwt-cors_part1

+1

我發現這篇文章也有幫助: https://auth0.com/blog/securing-spring-boot-with-jwts/ –