2016-05-13 56 views
0

我有一個基於spring安全oauth2的應用程序,配置了一個JDBC客戶端存儲。根據OAuth2規範,客戶機密只能在客戶機 - 服務器連接值得信任時才使用,當然不能從Web應用程序 - 客戶機機密可以從中提取。春季安全 - 訪問令牌沒有client_secret在參數

所以問題是 - 我們如何配置,讓/oauth/token請求與授予類型爲「密碼」產生一個訪問令牌,在POST參數中沒有client_secret鍵?

這是我的授權服務器配置。我會說很基本。

<sec:http pattern="/token" create-session="stateless" use-expressions="true" authentication-manager-ref="authenticationManager"> 
     <sec:headers> 
      <sec:frame-options policy="DENY" /> 
      <sec:hsts /> 
     </sec:headers> 
     <sec:csrf disabled="true" /> 
     <sec:anonymous enabled="false" /> 
     <sec:http-basic entry-point-ref="clientAuthenticationEntryPoint" /> 
     <sec:custom-filter ref="clientCredentialsTokenEndpointFilter" before="BASIC_AUTH_FILTER" /> 
     <sec:access-denied-handler ref="oauthAccessDeniedHandler" /> 
    </sec:http> 
+1

我猜你是混淆2條腿的流量(隱性補助流)意味着基於瀏覽器的客戶端不涉及客戶端密鑰,但不是密碼流。 – dvsakgec

回答

-1

根據RFC6749,所述的OAuth2規格,密碼交付式必須在無論是作爲一個請求身體參數或作爲BASE64編碼的字符串傳遞的客戶端密鑰。密碼授權類型不適用於安全性較低或祕密暴露於外部世界的高風險應用程序。

對於具有用戶代理(Web瀏覽器)的應用程序,隱式授予類型是最好的方法。

Refer the OAuth2 Specs here