WildFly Elytron - Project Summary

Version 5

    WildFly Elytron [1] is a new WildFly sub-project which will completely replace the combination of PicketBox and JAAS as the WildFly client and  server security mechanism.

     

    An "elytron" (ĕl´·ĭ·trŏn, plural "elytra") is the hard, protective casing over a wing of certain flying insects (e.g. beetles).

     

    High Level Summary

     

    • Establish and clearly define terminology around WildFly's security concepts.
    • Provide support for secure server-side authentication mechanisms (i.e. eliminating the historical "send the password everywhere" style of authentication and forwarding) supporting HTTP [2], SASL [3] (including SASL+GSSAPI [4]), and TLS [5] connection types, as well as supporting other authentication protocols in the future without change (such as RADIUS [6], GSS [7], EAP [8])
    • Provide a simple means to support multiple security associations per security context (one per authentication system, including local and remote application servers, remote databases, remote LDAP, etc.)
    • Provide support for password credential types using the standard JCE archetypal API structure (including but not limited to plain, UNIX DES/MD5/SHA crypt types, bcrypt, mechanism-specific pre-hashed passwords, etc.)
    • Provide SPIs to support all of the above, such that consumers such as Undertow, JBoss SASL, HornetQ etc. can use them directly with a minimum of integration overhead
    • Provide SPIs to support and maintain security contexts
    • Integrate seamlessly with PicketLink IDM and Keycloak projects
    • Provide SPIs to integrate with IDM systems (such as PicketLink) as well as simple/local user stores (such as KeyStores or plain files, and possibly also simple JDBC and/or LDAP backends as well)
    • Provide SPIs to support name rewriting and realm selection based on arbitrary, pluggable criteria
    • Provide a Remoting-based connection-bound authentication service to establish or forward authentication between systems
    • Provide SPIs to allow all Remoting-based protocols to reuse/share security contexts (EJB, JNDI, etc.)
    • Integrate seamlessly with Kerberos authentication schemes for all authentication mechanisms (including inbound and outbound identity propagation for all currently supporting protocols)
    • Provide improved integration with EE standards (JAAC and JASPIC)

     

    The following are presently non- or anti-goals:

     

    • Any provision to support JAAS Subject as a security context (due to performance and correctness concerns)†
    • Any provision to support JAAS LoginContext (due to tight integration with Subject)
    • Any provision to maintain API compatibility with PicketBox (this is not presently an established requirement and thus would add undue implementation complexity, if it is indeed even possible)
    • Replicate Kerberos-style ticket-based credential forwarding (just use Kerberos in this case)

     

    Discussions

     

    Real time discussions for Elytron have been moved to HipChat in the room 'wildfly-elytron' - if you do not have access to HipChat guest access is available at http://www.hipchat.com/gKoTFkUyg

     

    The wildfly-dev mailing list will also be used for discussions.

     

    Source and Issues

    In general security projects that relate to the core of WildFly will be hosted on GitHub under the following organisation: -

    WildFly Security · GitHub

     

    wildfly-elytron

    The source for WildFly Elytron is hosted at https://github.com/wildfly-security/wildfly-elytron

    Issues relating specifically to Elytron can be tracked here https://issues.jboss.org/browse/ELY

     

    jboss-sasl

    Due to the close relationship the contents of the jboss-sasl project have now been merged under wildfly-elytron

     

    security-manager

    The security-manager project has also been merged under wildfly-elytron.

    Elytron Subsystem

    A new project has been created to hold the code for the elytron subsystem for when it is integrated within WildFly, at the time of writing this is just an empty subsystem ready for configuration items and services to be added: -

    wildfly-security/elytron-subsystem · GitHub

     

    The following command is all that is required to build the subsystem: -

    mvn install
    
    
    
    

     

    The include the subsystem in a distribution the following temporary project has been created: -

         https://github.com/wildfly-security/elytron-distribution

     

    The following command is sufficient to build this: -

    mvn install
    
    
    
    

     

    A couple of points to be aware of: -

    • Whilst in active development dependencies are defined as SNAPSHOTS
      • Where possible SNAPSHOTs are uploaded to Nexus at the time pull requests are merged.
    • Currently module definitions live in the distribution project, hopefully we will be able to move them over to the subsystem project at a later point.

     

    Project Documentation

    During development of the project documentation will be made available on GitHub, at the moment updates will be a manual periodic process so ping us if things are getting too out of day.

     

    Javadoc for Elytron itself can be found at http://wildfly-security.github.io/wildfly-elytron/index.html

    As the subsystem progresses it's management model will be visible here http://wildfly-security.github.io/elytron-subsystem/

     

    Pronunciation

    A frequent question we are asked is how should you pronounce Elytron, the following dictionary entries help to confuse this so take your pick ;-)

         http://www.oxforddictionaries.com/definition/english/elytron?q=Elytron

         http://www.oxforddictionaries.com/definition/american_english/elytron

     

    References/links:

     

    [1] https://github.com/wildfly-security/wildfly-elytron

    [2] http://tools.ietf.org/html/rfc2616

    [3] http://tools.ietf.org/html/rfc4422

    [4] http://tools.ietf.org/html/rfc4752

    [5] http://tools.ietf.org/html/rfc5246

    [6] http://tools.ietf.org/html/rfc2865 and

    http://tools.ietf.org/html/rfc2866

    [7] http://tools.ietf.org/html/rfc2743 and related

    [8] http://tools.ietf.org/html/rfc3748