Я использовал шифрование на основе токенов с помощью сервера Jasper. У меня вопрос, как я буду использовать это в своем javascript, особенно в iframe?
http://localhost:8080/jasperserver?pp=l4O3_onTsKh_vsBmfios-u72esQMepeawMD3QQkOE_ETDX1dvb3af4o5h4dXjpFyUOA2J5XrYSzreQ==
Выше зашифрованный токен.
Вот мой код java, который я скомпилировал. Затем jar добавлен в папку WEB-INF / lib.
package com.jaspersoft.cipher;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import java.util.Base64;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import com.jaspersoft.jasperserver.api.common.crypto.CipherI;
public class NewClass implements CipherI{
private SecretKeySpec secretKey;
private byte[] key;
String myKey="Mehul Katara";
public void setKey(String myKey)
{
MessageDigest sha = null;
try {
key = myKey.getBytes("UTF-8");
sha = MessageDigest.getInstance("SHA-1");
key = sha.digest(key);
key = Arrays.copyOf(key, 16);
secretKey = new SecretKeySpec(key, "RC4");
}
catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
public String decrypt(String strToDecrypt) {
try {
String secret=myKey;
setKey(secret);
Cipher cipher = Cipher.getInstance("RC4");
cipher.init(Cipher.DECRYPT_MODE, secretKey);
return new String(cipher.doFinal(Base64.getUrlDecoder().decode(strToDecrypt.getBytes("UTF-8"))));
}
catch(Exception e)
{
System.out.println("Error while decrypting !" +e.toString());
System.out.println("Error while descrypt GetMEssage() : " +e.getMessage());
e.printStackTrace();
}
return null;
}
public String encrypt(String strToEncrypt) {
try {
String secret=myKey;
setKey(secret);
Cipher cipher = Cipher.getInstance("RC4");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
return Base64.getUrlEncoder().encodeToString(cipher.doFinal(strToEncrypt.getBytes("UTF-8")));
}
catch(Exception e)
{
System.out.println("Error while encrypting" +e.toString());
}
return null;
}
}
Я также изменил xml
<property name="tokenDecryptor">
<!--<bean class="com.jaspersoft.jasperserver.api.common.crypto.DevelopmentPlainTextNonCipher"/>-->
<bean class="com.jaspersoft.cipher.NewClass"/>
</property>
Я сейчас очень запутался в том, как войти в систему с помощью токена , Если я go прямо на ссылку выше, он просто отправит меня на страницу входа. Документация не очень подробная об этом.