Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 5970595
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 22, 20262026-05-22T20:23:51+00:00 2026-05-22T20:23:51+00:00

I have Pentaho running on a server. On a different server, I have a

  • 0

I have Pentaho running on a server. On a different server, I have a Struts 1 app running.

What I want to do is provide a link to the User Console of Pentaho (http://myserver/pentaho/Home). However, this requires authentication.

I can pass the user/pass in the URL string and it works just fine. But obviously, this exposes the password in the URL.

Any clues on how to do this? The following code show how I was able to do it and dump the output (via an PrintWriter) but it requires the pentaho source to be local.

Thanks for any help.

public ActionForward execute(ActionMapping mapping, ActionForm form,
       HttpServletRequest request, HttpServletResponse response) throws Exception {

    HttpClient client = new HttpClient();
    PostMethod method = new PostMethod("http://myserver/pentaho/Home");
    method.addParameter("userid", "moe.howard");
    method.addParameter("password", "password");

    int status = client.executeMethod(method);

    PrintWriter out = response.getWriter();
    out.print(method.getResponseBodyAsString());
    out.flush();
    out.close();

    return mapping.findForward(SUCCESS);
}
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-22T20:23:52+00:00Added an answer on May 22, 2026 at 8:23 pm

    Finally found a solution. I ended up creating a redirect.jsp file on the Pentaho server. Then, I passed an encrypted http auth token to it, decrypted it, and then redirected to the login. Works great.

    EDIT

    Really old question but I was asked to provide more information on my solution. So here goes.

    First, the default install of Pentaho used HTTP Basic Authentication (BA). If you’re using a single sign-on or LDAP solution this might not work for you.

    So what I did was put a JSP file in the ROOT folder under ..tomcat\webapps\ROOT. That JSP takes the passed in login information and de-crypts it. That login information is just a BASE64 authenticated request.

    This isn’t super secure, by any means. But what it allowed me to do was send an encrypted user/pass from one server and pass it to another server. Of course, if you’re SSL all the way then this probably isn’t needed but we had a situation where the information was being passed in clear text INTERNALLY. So, it was never exposed to the outside but I still wanted to make sure our internal servers are as secure as possible.

    The JSP:

    <%@page contentType="text/html; charset=iso-8859-1" language="java" 
    import="java.security.*"
    import="javax.crypto.Cipher"
    import="javax.crypto.spec.SecretKeySpec"
    import="sun.misc.*"
    %>
    
    <%
      // Decrypt authenticated hash
      String ALGORITHM = "AES";
      byte[] keyValue = "MY-SECRET-PASSWORD".getBytes();
    
      Key key = new SecretKeySpec(keyValue, ALGORITHM);
      Cipher c = Cipher.getInstance(ALGORITHM);
      c.init(Cipher.DECRYPT_MODE, key);
      byte[] decodedValue = new BASE64Decoder().decodeBuffer(new String(request.getParameter("auth")));
      byte[] decValue = c.doFinal(decodedValue);
      String decryptedValue = new String(decValue);
    %>
    
    <script type="text/javascript">
       var auth = '<%= decryptedValue%>';
    
       function AJAX(url, callback) {
    
          var req = init();
          req.onreadystatechange = processRequest;
    
          function init() {
             if (window.XMLHttpRequest) {
                return new XMLHttpRequest();
             } else if (window.ActiveXObject) {
                return new ActiveXObject("Microsoft.XMLHTTP");
             }
          }
    
          function processRequest () {
             // readyState of 4 signifies request is complete
             if (req.readyState == 4) {
                // status of 200 signifies sucessful HTTP call
                if (req.status == 200) {
                   if (callback) callback(req.responseXML);
                }
             }
          }
    
          this.doGet = function() {
             req.open("GET", url, true);
             req.setRequestHeader("Authorization", "Basic " + auth);
             req.send(null);
          }
       }
    
       var url = "/pentaho/Home";
       var querystr = "";
       var ajax = new AJAX(url, function(){
          window.location = url;
       });
    
       ajax.doGet(querystr);
    
    </script>
    

    So, my login server authenticates the user against the same MySQL database Pentaho uses, creates the authenticated (BA) request, BASE64’s it, encrypts it using the same MY-SECRET-PASSWORD and sends that to the JSP. The JSP then de-crypts it and reads the BA header and passes that on to Pentaho.

    Works great for us.

    Hope it helps someone out.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

have different files with same name, in different directories. In these files there are
Have String str May 23 2011 12:20:00, want to convert it to date such
Have the following scenario. I have a few form, which essentially have a few
have anyone found a substitution for RJS in Ruby on Rails for play? P.S.
Have an Action delegate and trying to use the ternary operator inside of it
Have a flash player that pops out into a separate popup browser window. And
Have this result set below; am trying to insert the red numbers into post_position
have been able to output images from BLOB, however I am now wanting to
Have a scenario with a client's new crm where they have suppliers and clients

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.