Project

General

Profile

« Previous | Next » 

Revision 61787

Fix authentication cast to OpenAIREAuthentication while it is not a instance of. Check cookie existance to avoid extra calls for get user info.

View differences:

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