I fear did get all the details of authtkt in pyramid.authentication.

I have a Pyramid based service authenticating users against LDAP in
order to grant them access to a webservice.

Until know the service was only for one domain valid. There is a reverse
proxy in front and I may fetch the domain from the "X-Forwarded-For"
header.

But since domain is set usually on service startup/configuration time I
hard coded the domain name in the ini-file and set it like so::

    authn_policy = AuthTktAuthenticationPolicy(
        secret=settings.get('auth.secret'),
        cookie_name=settings.get('auth.cookie_name'),
        hashalg=settings.get('auth.hashalg'),
        callback=groupfinder,
        domain=settings.get('auth.cookie.domain'),
    )
    config.set_authentication_policy(authn_policy)


>From now on I need to have the domain dynamic based on the header
mentioned above (cookie has to be valid mutually exclusive for: 'foo.de'
or 'bar.de').

Looking at pyramid.authentication and AuthTKTHelper I did not find an
easy way to plug in a callable or something dynamic to get the domain
for the cookie.

What I did - and what works fine - is to patch the domain attribute on
AuthTKTHelper like so::

def _domain_getter(self):
    req = get_current_request()
    return req.headers.get('X-Forwarded-Server', 'localhost')


def _domain_setter(self, value):
    pass


_domain_patch = property(fget=_domain_getter, fset=_domain_setter)

# patch pyramid.authentication.AuthTktCookieHelper
AuthTktCookieHelper.domain = _domain_patch


But in my opinion this is far from elegant or pluggable. Did I miss
something? Is there a better method to achieve the same goal?

regards Jens
-- 
Klein & Partner KG, member of BlueDynamics Alliance

-- 
You received this message because you are subscribed to the Google Groups 
"pylons-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/pylons-discuss.
For more options, visit https://groups.google.com/d/optout.

Reply via email to