22
22
import java .util .Objects ;
23
23
import java .util .Set ;
24
24
25
- import jakarta .servlet .http .HttpServletRequest ;
26
- import jakarta .servlet .http .HttpServletResponse ;
27
-
28
25
import org .springframework .beans .factory .annotation .Value ;
29
26
import org .springframework .core .ParameterizedTypeReference ;
30
27
import org .springframework .http .HttpStatus ;
31
28
import org .springframework .http .MediaType ;
32
29
import org .springframework .http .ResponseEntity ;
33
- import org .springframework .security .authentication .UsernamePasswordAuthenticationToken ;
34
- import org .springframework .security .core .authority .AuthorityUtils ;
35
- import org .springframework .security .core .context .SecurityContext ;
36
- import org .springframework .security .core .context .SecurityContextHolder ;
37
- import org .springframework .security .core .context .SecurityContextHolderStrategy ;
38
30
import org .springframework .security .oauth2 .client .OAuth2AuthorizedClient ;
39
31
import org .springframework .security .oauth2 .client .annotation .RegisteredOAuth2AuthorizedClient ;
40
32
import org .springframework .security .oauth2 .client .registration .ClientRegistration ;
41
33
import org .springframework .security .oauth2 .client .registration .ClientRegistrationRepository ;
42
34
import org .springframework .security .oauth2 .core .ClientAuthenticationMethod ;
43
35
import org .springframework .security .oauth2 .core .OAuth2AuthorizationException ;
44
- import org .springframework .security .oauth2 .core .OAuth2DeviceCode ;
45
36
import org .springframework .security .oauth2 .core .OAuth2Error ;
46
37
import org .springframework .security .oauth2 .core .endpoint .OAuth2ParameterNames ;
47
- import org .springframework .security .web .context .HttpSessionSecurityContextRepository ;
48
- import org .springframework .security .web .context .SecurityContextRepository ;
49
38
import org .springframework .stereotype .Controller ;
50
39
import org .springframework .ui .Model ;
51
40
import org .springframework .util .LinkedMultiValueMap ;
@@ -83,12 +72,6 @@ public class DeviceController {
83
72
84
73
private final String messagesBaseUri ;
85
74
86
- private final SecurityContextRepository securityContextRepository =
87
- new HttpSessionSecurityContextRepository ();
88
-
89
- private final SecurityContextHolderStrategy securityContextHolderStrategy =
90
- SecurityContextHolder .getContextHolderStrategy ();
91
-
92
75
public DeviceController (ClientRegistrationRepository clientRegistrationRepository , WebClient webClient ,
93
76
@ Value ("${messages.base-uri}" ) String messagesBaseUri ) {
94
77
@@ -98,7 +81,7 @@ public DeviceController(ClientRegistrationRepository clientRegistrationRepositor
98
81
}
99
82
100
83
@ GetMapping ("/device_authorize" )
101
- public String authorize (Model model , HttpServletRequest request , HttpServletResponse response ) {
84
+ public String authorize (Model model ) {
102
85
// @formatter:off
103
86
ClientRegistration clientRegistration =
104
87
this .clientRegistrationRepository .findByRegistrationId (
@@ -143,13 +126,9 @@ public String authorize(Model model, HttpServletRequest request, HttpServletResp
143
126
Instant issuedAt = Instant .now ();
144
127
Integer expiresIn = (Integer ) responseParameters .get (OAuth2ParameterNames .EXPIRES_IN );
145
128
Instant expiresAt = issuedAt .plusSeconds (expiresIn );
146
- String deviceCodeValue = (String ) responseParameters .get (OAuth2ParameterNames .DEVICE_CODE );
147
129
148
- OAuth2DeviceCode deviceCode = new OAuth2DeviceCode (deviceCodeValue , issuedAt , expiresAt );
149
- saveSecurityContext (deviceCode , request , response );
150
-
151
- model .addAttribute ("deviceCode" , deviceCode .getTokenValue ());
152
- model .addAttribute ("expiresAt" , deviceCode .getExpiresAt ());
130
+ model .addAttribute ("deviceCode" , responseParameters .get (OAuth2ParameterNames .DEVICE_CODE ));
131
+ model .addAttribute ("expiresAt" , expiresAt );
153
132
model .addAttribute ("userCode" , responseParameters .get (OAuth2ParameterNames .USER_CODE ));
154
133
model .addAttribute ("verificationUri" , responseParameters .get (OAuth2ParameterNames .VERIFICATION_URI ));
155
134
// Note: You could use a QR-code to display this URL
@@ -210,19 +189,4 @@ public String authorized(Model model,
210
189
return "index" ;
211
190
}
212
191
213
- private void saveSecurityContext (OAuth2DeviceCode deviceCode , HttpServletRequest request ,
214
- HttpServletResponse response ) {
215
-
216
- // @formatter:off
217
- UsernamePasswordAuthenticationToken deviceAuthentication =
218
- UsernamePasswordAuthenticationToken .authenticated (
219
- deviceCode , null , AuthorityUtils .createAuthorityList ("ROLE_DEVICE" ));
220
- // @formatter:on
221
-
222
- SecurityContext securityContext = this .securityContextHolderStrategy .createEmptyContext ();
223
- securityContext .setAuthentication (deviceAuthentication );
224
- this .securityContextHolderStrategy .setContext (securityContext );
225
- this .securityContextRepository .saveContext (securityContext , request , response );
226
- }
227
-
228
192
}
0 commit comments