[Feature #5052] Added code to encrypt folderID by StringEncrypter and then decode it in Base64 to provide a safe-url
git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/user/workspace-tree-widget@131475 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
36858068dc
commit
fc95a2fad8
6
pom.xml
6
pom.xml
|
@ -188,6 +188,12 @@
|
||||||
<!-- <version>3.1</version> -->
|
<!-- <version>3.1</version> -->
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>commons-codec</groupId>
|
||||||
|
<artifactId>commons-codec</artifactId>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.thoughtworks.xstream</groupId>
|
<groupId>com.thoughtworks.xstream</groupId>
|
||||||
<artifactId>xstream</artifactId>
|
<artifactId>xstream</artifactId>
|
||||||
|
|
|
@ -16,6 +16,7 @@ import javax.servlet.http.HttpSession;
|
||||||
|
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
import org.gcube.application.framework.core.session.ASLSession;
|
import org.gcube.application.framework.core.session.ASLSession;
|
||||||
|
import org.gcube.common.encryption.StringEncrypter;
|
||||||
import org.gcube.common.homelibary.model.items.type.FolderItemType;
|
import org.gcube.common.homelibary.model.items.type.FolderItemType;
|
||||||
import org.gcube.common.homelibary.model.items.type.WorkspaceItemType;
|
import org.gcube.common.homelibary.model.items.type.WorkspaceItemType;
|
||||||
import org.gcube.common.homelibrary.home.Home;
|
import org.gcube.common.homelibrary.home.Home;
|
||||||
|
@ -68,6 +69,7 @@ import org.gcube.portlets.user.workspace.server.reader.ApplicationProfileReader;
|
||||||
import org.gcube.portlets.user.workspace.server.resolver.UriResolverReaderParameterForResolverIndex;
|
import org.gcube.portlets.user.workspace.server.resolver.UriResolverReaderParameterForResolverIndex;
|
||||||
import org.gcube.portlets.user.workspace.server.util.AclTypeComparator;
|
import org.gcube.portlets.user.workspace.server.util.AclTypeComparator;
|
||||||
import org.gcube.portlets.user.workspace.server.util.DifferenceBetweenInfoContactModel;
|
import org.gcube.portlets.user.workspace.server.util.DifferenceBetweenInfoContactModel;
|
||||||
|
import org.gcube.portlets.user.workspace.server.util.StringUtil;
|
||||||
import org.gcube.portlets.user.workspace.server.util.UserUtil;
|
import org.gcube.portlets.user.workspace.server.util.UserUtil;
|
||||||
import org.gcube.portlets.user.workspace.server.util.WsUtil;
|
import org.gcube.portlets.user.workspace.server.util.WsUtil;
|
||||||
import org.gcube.portlets.user.workspace.server.util.resource.PropertySpecialFolderReader;
|
import org.gcube.portlets.user.workspace.server.util.resource.PropertySpecialFolderReader;
|
||||||
|
@ -3565,8 +3567,13 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
|
||||||
workspaceLogger.info("HL returning folder link id: "+folderId);
|
workspaceLogger.info("HL returning folder link id: "+folderId);
|
||||||
ApplicationProfileReader apReader = new ApplicationProfileReader("Workspace-Explorer-App", "org.gcube.portlets.user.workspaceexplorerapp.server.WorkspaceExplorerAppServiceImpl");
|
ApplicationProfileReader apReader = new ApplicationProfileReader("Workspace-Explorer-App", "org.gcube.portlets.user.workspaceexplorerapp.server.WorkspaceExplorerAppServiceImpl");
|
||||||
ApplicationProfile ap = apReader.readProfileFromInfrastrucure();
|
ApplicationProfile ap = apReader.readProfileFromInfrastrucure();
|
||||||
|
|
||||||
|
String encriptedFId = StringEncrypter.getEncrypter().encrypt(folderId);
|
||||||
|
workspaceLogger.info("Encrypted folder Id: "+encriptedFId);
|
||||||
|
String encodedFId = StringUtil.base64EncodeStringURLSafe(encriptedFId);
|
||||||
|
workspaceLogger.info("Encoded in Base 64: "+encodedFId);
|
||||||
workspaceLogger.info("Application profile returning url: "+ap.getUrl());
|
workspaceLogger.info("Application profile returning url: "+ap.getUrl());
|
||||||
String folderLink = ap.getUrl()+"?folderId="+folderId;
|
String folderLink = ap.getUrl()+"?folderId="+encodedFId;
|
||||||
String shortURL = null;
|
String shortURL = null;
|
||||||
try{
|
try{
|
||||||
shortURL = getShortUrl(folderLink);
|
shortURL = getShortUrl(folderLink);
|
||||||
|
|
|
@ -1,41 +1,118 @@
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
*/
|
|
||||||
package org.gcube.portlets.user.workspace.server.util;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
|
||||||
* @Jul 9, 2013
|
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class StringUtil {
|
|
||||||
|
|
||||||
public static String regx = ",@+^'?!\"%&$£/#()";
|
|
||||||
|
|
||||||
|
package org.gcube.portlets.user.workspace.server.util;
|
||||||
|
|
||||||
|
import java.io.UnsupportedEncodingException;
|
||||||
|
|
||||||
|
import org.apache.commons.codec.binary.Base64;
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Class StringUtil.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* @Jul 9, 2013
|
||||||
|
*/
|
||||||
|
public class StringUtil {
|
||||||
|
|
||||||
|
/** The Constant UTF_8. */
|
||||||
|
public static final String UTF_8 = "UTF-8";
|
||||||
|
public static String regx = ",@+^'?!\"%&$£/#()";
|
||||||
|
protected static Logger logger = Logger.getLogger(StringUtil.class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes the special characters.
|
||||||
|
*
|
||||||
|
* @param input
|
||||||
|
* the input
|
||||||
|
* @return the string
|
||||||
|
*/
|
||||||
public static String removeSpecialCharacters(String input) {
|
public static String removeSpecialCharacters(String input) {
|
||||||
|
|
||||||
char[] ca = regx.toCharArray();
|
char[] ca = regx.toCharArray();
|
||||||
for (char c : ca) {
|
for (char c : ca) {
|
||||||
input = input.replace(""+c, "");
|
input = input.replace("" + c, "");
|
||||||
}
|
}
|
||||||
return input;
|
return input;
|
||||||
}
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
|
||||||
String input = "Just to clarify, Iì13ì? will have strings of varying "
|
|
||||||
+ "lengths. I want to strip characters from it, the exact "
|
|
||||||
+ "ones to be determined at !\"%&$£/ runtime, and return the "
|
|
||||||
+ "resulting string...";
|
|
||||||
|
|
||||||
input = removeSpecialCharacters(input);
|
|
||||||
System.out.println(input);
|
|
||||||
System.out.println(replaceAllWhiteSpace(input, "_"));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String replaceAllWhiteSpace(String input, String replacement){
|
|
||||||
return input.replaceAll("\\s",replacement);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Replace all white space.
|
||||||
|
*
|
||||||
|
* @param input
|
||||||
|
* the input
|
||||||
|
* @param replacement
|
||||||
|
* the replacement
|
||||||
|
* @return the string
|
||||||
|
*/
|
||||||
|
public static String replaceAllWhiteSpace(String input, String replacement) {
|
||||||
|
|
||||||
|
return input.replaceAll("\\s", replacement);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Base64 decode string.
|
||||||
|
*
|
||||||
|
* @param s the s
|
||||||
|
* @return the string
|
||||||
|
*/
|
||||||
|
public static String base64DecodeString(String s) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
return new String(Base64.decodeBase64(s.getBytes(UTF_8)));
|
||||||
|
}
|
||||||
|
catch (UnsupportedEncodingException e) {
|
||||||
|
logger.error("Failed to decode the String", e);
|
||||||
|
logger.error("Returning input string: " + s);
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Base64 encode string url safe.
|
||||||
|
*
|
||||||
|
* @param s the s
|
||||||
|
* @return the string
|
||||||
|
*/
|
||||||
|
public static String base64EncodeStringURLSafe(String s) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
return Base64.encodeBase64URLSafeString(s.getBytes(UTF_8));
|
||||||
|
}
|
||||||
|
catch (UnsupportedEncodingException e) {
|
||||||
|
logger.error("Failed to decode the String", e);
|
||||||
|
logger.error("Returning input string: " + s);
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Base64 encode string.
|
||||||
|
*
|
||||||
|
* @param s the s
|
||||||
|
* @return the string
|
||||||
|
*/
|
||||||
|
public static String base64EncodeString(String s) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
return new String(Base64.encodeBase64(s.getBytes(UTF_8)));
|
||||||
|
}
|
||||||
|
catch (UnsupportedEncodingException e) {
|
||||||
|
logger.error("Failed to encode the String", e);
|
||||||
|
logger.error("Returning input string: " + s);
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* public static void main(String[] args) { String input =
|
||||||
|
* "Just to clarify, Iì13ì? will have strings of varying " +
|
||||||
|
* "lengths. I want to strip characters from it, the exact " +
|
||||||
|
* "ones to be determined at !\"%&$£/ runtime, and return the " +
|
||||||
|
* "resulting string..."; input = removeSpecialCharacters(input);
|
||||||
|
* System.out.println(input); System.out.println(replaceAllWhiteSpace(input,
|
||||||
|
* "_")); }
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,78 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.gcube.portlets.user.workspace;
|
||||||
|
|
||||||
|
import org.gcube.common.encryption.StringEncrypter;
|
||||||
|
import org.gcube.common.scope.api.ScopeProvider;
|
||||||
|
import org.gcube.portlets.user.workspace.server.util.StringUtil;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Class TestEncodeDecodeBase64.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Sep 19, 2016
|
||||||
|
*/
|
||||||
|
public class TestEncodeDecodeBase64 {
|
||||||
|
|
||||||
|
static final String SCOPE = "/gcube";
|
||||||
|
// static String folderId = "e7b6bc31-8c35-4398-a7fd-492e391e17d2";
|
||||||
|
static String folderId = "ce4866ee-8079-4acf-bcd6-1c9dd786eb73";
|
||||||
|
|
||||||
|
static String encrypted="";
|
||||||
|
static String encoded = "";
|
||||||
|
static String decoded = "";
|
||||||
|
static String decrypted = "";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The main method.
|
||||||
|
*
|
||||||
|
* @param args the arguments
|
||||||
|
*/
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
ScopeProvider.instance.set(SCOPE);
|
||||||
|
System.out.println("Folder Id: "+folderId);
|
||||||
|
encode();
|
||||||
|
decode();
|
||||||
|
|
||||||
|
if(decrypted.compareTo(folderId)==0)
|
||||||
|
System.out.println("Encrypt/Decript works!");
|
||||||
|
else
|
||||||
|
System.out.println("Encrypt/Decript doesn't work!");
|
||||||
|
}
|
||||||
|
catch (Exception e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Encode.
|
||||||
|
*
|
||||||
|
* @throws Exception the exception
|
||||||
|
*/
|
||||||
|
private static void encode() throws Exception {
|
||||||
|
|
||||||
|
encrypted = StringEncrypter.getEncrypter().encrypt(folderId);
|
||||||
|
System.out.println("Encrypted folder Id: "+encrypted);
|
||||||
|
encoded = StringUtil.base64EncodeStringURLSafe(encrypted);
|
||||||
|
System.out.println("Encoded folder Id: "+encoded);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Decode.
|
||||||
|
*
|
||||||
|
* @throws Exception the exception
|
||||||
|
*/
|
||||||
|
private static void decode() throws Exception {
|
||||||
|
|
||||||
|
decoded = StringUtil.base64DecodeString(encoded);
|
||||||
|
System.out.println("Decoded folder Id: "+decoded);
|
||||||
|
decrypted = StringEncrypter.getEncrypter().decrypt(decoded);
|
||||||
|
System.out.println("Decrypted folder Id: "+decrypted);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue