Installing
==========

Requirement
++++++++++++
You must have a CAS server working.

CAS
+++
You must also have enabled the logout 
which basically is adding 
``<property name="followServiceRedirects" value="true" />`` in the
LogoutController bean in the cas-servlet.xml.


Your apps
+++++++++
Nothing is required for your apps, just set them up and fill out the config 
file as seen in the demo/ directory.

The configuration is pretty straightforward, you should take example on the
config files demo provided with the egg.

Here is what you can find in it, for the who.ini file::

    # IDENTIFIER
    # @param :
    # - cas_url : URL to your CAS server. Ensure your URL has a trailing slash.
    # - rememberer_name : name of the plugin for remembering (delegate)
    # - path_toskip : regex for url handling their own way the CAS authent
    # - path_logout : regex to see if a logout has to be performed (and trigger forget via challenge)
    #                 WARNING : must include the path of logout even for path_toskip application
    #                 to properly logging out from the CAS also
    [plugin:casauth]
    use = repoze.who.plugins.cas.main_plugin:make_plugin
    cas_url= https://servcas:8443/cas/
    rememberer_name = auth_tkt
    path_toskip = .*/phpbb/.*
    path_logout = .*/logout.*
                  .*mode=logout.*
    
    # CHALLENGE DECIDER
    # @param:
    # - path_login : those regexp indicate which url should be redirected for a challenge 
    #                e.g. : for CAS, will be redirected on a "/cas/login" like url
    [plugin:decider]
    use = repoze.who.plugins.cas.challenge_decider:make_plugin
    path_login = 
                .*trac/login.*
                .*/login$ 
    
    
    
    [plugin:auth_tkt]
    # identification
    use = repoze.who.plugins.auth_tkt:make_plugin
    secret = secret
    cookie_name = oatmeal
    secure = False
    include_ip = False
    
    [general]
    request_classifier = repoze.who.classifiers:default_request_classifier
    remote_user_key = REMOTE_USER
    # trick : target the plugin whose name is the same
    challenge_decider = decider
    
    
    [identifiers]
    # plugin_name;classifier_name:.. or just plugin_name (good for any)
    plugins =
          casauth
          auth_tkt
    
    [authenticators]
    # plugin_name;classifier_name.. or just plugin_name (good for any)
    plugins =
          casauth
    
    
    [challengers]
    # plugin_name;classifier_name:.. or just plugin_name (good for any)
    plugins =
          casauth
    
    
