2016-05-13 6 views
0

Ich habe eine Spring Security oauth2-basierte Anwendung, konfiguriert mit einem JDBC Client Store. Gemäß den OAuth2-Spezifikationen darf Client Secret nur verwendet werden, wenn Client-Server-Verbindungen vertrauenswürdig sind, und sicherlich nicht von einer Webanwendung, aus der das Clientgeheimnis extrahiert werden kann.Spring Security - Access Token ohne client_secret in Parameter

Also die Frage ist - wie konfigurieren wir die /oauth/token Anfragen mit einem Grant-Typ als "Passwort" ein Zugangstoken, ohne die client_secret Schlüssel in den POST-Parameter zu erzeugen?

Dies ist meine Autorisierungsserverkonfiguration. Ziemlich einfach würde ich sagen.

<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

Ich denke, Sie sind verwirrt mit 2-legged-Flow (impliziter Zuschuss Flow) gemeint für Browser-basierten Clients, die nicht Client Geheimnis mit sich bringt, aber das ist nicht Passwort-Flow. – dvsakgec

Antwort

-1

Gemäß RFC6749, die OAuth2 Specs, muss ein Passwort Erteilungstyp den Client secret in bestanden haben entweder als Anforderungskörperparameter oder als Base64-codierte Zeichenkette. Der Kennwortvergabe-Typ ist nicht für Anwendungen geeignet, die eine geringere Sicherheit oder ein hohes Risiko haben, dass Geheimnisse der Außenwelt ausgesetzt werden.

Für Anwendungen, die einen User-Agent (Webbrowser) haben, ist Impliziter Grant Type die am besten ausgesuchte Methode.

Refer the OAuth2 Specs here

Verwandte Themen