Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 //
 //  ========================================================================
 //  Copyright (c) 1995-2013 Mort Bay Consulting Pty. Ltd.
 //  ------------------------------------------------------------------------
 //  All rights reserved. This program and the accompanying materials
 //  are made available under the terms of the Eclipse Public License v1.0
 //  and Apache License v2.0 which accompanies this distribution.
 //
 //      The Eclipse Public License is available at
//      http://www.eclipse.org/legal/epl-v10.html
//
//      The Apache License v2.0 is available at
//      http://www.opensource.org/licenses/apache2.0.php
//
//  You may elect to redistribute this code under either of these licenses.
//  ========================================================================
//
package org.eclipse.jetty.security.jaspi.modules;

Deprecated:
use *ServerAuthentication
Version:
$Rev: 4530 $ $Date: 2009-02-13 00:47:44 +0100 (Fri, 13 Feb 2009) $
public class ClientCertAuthModule extends BaseAuthModule
    public ClientCertAuthModule()
    {
    }
    public ClientCertAuthModule(CallbackHandler callbackHandler)
    {
        super(callbackHandler);
    }
    @Override
    public AuthStatus validateRequest(MessageInfo messageInfoSubject clientSubject
                                      Subject serviceSubject
    throws AuthException
    {
        HttpServletRequest request = (HttpServletRequestmessageInfo.getRequestMessage();
        HttpServletResponse response = (HttpServletResponsemessageInfo.getResponseMessage();
        java.security.cert.X509Certificate[] certs = (java.security.cert.X509Certificate[]) request.getAttribute("javax.servlet.request.X509Certificate");
        try
        {
            // Need certificates.
            if (certs == null || certs.length == 0 || certs[0] == null)
            {
                response.sendError(.,
                                   "A client certificate is required for accessing this web application but the server's listener is not configured for mutual authentication (or the client did not provide a certificate).");
                return .;
            }
            Principal principal = certs[0].getSubjectDN();
            if (principal == nullprincipal = certs[0].getIssuerDN();
            final String username = principal == null ? "clientcert" : principal.getName();
            // TODO no idea if this is correct
            final String password = new String(B64Code.encode(certs[0].getSignature()));
            // TODO is cert_auth correct?
            if (login(clientSubjectusernamenew Password(password), .messageInfo)) { return .; }
            if (!isMandatory(messageInfo)) { return .; }
            response.sendError(."The provided client certificate does not correspond to a trusted user.");
            return .;
        }
        catch (IOException e)
        {
            throw new AuthException(e.getMessage());
        }
        catch (UnsupportedCallbackException e)
        {
            throw new AuthException(e.getMessage());
        }
    }
New to GrepCode? Check out our FAQ X