Hi, there,

I am playing with the latest 7.0.2 and the single sign on part is not working 
correctly. And I debugged the problem and found the sso member variable is 
always null in AuthenticatorBase class.  Here is the clip of code in this class 
I  found it may have a problem. This code tries to find the singlesignon valve 
through all ancestor container, but all the container don't implement Pipeline 
interface. And the pipeline is member variable of ContainerBase. I don't know 
if this is a bug or I didn't configure my server.xml correctly.  It seems to me 
sso will never get set if I use standardEngine or standardHost.

    protected synchronized void startInternal() throws LifecycleException {

        // Look up the SingleSignOn implementation in our request processing
        // path, if there is one
        Container parent = context.getParent();
        while ((sso == null) && (parent != null)) {
            if (!(parent instanceof Pipeline)) {
                parent = parent.getParent();
                continue;
            }
            Valve valves[] = ((Pipeline) parent).getValves();
            for (int i = 0; i < valves.length; i++) {
                if (valves[i] instanceof SingleSignOn) {
                    sso = (SingleSignOn) valves[i];
                    break;
                }
            }
            if (sso == null)
                parent = parent.getParent();
        }
......

Thanks for looking at this issue.


Ming

Reply via email to