SSO2Ticket within servlet filter - Orionserver

Hi,
I need to validate user that already logged in via SAP portal.
So I get ticket as cookie.
I read this cookie and try to validate it with SSO2Ticket.java that is JNI wrapper for C application.
For this I put 2 files in system32 folder: sapssoext.dll and sapsecu.dll and I register first one with regsvr32.
Now I try to run SSO2Ticket.java and it works perfectly. But I need this functionality inside my login servlet filter.
So I still use SSO2Ticket.java but in stead of main method I put same calls into may filter.
It seams to load sapssoext.dll but what ever method I call I get:
java.lang.UnsatisfiedLinkError
Here is method that performs calls. Method is called from filter doFilter method.
There is SSO2Ticket.java attached here.
private void checkSAPTicket(HttpServletRequest request) throws Exception
System.out.println("checkSAPTicket");
//Ticket is hardcoded and valid
String ticket="AjExMDAgABNwb3J0YWw6U0VEQVZJRFNTT05QiAATYmFzaWNhdXRoZW50aWNhdGlvbgEADFNFREFWSURTU09OUAIAAzAwMAMAA0hTMQQADDIwMDYxMjE1MDgwOQUABAAAAAgKAAxTRURBVklEU1NPTlD/APUwgfIGCSqGSIb3DQEHAqCB5DCB4QIBATELMAkGBSsOAwIaBQAwCwYJKoZIhvcNAQcBMYHBMIGAgEBMBMwDjEMMAoGA1UEAxMDSFMxAgEAMAkGBSsOAwIaBQCgXTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0wNjEyMTUwODA5NTFaMCMGCSqGSIb3DQEJBDEWBBRhLnWWaKW8yXyGSrs6gBTC97XnlTAJBgcqhkjOOAQDBC8wLQIUQrgjCpKQeEScuFP7rGWO7V76b5ICFQCT0WhSpqIB11L+HVLmyAjcWeUlw==";
// get PAB (public key) of issuing system. It is in root of my app server
File pab=new File("verify.pse");
String pabFilePath=pab.getAbsolutePath();
System.out.println("pabFilePath="+pabFilePath);
Object [] o=null;
File sapsecu=new File("sapsecu.dll");
String ssf_library=sapsecu.getAbsolutePath();
System.out.println("ssf_library="+ssf_library);
try
String version =SSO2Ticket.getVersion();
//String ssf_library="sapsecu.dll";
if(!SSO2Ticket.init(ssf_library)) {
System.out.println ("Could not load library: " + ssf_library);
return;
System.out.println("evalLogonTicket call...");
// Validate logon ticket.
o = SSO2Ticket.evalLogonTicket (ticket, pabFilePath, null);
} catch (Exception e) {
System.out.println(e);
} catch (Throwable te) {
System.out.println(te);
System.out.println("evalLogonTicket call ended...");
And the log I get when I run this:
checkSAPTicket
pabFilePath=C:\project\GSS\orion-2.0.2\verify.pse
ssf_library=C:\project\GSS\orion-2.0.2\sapsecu.dll
SAPSSOEXT loaded.
static part ends.
java.lang.UnsatisfiedLinkError: getVersion
evalLogonTicket call ended...
Could not validate SAP login ticket from HTTP Header.
If I omit call SSO2Ticket.getVersion(); than the same exception is for SSO2Ticket.init(ssf_library).

Hi,
I think java.lang.UnsatisfiedLinkError means that it cannot find the .dll files.
I am not sure it will find them even if the are registered with regsvr32.
Have you tried placing the .dll files somewhere in the classpath ?
Dagfinn

Similar Messages

  • Getting hold of the servlet context within a filter

    How can I get hold of the servlet context from within a filter?

    The Filter has a FilterConfig that contains the ServletContext.
    class myFilter implements Filter {
       private FilterConfig config;
      public void init(FilterConfig filterConfig)
              throws ServletException {
            this.config = FilterConfig;
        public void doFilter(ServletRequest request,
                         ServletResponse response,
                         FilterChain chain)
                  throws java.io.IOException,
                         ServletException {
              ServletContext context = this.config.getServletContext();
    }

  • Servlet filter problem

    I've written a simple servlet filter to intercept a request to another servlet. So when the user tries to access /servlet/ViewMetadata servlet, they first hit InterceptServlet, the filter configured in Tomcat.
    I need to access the name and URL of the target servlet ViewMetada within InterceptServlet but don't know how to do this. I am familiar with HttpServletRequest.getServletPath() but doFilter uses ServletRequest as its argument.
    Can I obtain the target servlet name inside the filter servlet? I know this is probably very basic!
    Arc

    If the filter is invoked by a HttpServletRequest, then the ServletRequest handle you've in the filter is just an instance of HttpServletRequest.
    Cast it back.

  • Getting FacesContext from a Servlet Filter

    I am trying to get at the FacesContext from within a servlet filter, but when I call this in the doFilter(request, response) method:
    FacesContext context = FacesContext.getCurrentInstance();
    context is null.
    Any ideas to get around this?

    Those links might be helpful for you:
    http://www.thoughtsabout.net/blog/archives/000033.html
    http://jroller.com/page/why/20050124
    Sergey : http://jsfTutorials.net

  • Strange behavior when using servlet filter with simple index.htm

    I am new to J2EE development so please tolerate my ignorance. I have a web application that starts with a simple index.htm file. I am using a servlet filter throughout the website to check for session timeout, redirecting the user to a session expiration page if the session has timed out. When I do something as simple as loading the index.htm page in the browser, the .css file and one image file that are associated, or referenced in the file are somehow corrupted and not being rendered. How do I get the filter to ignore css and image files??? Thank you!!
    The servlet filter:
    import java.io.IOException;
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    public class SessionTimeoutFilter implements Filter {
         String[] excludedPages = {"SessionExpired.jsp","index.htm","index.jsp"};
         String timeoutPage = "SessionExpired.jsp";
         public void destroy() {
         public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
              if ((request instanceof HttpServletRequest) && (response instanceof HttpServletResponse)) {
                   HttpServletRequest httpServletRequest = (HttpServletRequest) request;
                   HttpServletResponse httpServletResponse = (HttpServletResponse) response;
                   //httpServletResponse.setHeader("Cache-Control","no-cache");
                   //httpServletResponse.setHeader("Pragma","no-cache");
                   //httpServletResponse.setDateHeader ("Expires", 0);
                   String requestPath = httpServletRequest.getRequestURI();
                   boolean sessionInvalid = httpServletRequest.getSession().getAttribute("loginFlag") != "loggedIn";               
                   System.out.println(sessionInvalid);
                   boolean requestExcluded = false;
                   System.out.println(requestExcluded);
                   for (int i=0;i<excludedPages.length;i++){
                        if(requestPath.contains(excludedPages)){
                             requestExcluded = true;
                   if (sessionInvalid && !requestExcluded){
                        System.out.println("redirecting");
                        httpServletResponse.sendRedirect(timeoutPage);
              // pass the request along the filter chain
              chain.doFilter(request, response);
         public void init(FilterConfig arg0) throws ServletException {
              //System.out.println(arg0.getInitParameter("test-param"));
    The index.htm file (or the relevant portion)<HTML>
    <Head>
    <META http-equiv="Content-Style-Type" content="text/css">
    <LINK href="RTEStyleSheet.css" rel="stylesheet" type="text/css">
    <TITLE>Login</TITLE>
    </HEAD>
    <BODY>
    <FORM NAME="Login" METHOD="POST" ACTION="rte.ServletLDAP"><!-- Branding information -->
    <table width="100%" border="0" cellpadding="0" cellspacing="0">
         <tr>
              <td width="30%" align="left"><img src="images/top_logo_new2.gif">
              </td>
              <td width="37%" align="center"></td>
              <td width="33%" align="right"></td>
         </tr>
    </table>
    My web.xml entry for the filter:     <filter>
              <description>
              Checks for a session timeout on each user request, redirects to logout if the session has expired.</description>
              <display-name>
              SessionTimeoutFilter</display-name>
              <filter-name>SessionTimeoutFilter</filter-name>
              <filter-class>SessionTimeoutFilter</filter-class>
              <init-param>
                   <param-name>test-param</param-name>
                   <param-value>this is a test parameter</param-value>
              </init-param>
         </filter>
         <filter-mapping>
              <filter-name>SessionTimeoutFilter</filter-name>
              <url-pattern>/*</url-pattern>
              <dispatcher>REQUEST</dispatcher>
              <dispatcher>FORWARD</dispatcher>
         </filter-mapping>

    Hi,
    Try adding CSS files and images to the excluded Pages.

  • Set Roles in servlet filter

    How can I set the user's role in the request object in a servlet filter
    so that in my action class, i can query the role using
    request.isUserInRole() and request.getUserPrinciple() methods.
    Any ideas...
    Thanks,

    How can I set the user's role in the request object
    in a servlet filter
    so that in my action class, i can query the role
    using
    request.isUserInRole() and request.getUserPrinciple()
    methods.You may want to check out JAAS in the Creator tutorial:
    http://developers.sun.com/prodtech/javatools/jscreator/ea/jsc2/reference/sampleapps/

  • How to get the RGB Working Space from within a Filter Plug-In?

    Within my Filter Plug-In I need to access the image's icc profile data. I know this can be accomplished with the according data structure 'iCCprofileData'. But what if there is no profile assigned to the image? Then iCCprofileData is NULL and the default should apply which is the 'RGB Working Space' (assuming the Plug-In works in RGB mode only, what it does). But how can I get to know what the 'RGB Working Space' is from within my Plug-In?

    As far as I know, the profile provided to the plugin API should never be NULL. If the image is not color managed, it still should have the working space profile in the ICCProfileData field.

  • Servlet Filter not working in Oracel9iAS(9.2.0.3)

    Hi,
    May i know what cause the servlet filter not workinng in Oracle9iAS? Is there any library files missing? I have tried deploy the war file in Tomcat but is working fine but when i try to deploy in Oracle9iAS, the application seems like can't call the servlet filter.
    Please advice.
    Thanks.
    Regards,
    Ming Jade

    I'm not exactly sure what version you are using.
    Servlet Filters were introduced in Servlet 2.3 which was part of J2EE 1.3.
    Oracle9iAS 9.0.2.3 is J2EE 1.2 compatible .
    Oracle Application Server 10g 9.0.4.x and 10.1.2 is J2EE 1.3 compatible
    Oracle Application Server 10g 10.1.3 is J2EE 1.4 compatible.
    So the problem could be that the version of the product you are using does does not support the version of the servlet spec that covers Servlet Filters.
    Can you upgrade to/install the 10.1.2 release as a minimum?
    cheers
    -steve-

  • How to Add a Servlet Filter to Reports 11.1.1.2.0

    I am running Fusion Middleware 11g (Weblogic 10.3.2), with Oracle Forms/Reports 11.1.1.2.0. The installation is running the default managed servers WLS_FORMS and WLS_REPORTS.
    How can I add a Servlet Filter to the Reports 11.1.1.2.0 application which is running under the WLS_REPORTS managed server?
    I have read the Oracle Doc ID: 418366.1, which describes a process for adding a servlet filter to Reports Developer 10.1.2.2, but I am unclear as to which web.xml file I need to modify in weblogic and where to place the class file for the servlet filter.
    Thanks in advance for your help.

    I can provide some partial help.
    The set up I have was running it locally on Windows 7 (64 bit) laptop and running the reports server (version 11.1.1.4) in XP Mode as part of Windows 7 Professional.
    To find which web.xml file to change, I searched the directories for web.xml and then removed then renamed the web.xml files to something else to see which impacted the start up of the reports server.
    It turns out it was a web.xml file in web.war file in the following directory which impacted the start up:
    C:\Oracle\Middleware\user_projects\domains\ClassicDomain\servers\WLS_REPORTS\tmp\_WL_user\reports_11.1.1.2.0\1ww4ab
    So used winzip to extract files, update web.xml file and and java class as a jar file in the WEB-INF\lib directory and zipped back up to a web.war and put it in the above directory and restarted the Reports Server.
    Note the url pattern I used was slightly different to that shown in the oracle note (forward slash before asterix):
    <url-pattern>/rwservlet/*</url-pattern>
    Have not investigated how to do in for a production environment, but hopefully this information is of use.
    Les.

  • Memory leak in Servlet Filter handling?

    In Sun Web Server 6.1, I'm finding a memory leak when using servlet filters. I've even created a "no op" servlet filter. When it's registered, every 10000 hits or so to filtered static content will eat up about 5 to 10 MB of RAM. The JVM heap size doesn't increase.
    When I remove the filter, I've hit the same static page on the server 50000 times without seeing an increase in memory usage by the process.
    This is on Windows 2000, and I think the Sun Web Server 6.1 is SP1. I haven't tried SP2 yet.
    For reference, here's the filter I put in:
    public class NoOpFilter implements Filter
    public void init(FilterConfig arg0) throws ServletException {}
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
    chain.doFilter(request, response);
    public void destroy() {}
    }

    I found the bug. I get the memory leak if magnus.conf has either or both of the following entries:
    AdminLanguage en
    DefaultLanguage en
    If I delete the entries, the memory leak goes away. I suppose this should get fixed by Sun sometime. Maybe I'll figure out how to officially report the bug later.

  • Servlet Filter uri-pattern

    Hello!
    I need to do the following:
    - apply a servlet-filter to all files in a directory
    - NOT apply that filter to the sub-derictories.
    I'm using Tomcat 5.5.
    What should be the uri-pattern of that filter? Is there some directive for "Exclude"?
    Thanks

    Read the spec. IIRC you can also specify extension-based criteria:
    <filter-mapping>
    <filter-name>servletstatfilter</filter-name>
    <url-pattern>*.html</url-pattern>
    </filter-mapping>

  • Servlet Filter - for WL 5.1 (sp10) ?

    Hello All,
    we use WL 5.1 (sp10), on S.O. AIX.
    We want to filter some JSP pages (depending on the user), like an "Servlet Filter"
    (not present in WL 5.1, only 6.1 or superior) controling the "authorization".
    We know the feature "UrlAcl", but is not good for us.
    We recompiled the class JspBase (in package weblogic.servlet.jsp), including the
    wanted aditional feature "Filter servlet"; We tested it and it is ok and no problens
    ocorred.
    Now we have three questions:
    1- Does exits another solution to the problem above (filtering some JSP depending
    on the user)?
    2- My solution is good enought ? It´s normal to recompile the "internal classes
    of the weblogic" ?
    3- We want to send an email direct to BEA , but we don´t find a "contact" or web-form
    to send this question to BEA; Anyone has this email / information ?

    Hello All,
    we use WL 5.1 (sp10), on S.O. AIX.
    We want to filter some JSP pages (depending on the user), like an "Servlet Filter"
    (not present in WL 5.1, only 6.1 or superior) controling the "authorization".
    We know the feature "UrlAcl", but is not good for us.
    We recompiled the class JspBase (in package weblogic.servlet.jsp), including the
    wanted aditional feature "Filter servlet"; We tested it and it is ok and no problens
    ocorred.
    Now we have three questions:
    1- Does exits another solution to the problem above (filtering some JSP depending
    on the user)?
    2- My solution is good enought ? It´s normal to recompile the "internal classes
    of the weblogic" ?
    3- We want to send an email direct to BEA , but we don´t find a "contact" or web-form
    to send this question to BEA; Anyone has this email / information ?

  • Servlet Filter - Reading Request Error

    I have a servlet filter that sits in front of a webservice servlet (AXIS) - what I want the filter to do is to look at the content of the ServletRequest and if a particular string is located in the request, I want to call another service. Everything works just fine except (isin't there always an execept) that when I execute the following code in the filter:
    BufferedReader inReader = request.getReader();
    String line = null;
    StringBuffer sbuf = new StringBuffer();
    // Read the current request into a buffer
    while((line = inReader.readLine()) != null) {
    sbuf.append(line);
    sbuf.append("\n\r");
    if (sbuf.toString().indexOf("mystring") > -1) {
    // I do some code
    } else {
    chain.doFilter(request, wrapper);
    When I execute this code, at the chain.doFilter I get an "java.lang.IllegalStateException: getReader() has already been called for this request"
    I know that this is because I obtained the Reader from the request. But my question is - How can I look at the request string so that I can evaluate it and not have this exception thrown..
    Thx in advance...

    My guess is that when you do the chain.doFilter you pass the request to another resource that then tries to access the request.getInputStream method.
    From the JavaDocs:
    getReader
    public java.io.BufferedReader getReader()
    throws java.io.IOException
    Retrieves the body of the request as character data using a BufferedReader. The reader translates the character data according to the character encoding used on the body. Either this method or getInputStream() may be called to read the body, not both.
    Returns:
    a BufferedReader containing the body of the request
    Throws:
    java.io.UnsupportedEncodingException - if the character set encoding used is not supported and the text cannot be decoded
    IllegalStateException - if getInputStream() method has been called on this request
    java.io.IOException - if an input or output exception occurred

  • Servlet Filter

    Hi, all
    I work on a web application running on a Jboss server and i would like to filter all the http request in order to save it in a database. (i save those informations for manage web stats).
    I suppose i may use servlet filter, but i don't know the operation of this
    Does anyone could help me giving some example and the protocol to set up this on the server (file server configuration as web.xml)

    Well here is what I know. I hope it helps.....
    First thing is to create a class that implements the "javax.servlet.Filter" interface. But there are also other Filter interfaces that you could use depending on what you want: Filter, FilterChain, and FilterConfig.
    You have to implement the init(), destroy() and doFilter() methods (I ommitted the arguments).
    But most of your work will be done in the doFilter () method. You could extract request information from one of the arguments in these method and have a datasource connection to save to your back-end.
    Something like :
    public void doFilter( ServletRequest request, ServletResponse responce, FilterChain chain ) throws  ServletException {
          HttpServletRequest httpRequest = (HttpServletRequest) request;
          backEndDelegate.saveInformation(  request.getRemoteAddr(),  request.getRemoteHost() );
          chain.doFilter( request, responce );
    }Second, you need to configure the Filter. In the web.xml file add the following tags:
    <filter>
         <filter-name>StatsFilter</filter-name>
          <description>Logs Web Stats to the back end</description>
         <filter-class>com.yourpackage.StatsFilter</filter-class>
         <!--  you can also pass parameters to the StatsFilter -->
          <!--
           <init-param>
                   <param-name>some parameter</param-name>
                   <param-value>some parameter</param-value>
            </init-param>
            -->
    </filter>
    <filter-mapping>
          <filter-name>StatsFilter</filter-name>
          <filter-pattern>*.jsp</filter-pattern>
    </filter-mapping>That is just a little example. You can associate a filter with a Servlet using the <filter-mapping> tags too. And you can also do filter chains, but I don't feel like going there.
    I sure hope that it was helpful. If not then "RTFM"

  • Servlet filter - ClassNotFoundException

    Hi,
    I am trying to create and deploy a servlet filter in portal irj.
    Here is what I have done:
    1. Created filter class(TestFilter.java).
    2. Created a jar file for the above TestFilter.class.
    3. Copied the jar file to C:\usr\sap\DW1\JC00\j2ee\cluster\server0\apps\sap.com\irj\servlet_jsp\irj\root\WEB-INF\lib folder
    4. Modified the web.xml file under C:\usr\sap\DW1\JC00\j2ee\cluster\server0\apps\sap.com\irj\servlet_jsp\irj\root\WEB-INF folder with the following lines:
    <filter>
    <filter-name>TestFilter</filter-name>
    <display-name>TestFilter</display-name>
    <description>
    </description>
    <filter-class>com.test.TestFilter</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>TestFilter</filter-name>
    <url-pattern>/irj/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
    <filter-name>TestFilter</filter-name>
    <servlet-name>prt</servlet-name>
    </filter-mapping>
    5.  I did reference the library in Visual Admin:  library:TestFilter
    6.  Also created the directory under ext/TestFilter and copied the jar file here.
    7. Restarted the engine.
    Exception the logs
    Cannot load filter <TestFilter>  The error is java.lang.ClassNotFoundException:  com.test.TestFilter
    Loader Info----
    I don't see my .jar displayed in the loader info.  irj didn't like my .jar.
    Any additional changes for irj to make it understand the new .jar file for classloader. 
    Appreciate your response.
    Message was edited by:
            Anant

    Hi I was wondering if you had any luck with this issues.
    Thank you.

Maybe you are looking for