Revision 61787
Added by Konstantinos Triantafyllou over 2 years ago
AuthorizationUtils.java | ||
---|---|---|
10 | 10 |
|
11 | 11 |
import javax.servlet.http.Cookie; |
12 | 12 |
import javax.servlet.http.HttpServletRequest; |
13 |
import java.util.Arrays; |
|
13 | 14 |
import java.util.Collections; |
14 | 15 |
|
15 | 16 |
@Component |
16 | 17 |
public class AuthorizationUtils { |
17 | 18 |
private final Logger log = Logger.getLogger(this.getClass()); |
18 | 19 |
private final SecurityConfig securityConfig; |
20 |
private final static String TOKEN = "AccessToken"; |
|
21 |
private final static String SESSION = "OpenAIRESession"; |
|
19 | 22 |
|
20 | 23 |
@Autowired |
21 | 24 |
AuthorizationUtils(SecurityConfig securityConfig) { |
... | ... | |
27 | 30 |
return null; |
28 | 31 |
} |
29 | 32 |
for (Cookie c : request.getCookies()) { |
30 |
if (c.getName().equals("AccessToken")) {
|
|
33 |
if (c.getName().equals(TOKEN)) {
|
|
31 | 34 |
return c.getValue(); |
32 | 35 |
} |
33 |
|
|
34 | 36 |
} |
35 | 37 |
return null; |
36 | 38 |
} |
... | ... | |
39 | 41 |
String url = securityConfig.getUserInfoUrl() + (securityConfig.isDeprecated()?getToken(request):""); |
40 | 42 |
RestTemplate restTemplate = new RestTemplate(); |
41 | 43 |
try { |
42 |
ResponseEntity<UserInfo> response = restTemplate.exchange(url, HttpMethod.GET, createHeaders(request), UserInfo.class); |
|
43 |
return response.getBody(); |
|
44 |
if(hasCookie(request)) { |
|
45 |
ResponseEntity<UserInfo> response = restTemplate.exchange(url, HttpMethod.GET, createHeaders(request), UserInfo.class); |
|
46 |
return response.getBody(); |
|
47 |
} |
|
48 |
return null; |
|
44 | 49 |
} catch (RestClientException e) { |
45 |
log.error(e.getMessage()); |
|
50 |
log.error(url + ":" + e.getMessage());
|
|
46 | 51 |
return null; |
47 | 52 |
} |
48 | 53 |
} |
49 | 54 |
|
55 |
private boolean hasCookie(HttpServletRequest request) { |
|
56 |
Cookie[] cookies = request.getCookies(); |
|
57 |
if(securityConfig.isDeprecated()) { |
|
58 |
return Arrays.stream(cookies).anyMatch(cookie -> cookie.getName().equalsIgnoreCase(TOKEN)); |
|
59 |
} else { |
|
60 |
return Arrays.stream(cookies).anyMatch(cookie -> cookie.getName().equalsIgnoreCase(SESSION)); |
|
61 |
} |
|
62 |
} |
|
63 |
|
|
50 | 64 |
private HttpEntity<HttpHeaders> createHeaders(HttpServletRequest request) { |
51 | 65 |
HttpHeaders headers = new HttpHeaders(); |
52 | 66 |
headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); |
Also available in: Unified diff
Fix authentication cast to OpenAIREAuthentication while it is not a instance of. Check cookie existance to avoid extra calls for get user info.