mike9494 Posted April 20, 2016 Share Posted April 20, 2016 Hello JasperSoft-Community,i'm working on the encryption of the password which is sent to the jasperserver login. i've read the documentations how to use it and also how the settings in the config-file have to be (is use the dynamic key setting).First when i want to get a report from the server, i start a method which gets the encryption key with the "localhost/GetEncryptionKey" and encrypt the password with bouncy castle for C#.Here's the code i use for encryption (in C#, baseurl is a string: "http://localhost/jasperserver"):public string Authenticate(string username, string password) { bool encryptedAuthentification = false; string uriS = String.Format(baseurl + "/GetEncryptionKey"); Uri uri = new Uri(uriS); HttpWebRequest request = (HttpWebRequest)WebRequest.CreateHttp(uri); request.Method = "GET"; request.CookieContainer = cookies; string responseContent = ""; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); if (_returnCodes.ContainsKey(Convert.ToInt32(response.StatusCode))) { if (_returnCodes[Convert.ToInt32(response.StatusCode)] == "ok") { using (StreamReader reader = new StreamReader(response.GetResponseStream())) { while (!reader.EndOfStream) { responseContent += reader.ReadLine() + "n"; } } if (!responseContent.Contains("Error: Key generation is off")) { encryptedAuthentification = true; } if (encryptedAuthentification) { //encrypt password BufferedAsymmetricBlockCipher abc = new BufferedAsymmetricBlockCipher(new RsaEngine()); string nString = responseContent.Split(',')[2].Split(':')[1].Replace(""", "").Replace("}", "").Replace("n", ""); string eString = responseContent.Split(',')[1].Split(':')[1].Replace(""", ""); string maxdigitsStirng = responseContent.Split(',')[0].Split(':')[1].Replace(""", ""); byte[] input = Hex.Decode(password); int maxD = Convert.ToInt32(maxdigitsStirng); BigInteger e = new BigInteger(eString,16); BigInteger n = new BigInteger(nString, 16); RsaKeyParameters rsak = new RsaKeyParameters(false, n, e); byte[] cipherText = new byte[128]; abc.Init(true, rsak); abc.DoFinal(input, cipherText, 0); string base64PW = Convert.ToBase64String(cipherText); password = base64PW; } } else { throw new WebException(_returnCodes[Convert.ToInt32(response.StatusCode)]); } } else { throw new WebException("unknown response status code."); } return password; }after that i save the new password in a string-variable and use it in a new request in which i want to login. Here's the code (also in C#, newPW is the encrypted password): string uriS1 = String.Format(baseurl + "/login.html?j_username={0}&j_password={1}", user, newPW); Uri uri1 = new Uri(uriS1); HttpWebRequest loginRequest = (HttpWebRequest)WebRequest.CreateHttp(uri1); loginRequest.Method = "POST"; loginRequest.CookieContainer = cookies; HttpWebResponse loginResponse = (HttpWebResponse)loginRequest.GetResponse();And here's the problem. the response of this request gives me the following uri: "http://localhost/jasperserver/login.html?error=1". This means that the login has failed.I'm new to the Jasperserver so my Question is:Can someone explain to me how i login correctly with the encrypted password because i'm desperating here :) Also i don't know extactly wether the problem is the HttpWebRequest or the problem is the encryption itself and the password is wrongly encrypted. I hope someone can help me or got the same problem and found a solution for it. PS: sorry for bad english Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now