package org.oliot.epcis.service.capture.secured; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util.Base64; import javax.servlet.ServletContext; import org.oliot.epcis.configuration.Configuration; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.context.ServletContextAware; /** * Copyright (C) 2014-2016 Jaewook Byun * * This project is part of Oliot open source (http://oliot.org). Oliot EPCIS * v1.2.x is Java Web Service complying with Electronic Product Code Information * Service (EPCIS) v1.2. * * @author Jaewook Byun, Ph.D student * * Korea Advanced Institute of Science and Technology (KAIST) * * Real-time Embedded System Laboratory(RESL) * * bjw0829@kaist.ac.kr, bjw0829@gmail.com */ @Controller @RequestMapping("/GetClientToken") public class GetClientToken implements ServletContextAware { @Autowired ServletContext servletContext; @Override public void setServletContext(ServletContext servletContext) { this.servletContext = servletContext; } public ResponseEntity<?> asyncPost(String inputString) { ResponseEntity<?> result = post(null, null); return result; } @RequestMapping(method = RequestMethod.POST) @ResponseBody public ResponseEntity<?> post(@RequestParam(required = true) String userID, @RequestParam(required = true) String password) { /* jaeheeHa0 AC_token reference */ Configuration.logger.info(" Client Token retrieve"); String token_string = ""; String secret = userID + ":" + password; String auth_secret = Base64.getEncoder().encodeToString(secret.getBytes()); String auth = "Basic " + auth_secret; StringBuffer response = null; try { String url = "http://" + Configuration.ac_api_address + "/oauth/token"; URL obj = new URL(url); HttpURLConnection con = (HttpURLConnection) obj.openConnection(); // add reuqest header con.setRequestMethod("POST"); con.setRequestProperty("Authorization", auth); con.setRequestProperty("Content-type", "application/x-www-form-urlencoded"); String urlParameters = "grant_type=password&username=" + userID + "&password=" + password; // Send post request con.setDoOutput(true); DataOutputStream wr = new DataOutputStream(con.getOutputStream()); wr.writeBytes(urlParameters); wr.flush(); wr.close(); int responseCode = con.getResponseCode(); System.out.println("\nSending 'POST' request to URL : " + url); System.out.println("Post parameters : " + urlParameters); System.out.println("Response Code : " + responseCode); BufferedReader in; in = new BufferedReader(new InputStreamReader(con.getInputStream())); String inputLine; response = new StringBuffer(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); } catch (IOException e) { e.printStackTrace(); } // print result if (response != null) { token_string = response.toString(); } Configuration.logger.info(" Token :" + token_string); return new ResponseEntity<>(token_string, HttpStatus.OK); } }