[Grok-dev] megrok.login: substituting authenticator
asouzaleite at gmx.de
Wed Sep 8 06:26:39 EDT 2010
I'm trying to understand a little of what happens in the "test.simple"
case before I can think of how much of 'megrok.login' I need to customize.
I understand that at some point a
'megrok.login.authplugins.PrincipalRegistryAuthenticator' instance gets
automagically registered in the component architecture as a utility
but I didn't manage to retrieve this utility in the
'interactive_debugger' using 'sm=app.getSiteManager() and
'u=sm.getUtility(IAuthenticationPlugin)' from the persistent 'Simple'
application of from any other site manager I got hold of. Which site
manager in the framework has this utility, or where is it registered?
Or perhaps I started off my research from false assumptions?
Aroldo Souza-Leite wrote:
> Hi Uli,
> I hadn't read the 'megrok.login' documentation attentively enough,
> sorry, I'm doing it now.
> I'm looking for a solution where I can keep using as much as possible
> of 'megrok.login', just replacing some sort of megrok.login-default
> 'athenticateCredentials' method somewhere by my own custom
> 'authenticateCredentials' method and leaving the rest untouched as long
> as the overall result is still logically consistent. Wait a little bit
> till I read more of the megrok.login code.
> Thanks for megrok.login, which I've been using sucessfully, and for the
> support in the mailinglist.
> Uli Fouquet wrote:
>> Hi Aroldo,
>> Aroldo Souza-Leite wrote:
>>> I'm trying to substitute the
>>> 'authplugins.PrincipalRegistryAuthenticator' in 'megrok.loging' by
>>> another authenticator that uses an external database of users. I
>>> understand I have to model a class that implements
>>> 'IAuthenticatorPlugin'. But where do I tell 'megrok.login' to use the my
>>> custom authenticator?
>> You have to write your own PAU setup and register it using
>> `megrok.login.setup()`. For this you need an own setup function, roughly
>> like this::
>> from zope.pluggableauth.plugins.session import SessionCredentialsPlugin
>> def customPAUSetup(site, pau, viewname=None, strict=None,
>> """Setup our own PAU.
>> # Assuming your authenticator is registered as a named global
>> # utility 'My custom authenticator plugin'
>> pau.authenticatorPlugins = ('My custom authenticator plugin', )
>> pau['custom_session'] = session = SessionCredentialsPlugin()
>> pau.credentialsPlugins = ('No Challenge if Authenticated',
>> and then register this setup like this::
>> import grok
>> import megrok.login
>> class CustomSetupApp(grok.Application, grok.Container):
>> If you create a new application, the new PAU will be active.
>> A more elaborate example of the setup is part of the docs in
>> Naturally, if you do so much things yourself, you might be better off
>> dropping megrok.login and using the pluggableauth stuff directly.
>> Best regards,
> Grok-dev mailing list
> Grok-dev at zope.org
More information about the Grok-dev