private Remembered checkSession( final String sessionId, HttpServletRequest request, HttpServletResponse response) { try { SimpleClientHttpRequestFactory tokenExtender = new SimpleClientHttpRequestFactory() { @Override protected void prepareConnection(HttpURLConnection connection, String httpMethod) throws IOException { super.prepareConnection(connection, httpMethod); connection.setRequestProperty("Authorization", "Bearer " + sessionId); connection.setRequestProperty("Accept", "application/json"); connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); } }; String userResponse = new RestTemplate(tokenExtender).getForObject(userDetailsUri, String.class); return makeNewRemembered( Json.read(userResponse).asJsonMap().get("username").asString(), sessionId); } catch (RestClientException ex) { // TODO: обработать исключение - записать в лог и т.д. - потенциально ошибки соединения с // сайтом авторизации, ошибки авторизации System.out.println( "GOT exception: " + ex .toString()); // <-- не делайте так на боевом сервере, используйте // java.util.Logger if (ex instanceof HttpClientErrorException) System.out.println( "response: " + ((HttpClientErrorException) ex).getResponseBodyAsString()); return null; } }
private String finishSessionRetrieval(HttpServletRequest request) throws UnsupportedEncodingException { try { String authCode = request.getParameter("code"); SimpleClientHttpRequestFactory serviceAuthExtender = new SimpleClientHttpRequestFactory() { @Override protected void prepareConnection(HttpURLConnection connection, String httpMethod) throws IOException { super.prepareConnection(connection, httpMethod); String authorization = clientId + ":" + clientSecret; byte[] encodedAuthorisation = Base64.encode(authorization.getBytes()); connection.setRequestProperty( "Authorization", "Basic " + new String(encodedAuthorisation)); connection.setRequestProperty( "Accept", "application/json, application/x-www-form-urlencoded"); connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); } }; String tokenRequest = "grant_type=authorization_code&code=" + authCode + "&redirect_uri=" + URLEncoder.encode(request.getRequestURL().toString(), "utf-8"); String tokenResponse = new RestTemplate(serviceAuthExtender) .postForObject(URI.create(accessTokenUri), tokenRequest, String.class); return Json.read(tokenResponse).asJsonMap().get("access_token").asString(); } catch (RestClientException ex) { // TODO: обработать исключение - записать в лог и т.д. - потенциально ошибки соединения с // сайтом авторизации, ошибки авторизации System.out.println( "GOT exception: " + ex .toString()); // <-- не делайте так на боевом сервере, используйте // java.util.Logger if (ex instanceof HttpClientErrorException) System.out.println( "response: " + ((HttpClientErrorException) ex).getResponseBodyAsString()); return null; } }