2014-12-30 73 views
1

我目前正在使用彈簧安全和彈簧引導來調查OAuth2。雖然這個協議的概念對我來說很清楚,但實現的細節並不是這樣(Spring並沒有提供很多例子和教程)。因此,我會非常感謝您回答以下問題:使用OAuth2進行彈簧安全性的用戶授權

  1. 「密碼」授權類型的用途是什麼? OAuth2規範沒有提及它。它只是Spring實現某種「授權快捷方式」?
  2. 資源服務器如何處理訪問令牌(檢查它是否仍然有效,範圍等)?我是否需要實現一些東西,或者它是由Spring Security和ResourceServerConfig提供的?
  3. RS如何知道哪個用戶(非客戶端)請求了資源?特定的用戶資源與id,唯一的用戶名等綁定在一起,令牌是否具有這種信息?如何檢索它以便在資源控制器中使用?
  4. 授權服務器(糾正我,如果我錯了)能夠檢查客戶端應用程序是否有權限請求資源。據我瞭解,它不應該知道用戶(資源所有者)。在我通過Google進行身份驗證的情況下,Facebook或其他服務用戶身份驗證就是他們的情況。關於OAuth2和Resources Server是一個應用程序的應用程序(我目前正在開發用於測試目的的應用程序),我應該在哪裏放置UserDetailsS​​ervice?以及如何組合它以便首先授權客戶端(在這種情況下由應用程序生成的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); 
    } 
    } 
    
  5. 是否有一些JS庫,與像支持hello.js自定義應用程序的授權流程幫助(據我之爲知之)衆所周知的服務?

任何幫助,將不勝感激:)

回答

0

這是一個很大的問題;讓我回答3開始:

  1. grant_type與價值password是如圖所示的規範這裏的資源所有者密碼憑據授予型官方保留值:https://tools.ietf.org/html/rfc6749#section-4.3.2所以它不是Spring特定或定製

  2. RS可以驗證令牌本身如果是自包含的,結構化的(例如JWT)否則將需要一個回調認證服務器來驗證它

  3. 步驟驗證結果2.可能包含關於用戶(或資源所有者)的ude信息,這些用戶允許訪問客戶端

+0

你說得對。我的誤解是由於RFC明確指出密碼授權類型的請求應包括授權類型,密碼,用戶名和範圍(可選)。但在一些文章和視頻教程中,我發現對於這種授權類型,他們還提供了AS所需的client_id(在仔細閱讀RFC之後))。這一點澄清了問題。什麼是用戶憑據身份驗證?我的情況應該在哪裏實施? –

相關問題