I am currently trying to do a similar thing. I try to authenticate against a CXF Secure Token Service using a client cert. Currently CXF STS has some modules for authorization. To get this out of STS I try to switch the authorization to JAAS. The problem is that in JAAS you can not simply get the roles of a user. You only get the roles after you do a login.

So what I am trying to do is use or create a CertificateLoginModule for JAAS that can work with either SSL client certs or ws-security cert + signature.

Perhaps this can even be done in a simpler way. I wonder if I could simply create a LDAP Login Module that does no authentication and instead simply uses a fixed user to fetch the role infos from LDAP. In any case I will report my progress and it would be great if you could also write if you find something.

Christian


Am 20.02.2013 19:17, schrieb Lars-Erik Helander:
Thanks Achim,

do you have any suggestions on where I can find documentation/examples that could be of help to me, e.g. how to configure my web app to "force" login via client certs?

Thanks

Lars

Skickat från min iPhone

20 feb 2013 kl. 17:41 skrev Achim Nierbeck <[email protected] <mailto:[email protected]>>:

Hi Lars,

I think it should be possible. At least right now I don't see anything objecting to this. As Pax Web already does work with certs, you have the credentials for it. Now you just need to make sure you're configuration for the authorization is delegated to the underlying JAAS. This should be possible. It probably needs a bit of tweaking and researching since it's a not-out-of-the-box situation.

Let us know if it worked out :)

regards, Achim


2013/2/20 Lars-Erik Helander <[email protected] <mailto:[email protected]>>

    Lukasz & Achim,

    Thanks for the feedback.

    No, I do not have a working stand alone jetty solution to "port".

    The solution works as follows today:

    The client which is another system and not a human user,
    autthenticates to the Karaf "server" using a client cert. No
    login takes place so its just a matter of transport level
    security. The receiving servlet makes an explicit call to an LDAP
    server to get the role(s) associated with the client. The LDAP
    search is based on the user principal established during the ssl
    session setup (principal info comes from the client certificate).
    I would like to move away from doing the LDAP call in my
    application (servlet) and instead make the LDAP interaction via
    JAAS. I guess I woul need to do at least two things:
    1) configure JAAS with an LDAP login module
    2) force login to take place, probably by somehow configure the
    specific URL as being protected an somehow configure/code that
    login usin client certificate shall take place

    Is this possible?

    Thanks

    /Lars

    Skickat från min iPhone

    20 feb 2013 kl. 15:17 skrev Łukasz Dywicki <[email protected]
    <mailto:[email protected]>>:

    I was thinking about something more complex [1] where principals
    may be populated from peer certificate.

    [1]
    
https://github.com/jboss-switchyard/core/blob/master/security/base/src/main/java/org/switchyard/security/login/CertificateLoginModule.java

    Cheers,
    Lukasz

    Wiadomość napisana przez Achim Nierbeck <[email protected]
    <mailto:[email protected]>> w dniu 20 lut 2013, o godz. 15:11:

    Lukasz,

    Pax-Web should work with Certificates already, it just needs a
    proper combination of the authentication which should be done
    by Pax-Web and the authorization which should be done by the
    JAAS part of Karaf.

    regards, Achim


    2013/2/20 Łukasz Dywicki <[email protected]
    <mailto:[email protected]>>

        I think you may get this with chaining JAAS login modules
        in login context configuration, however we don't ship
        certificate login module yet.

        Which certificate login module do you use now?

        Lukasz

        Wiadomość napisana przez Achim Nierbeck
        <[email protected] <mailto:[email protected]>>
        w dniu 20 lut 2013, o godz. 11:20:

        Hi Lars,

        I'm sure it's possible. Do you have a working "simple"
        Application that already works on a std. jetty?
        If so, try to port those things needed to karaf.
        Karaf supports JAAS so if you are able to get your JAAS
        configuration working I'm sure it's a easy move over.

        To my understanding the user attached to
        the certificate needs to be know in the jaas part.
        Since the authentication is done via certificate the JAAS
        part is only needed for the authorization.

        Regards, Achim


        2013/2/19 helander <[email protected]
        <mailto:[email protected]>>

            Hi,
            I am connecting to a web application in Karaf using
            https and a client
            certificate and it works fine.
            Now I want to associate the authenticated client with
            a set of roles defined
            in a JAAS login module, e.g. in user.properties or via
            LDAP. Is this
            possible? How to set it up? What "user" name could be
            used, e.g. what part
            of the client certificate would the user identity be
            selected from?

            Any help is highly appreciated.

            Thanks

            Lars



            --
            View this message in context:
            
http://karaf.922171.n3.nabble.com/Https-2-way-authentication-and-JAAS-tp4027804.html
            Sent from the Karaf - User mailing list archive at
            Nabble.com <http://nabble.com/>.




--
        Apache Karaf <http://karaf.apache.org/> Committer & PMC
        OPS4J Pax Web
        <http://wiki.ops4j.org/display/paxweb/Pax+Web/> Committer
        & Project Lead
        OPS4J Pax for Vaadin
        <http://team.ops4j.org/wiki/display/PAXVAADIN/Home>
        Commiter & Project Lead
        blog <http://notizblog.nierbeck.de/>




--
    Apache Karaf <http://karaf.apache.org/> Committer & PMC
    OPS4J Pax Web <http://wiki.ops4j.org/display/paxweb/Pax+Web/>
    Committer & Project Lead
    OPS4J Pax for Vaadin
    <http://team.ops4j.org/wiki/display/PAXVAADIN/Home> Commiter &
    Project Lead
    blog <http://notizblog.nierbeck.de/>




--

Apache Karaf <http://karaf.apache.org/> Committer & PMC
OPS4J Pax Web <http://wiki.ops4j.org/display/paxweb/Pax+Web/> Committer & Project Lead OPS4J Pax for Vaadin <http://team.ops4j.org/wiki/display/PAXVAADIN/Home> Commiter & Project Lead
blog <http://notizblog.nierbeck.de/>


--
Christian Schneider
http://www.liquid-reality.de

Open Source Architect
Talend Application Integration Division http://www.talend.com

Reply via email to