254 lines
9.4 KiB
Java
254 lines
9.4 KiB
Java
//package eu.dnetlib.uoaadmintools.handlers.utils;
|
|
//
|
|
//import org.apache.log4j.Logger;
|
|
//
|
|
//import javax.servlet.http.Cookie;
|
|
//import javax.servlet.http.HttpServletRequest;
|
|
//import java.io.BufferedReader;
|
|
//import java.io.InputStreamReader;
|
|
//import java.io.StringReader;
|
|
//import java.net.HttpURLConnection;
|
|
//import java.net.URL;
|
|
//import java.util.Enumeration;
|
|
//
|
|
//import com.google.gson.Gson;
|
|
//
|
|
///**
|
|
// * Created by argirok on 27/2/2018.
|
|
// */
|
|
//public class AuthorizationUtils {
|
|
// private final Logger log = Logger.getLogger(this.getClass());
|
|
// private String userInfoUrl = null;
|
|
//// private String communityAPI ="";
|
|
//// List<String> adminRoles = new ArrayList<String>(Arrays.asList("Super Administrator", "Portal Administrator"));
|
|
// private String originServer= null;
|
|
// public Boolean checkCookies(HttpServletRequest request){
|
|
// Boolean valid = true;
|
|
// String cookieValue = this.getCookie(request,"AccessToken");
|
|
// if(cookieValue == null || cookieValue.isEmpty()){
|
|
// log.info("no cookie available ");
|
|
// valid = false;
|
|
// }else {
|
|
// String headerValue = this.getHeadersInfo(request, "x-xsrf-token");
|
|
// if(headerValue == null || headerValue.isEmpty()){
|
|
// log.info("no header available ");
|
|
// valid = false;
|
|
// }else{
|
|
// if(!cookieValue.equals(headerValue)){
|
|
// log.info("no proper header or cookie ");
|
|
// valid = false;
|
|
// }else if(!hasValidOrigin(this.getHeadersInfo(request, "origin"))){
|
|
// log.info("no proper origin ");
|
|
// valid = false;
|
|
// }
|
|
// }
|
|
// }
|
|
// return valid;
|
|
// }
|
|
// public String getToken(HttpServletRequest request){
|
|
// return this.getHeadersInfo(request, "x-xsrf-token");
|
|
// }
|
|
// private String getCookie(HttpServletRequest request, String cookieName){
|
|
// if(request.getCookies() == null){
|
|
// return null;
|
|
// }
|
|
// for(Cookie c: request.getCookies()){
|
|
//// log.debug("cookie "+ c.getName()+ " "+ c.getValue());
|
|
// if(c.getName().equals(cookieName)){
|
|
// return c.getValue();
|
|
// }
|
|
//
|
|
// }
|
|
// return null;
|
|
// }
|
|
// private String getHeadersInfo(HttpServletRequest request, String name) {
|
|
//
|
|
// Enumeration headerNames = request.getHeaderNames();
|
|
// while (headerNames.hasMoreElements()) {
|
|
// String key = (String) headerNames.nextElement();
|
|
// String value = request.getHeader(key);
|
|
//// log.debug(" key: "+ key+" value: "+ value);
|
|
// if(name.equals(key)){
|
|
// return value;
|
|
// }
|
|
// }
|
|
// return null;
|
|
// }
|
|
// public boolean hasValidOrigin(String origin) {
|
|
// if (origin != null && origin.indexOf(originServer)!=-1) {
|
|
// return true;
|
|
// }
|
|
// log.debug("Not valid origin. Origin server is \"" + origin + "\", but expected value is \"" + originServer + "\". If the expec cted value is not right, check properties file. ");
|
|
// return false;
|
|
// }
|
|
// public UserInfo getUserInfo(String accessToken){
|
|
// String url=userInfoUrl+accessToken;
|
|
// URL obj = null;
|
|
// String responseStr=null;
|
|
//// log.debug("User info url is "+url);
|
|
//
|
|
// try {
|
|
// obj = new URL(url);
|
|
// HttpURLConnection con = (HttpURLConnection) obj.openConnection();
|
|
// if (con.getResponseCode() != 200) {
|
|
// log.debug("User info response code is: " + con.getResponseCode());
|
|
// return null;
|
|
// }
|
|
// BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
|
|
// StringBuffer response = new StringBuffer();
|
|
// String inputLine;
|
|
// while ((inputLine = in.readLine()) != null) {
|
|
// response.append(inputLine).append("\n");
|
|
// }
|
|
// in.close();
|
|
// responseStr = response.toString();
|
|
// }catch(Exception e){
|
|
// log.error("An error occured while trying to fetch user info ",e);
|
|
// return null;
|
|
// }
|
|
// return json2UserInfo(responseStr);
|
|
// }
|
|
// private UserInfo json2UserInfo(String json) {
|
|
//
|
|
//// log.debug("Try to create userInfo class from json: "+json);
|
|
// if (json == null){
|
|
// return null;
|
|
// }
|
|
//
|
|
// BufferedReader br = new BufferedReader(new StringReader(json));
|
|
// //convert the json string back to object
|
|
// Gson gson = new Gson();
|
|
// UserInfo userInfo = null;
|
|
// try {
|
|
// userInfo = gson.fromJson(br, UserInfo.class);
|
|
// }catch(Exception e){
|
|
// log.debug("Error in parsing json response. Given json is : "+json, e);
|
|
// return null;
|
|
// }
|
|
//
|
|
//// log.debug("Original response.........: "+userInfo.toString());
|
|
// try {
|
|
// if(userInfo != null && userInfo.getEdu_person_entitlements() != null ) {
|
|
//
|
|
// for (int i = 0; i < userInfo.getEdu_person_entitlements().size(); i++) {
|
|
// String role = userInfo.getEdu_person_entitlements().get(i);
|
|
//// log.debug("AAI role: "+role);
|
|
// role = role.split(":")[role.split(":").length-1];
|
|
// role = role.replace("+"," ");
|
|
//// log.debug("Adding parsed role : "+role);
|
|
// userInfo.getEdu_person_entitlements().set(i,role);
|
|
// }
|
|
// }
|
|
// }catch(Exception e){
|
|
// log.debug("Error in parsing Edu_person_entitlements : ",e);
|
|
// return null;
|
|
// }
|
|
//// log.debug("After handling roles : "+userInfo.toString());
|
|
//
|
|
//
|
|
// return userInfo;
|
|
// }
|
|
// public boolean isAuthorized(String token) {
|
|
// UserInfo userInfo = getUserInfo(token);
|
|
// if (userInfo != null ) {
|
|
// return true;
|
|
// } else {
|
|
// log.debug(" User has no Valid UserInfo");
|
|
// return false;
|
|
// }
|
|
//
|
|
// }
|
|
//
|
|
// public String getUserInfoUrl() {
|
|
// return userInfoUrl;
|
|
// }
|
|
//
|
|
// public String getOriginServer() {
|
|
// return originServer;
|
|
// }
|
|
//
|
|
// public void setUserInfoUrl(String userInfoUrl) {
|
|
// this.userInfoUrl = userInfoUrl;
|
|
// }
|
|
//
|
|
// public void setOriginServer(String originServer) {
|
|
// this.originServer = originServer;
|
|
// }
|
|
// // private boolean hasRole(List<String> givenRoles, List<String> authorizedRoles) {
|
|
//// log.debug("It's registered with role " + givenRoles);
|
|
//// for (String gRole : givenRoles) {
|
|
//// if (authorizedRoles.indexOf(gRole) != -1) {
|
|
//// return true;
|
|
//// }
|
|
//// }
|
|
//// log.debug("Not Authorized. Authorized roles are" + authorizedRoles);
|
|
//// return false;
|
|
////
|
|
//// }
|
|
//// private boolean isCommunityManager(String community, String email) {
|
|
////
|
|
//// CommunityInfo communityInfo = getCommunityInfo(community);
|
|
//// if(communityInfo != null && communityInfo.getManagers() != null ) {
|
|
////
|
|
//// for (int i = 0; i < communityInfo.getManagers().size(); i++) {
|
|
//// String manager = communityInfo.getManagers().get(i);
|
|
//// log.debug("Community manager: "+manager);
|
|
////
|
|
//// }
|
|
//// }
|
|
//// return false;
|
|
////
|
|
//// }
|
|
//// private CommunityInfo getCommunityInfo(String community) {
|
|
//// String url = userInfoUrl + community;
|
|
//// URL obj = null;
|
|
//// String responseStr = null;
|
|
//// log.debug("Community info url is " + url);
|
|
////
|
|
//// try {
|
|
//// obj = new URL(url);
|
|
//// HttpURLConnection con = (HttpURLConnection) obj.openConnection();
|
|
//// log.debug("User info response code is: " + con.getResponseCode());
|
|
//// if (con.getResponseCode() != 200) {
|
|
//// return null;
|
|
//// }
|
|
//// BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
|
|
//// StringBuffer response = new StringBuffer();
|
|
//// String inputLine;
|
|
//// while ((inputLine = in.readLine()) != null) {
|
|
//// response.append(inputLine).append("\n");
|
|
//// }
|
|
//// in.close();
|
|
//// responseStr = response.toString();
|
|
//// } catch (Exception e) {
|
|
//// log.error("An error occured while trying to fetch user info ", e);
|
|
//// return null;
|
|
//// }
|
|
//// return json2CommunityInfo(community);
|
|
//// }
|
|
//// private CommunityInfo json2CommunityInfo(String json){
|
|
////
|
|
//// log.debug("Try to create CommunityInfo class from json: "+json);
|
|
//// if (json == null){
|
|
//// return null;
|
|
//// }
|
|
////
|
|
//// BufferedReader br = new BufferedReader(new StringReader(json));
|
|
//// //convert the json string back to object
|
|
//// Gson gson = new Gson();
|
|
//// CommunityInfo communityInfo = null;
|
|
//// try {
|
|
//// communityInfo = gson.fromJson(br, CommunityInfo.class);
|
|
//// }catch(Exception e){
|
|
//// log.debug("Error in parsing json response. Given json is : "+json, e);
|
|
//// return null;
|
|
//// }
|
|
////
|
|
//// log.debug("Original response.........: "+communityInfo.toString());
|
|
////
|
|
////
|
|
////
|
|
//// return communityInfo;
|
|
//// }
|
|
//}
|