I also agree about this point that that we provide by default should not access 
anything external. 

And I agree that other implementations (like google recaptcha) should be done 
as contrib extensions that can be installed in your wiki.

Thanks
-Vincent

> On 25 May 2018, at 08:51, Thomas Mortagne <[email protected]> wrote:
> 
> I agree that the default captcha we provide should not depend on an
> external service but it should just be a default. IMO the most
> important is to make sure it's easy to choose a different captcha
> implementation and we should most probably provide the Google one as
> an option (through a contrib extension to better follow Google captcha
> API evolution).
> 
> On Fri, May 25, 2018 at 12:37 AM, Clément Aubin <[email protected]> wrote:
>> Hi,
>> 
>> On 05/24/2018 05:15 PM, Eduard Moraru wrote:
>>> Question:
>>> e
>>> Do we need the captcha module to function without the DB as well?
>>> 
>>> This would make it more difficult to create the configuration UI (in
>>> Administration) and would also mean that some captchas implementations
>>> might not respect this constraint (i.e. choosing to implement their UI in a
>>> wiki page instead).
>>> 
>>> IMO, it's not really worth the trouble and we should proceed to extending
>>> the current captcha module into 2 parts: -api and -ui (the current module
>>> would be converted from "jar" to "pom" and the current code will be
>>> deprecated and moved to the new -api module).
>> 
>> The only reason we could not to depend on the DB would be to transfer
>> parts of the captcha module to xwiki-commons IMO. For now, I don't see
>> any particular use case that could support this migration.
>> 
>>> Thanks,
>>> Eduard
>>> 
>>> On Tue, May 22, 2018 at 8:35 PM, Eduard Moraru <[email protected]> wrote:
>>> 
>>>> Hi, devs,
>>>> 
>>>> XWiki's current CAPTCHA module [1] is very old and outdated for a while
>>>> now and this is not news for anyone.
>>>> 
>>>> I see 2 major problems:
>>>> 1) The obvious one is that we just need a technologically better CAPTCHA
>>>> implementation that the current JCaptcha-based one and JCaptcha is
>>>> discontinued.
>>>> 2) The current architecture is outdated as well (i.e. wrapped around
>>>> Struts actions and initializing the VelocityContext with a custom binding)
>>>> and hard to use (i.e. you have to write your CAPTCHA UI every time you use
>>>> it, there is no rendering helper).
>>>> 
>>>> For 1), as both determined a few years ago [2] and also observed from
>>>> practice, the industry standard is now Google's reCaptcha service (either
>>>> its v2 or invisible version, or both), so we definitely need an
>>>> implementation that makes it easy to use in XWiki [3].
>>>> 
>>>> For 2), we need:
>>>> * to allow CAPTCHA implementations to provide their own rendering
>>>> ** Can be done using a template .vm file (rendered with the
>>>> TemplateManager), a wiki page or directly from Java code.
>>>> ** The implementation-specific parameters could be passed to
>>>> control/customize a particular rendering.
>>>> ** The syntax ID may not be needed, since the only relevant output would
>>>> be html.
>>>> * to move to a ScriptService-based system and to leave the resource
>>>> (image/audio) accessing concern to the individual implementation (that may
>>>> choose to continue with Struts actions, or may choose to use something
>>>> lighter like a REST resource or even or even something more inventive, like
>>>> temporary attachments on some fixed page).
>>>> * an administration UI that configures the default CAPTCHA service and its
>>>> configuration
>>>> * to allow callers to use a different CAPTCHA than the default configured
>>>> one, as long as it is available (i.e. installed)
>>>> 
>>>> Examples:
>>>> 
>>>> = Display
>>>> $services.captcha.display() -- default implementation, current
>>>> configuration
>>>> $services.captcha.recaptcha.display() -- explicitly requested
>>>> implementation, current/default configuration
>>>> $services.captcha.recaptcha.display({'theme' : 'dark', 'size' :
>>>> 'compact', 'sitekey' : 'xyz'}) -- explicitly requested implementation and
>>>> custom configuration overwrites
>>>> $services.captcha.jcaptcha.display() -- other implementation,
>>>> current/default configuration
>>>> 
>>>> = Verification
>>>> $services.captcha.isValid() -- default implementation, current
>>>> configuration
>>>> $services.captcha.recaptcha.isValid() -- explicitly requested
>>>> implementation, current/default configuration
>>>> $services.captcha.recaptcha.isValid({'secret' : 'xyz'}) -- explicitly
>>>> requested implementation and custom configuration overwrites
>>>> $services.captcha.jcaptcha.isValid() -- explicitly requested
>>>> implementation and custom configuration overwrites
>>>> 
>>>> Basically, the ScriptService API would be highly simplified to just
>>>> displaying and validating, while the components would consist of 2 parts:
>>>> * a generic Manager for the various implementations (listing,
>>>> getting/setting the default)
>>>> * various implementations, each responsible with rendering a form-friendly
>>>> CAPTCHA input and using the current request for extracting the information
>>>> they needs to read the user's answer and validate it.
>>>> 
>>>> WDYT?
>> 
>> I do agree that JCaptcha is getting quite old now, however, we might
>> have a hard time finding new FOSS and self-hosted captcha solutions (at
>> least, there's not a lot of interesting artifacts on maven central [1]).
>> 
>> IMO, we shouldn't rely on a captcha using an external verification
>> service (such as Google's captchas) as we might end up blocking users
>> that access their wiki with a filtered / controlled internet access. One
>> option could be to provide a challenge which asks the user to perform a
>> simple math operation, or respond to a control question instead, but I'm
>> not convinced of the efficiency of those solutions against real
>> captchas. As a captcha is usually quite simple to implement (apply
>> operations on a text written in an image in order to make it
>> non-readable by OCR software), we could also support our own version,
>> maybe based on the generation mechanism given by JCaptcha.
>> 
>> Thanks,
>> Clément
>> 
>> [1] https://search.maven.org/#search%7Cga%7C1%7Ccaptcha
>> 
>>>> Thanks,
>>>> Eduard
>>>> 
>>>> ----------
>>>> [1] http://extensions.xwiki.org/xwiki/bin/view/Extension/Captcha%20Module
>>>> [2] http://design.xwiki.org/xwiki/bin/view/Proposal/CAPTCHAinvestigation70
>>>> [3] https://jira.xwiki.org/browse/XWIKI-12964
>>>> 
> 
> 
> 
> -- 
> Thomas Mortagne

Reply via email to