我目前正在使用彈簧安全和彈簧引導來調查OAuth2。雖然這個協議的概念對我來說很清楚,但實現的細節並不是這樣(Spring並沒有提供很多例子和教程)。因此,我會非常感謝您回答以下問題:使用OAuth2進行彈簧安全性的用戶授權
- 「密碼」授權類型的用途是什麼? OAuth2規範沒有提及它。它只是Spring實現某種「授權快捷方式」?
- 資源服務器如何處理訪問令牌(檢查它是否仍然有效,範圍等)?我是否需要實現一些東西,或者它是由Spring Security和ResourceServerConfig提供的?
- RS如何知道哪個用戶(非客戶端)請求了資源?特定的用戶資源與id,唯一的用戶名等綁定在一起,令牌是否具有這種信息?如何檢索它以便在資源控制器中使用?
授權服務器(糾正我,如果我錯了)能夠檢查客戶端應用程序是否有權限請求資源。據我瞭解,它不應該知道用戶(資源所有者)。在我通過Google進行身份驗證的情況下,Facebook或其他服務用戶身份驗證就是他們的情況。關於OAuth2和Resources Server是一個應用程序的應用程序(我目前正在開發用於測試目的的應用程序),我應該在哪裏放置UserDetailsService?以及如何組合它以便首先授權客戶端(在這種情況下由應用程序生成的js),然後用戶(資源所有者)並生成令牌?當然,我已經實施ClientDetailService並注入配置。我應該在哪裏注入UserDetailService?
@Configuration @EnableAuthorizationServer public class OAuth2Config extends AuthorizationServerConfigurerAdapter { @Autowired private AuthenticationManager authenticationManager; @Autowired private MongoClientDetailsService cds; @Override public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception { endpoints.authenticationManager(authenticationManager); } @Override public void configure(ClientDetailsServiceConfigurer clients) throws Exception { clients.withClientDetails(cds); } }
是否有一些JS庫,與像支持hello.js自定義應用程序的授權流程幫助(據我之爲知之)衆所周知的服務?
任何幫助,將不勝感激:)
你說得對。我的誤解是由於RFC明確指出密碼授權類型的請求應包括授權類型,密碼,用戶名和範圍(可選)。但在一些文章和視頻教程中,我發現對於這種授權類型,他們還提供了AS所需的client_id(在仔細閱讀RFC之後))。這一點澄清了問題。什麼是用戶憑據身份驗證?我的情況應該在哪裏實施? –