Here is the JIRA:

https://issues.apache.org/jira/browse/SYNCOPE-313

Colm.

On Mon, Feb 11, 2013 at 1:48 PM, Francesco Chicchiriccò <ilgro...@apache.org
> wrote:

> On 11/02/2013 14:45, Colm O hEigeartaigh wrote:
>
>> Hi Francesco,
>>
>>  do you mean opening another improvement issue, besides SYNCOPE-164, for
>>> synchronizing non-cleartext passwords?
>>>
>> Yes. I see them as separate use-cases. This task is to synchronize
>> (non-cleartext) passwords into Syncope, passthrough authentication is to
>> delegate user authentication to the backend resource. Do you agree with
>> this distinction?
>>
>
> Yes, completely.
>
>
>  I agree with this but I don't see it as particularly straightforward:
>>> consider for example that we cannot refer to any specific connector
>>> bundle
>>> from inside the SyncopeSyncResultHandler, hence we should find the
>>> cleanest
>>> place to encapsulate the following logic:
>>>
>> Yep, good point.
>>
>
> Regards.
>
>  On Mon, Feb 11, 2013 at 1:17 PM, Francesco Chicchiriccò <
>> ilgro...@apache.org
>>
>>> wrote:
>>> On 11/02/2013 13:30, Colm O hEigeartaigh wrote:
>>>
>>>  Hi Francesco,
>>>>
>>>>   This should be instead: "The ability to synchronize non-cleartext
>>>>
>>>>> passwords from external resources sounds like a nice new feature,
>>>>> isn't it?"
>>>>>
>>>>>  Yes I think so. I think the passthrough authentication use-case is
>>>> more
>>>> powerful, as I don't see an easy way to support (for example) salting
>>>> using
>>>> this approach. But it should be pretty straightforward to implement,
>>>> just
>>>> treat the retrieved password as hashed according to an algorithm set on
>>>> the
>>>> Connector for the DB Connector, or via "{CIPHER}VALUE" for LDAP, etc.
>>>> Shall
>>>> I create a JIRA for this task?
>>>>
>>>>  Hi Colm,
>>> do you mean opening another improvement issue, besides SYNCOPE-164, for
>>> synchronizing non-cleartext passwords?
>>>
>>> I agree with this but I don't see it as particularly straightforward:
>>> consider for example that we cannot refer to any specific connector
>>> bundle
>>> from inside the SyncopeSyncResultHandler, hence we should find the
>>> cleanest
>>> place to encapsulate the following logic:
>>>
>>> if (password.isClearText()) {
>>> // do as currently done
>>> } else {
>>>    if (connector.isLDAP()) {
>>>     // extract cipher and value
>>>    } else if (connector.isDBTable()) {
>>>     // treat value as ciphered with the cipher defined in connector
>>> configuration
>>>    } else {
>>>      ...
>>>    }
>>> }
>>>
>>> Regards.
>>>
>>>   On Tue, Feb 5, 2013 at 2:02 PM, Francesco Chicchiriccò
>>>
>>>> <ilgro...@apache.org>wrote:
>>>>
>>>>   On 05/02/2013 13:53, Francesco Chicchiriccň wrote:
>>>>
>>>>>   On 05/02/2013 12:48, Colm O hEigeartaigh wrote:
>>>>>
>>>>>>   Hi all,
>>>>>>
>>>>>>> Just thinking aloud here about how passwords are encoded in Syncope.
>>>>>>> Let's
>>>>>>> say I have some Users in an SQL backend I want to synchronize into
>>>>>>> Syncope.
>>>>>>> I want to 'retrieve passwords' in the Connector, as I want to allow
>>>>>>> users
>>>>>>> to call on the 'rest/user/verifyPassword/X.******json?password=Y'
>>>>>>> API,
>>>>>>>
>>>>>>> and
>>>>>>>
>>>>>>> so I
>>>>>>> provide an appropriate mapping.
>>>>>>>
>>>>>>>   Currently this cannot work: the password value synchronizing from
>>>>>>>
>>>>>> external resource is currently just ignored - a new random
>>>>>> policy-compliant
>>>>>> password is generated (look at the end of ConnObjectUtil.****
>>>>>> getAttributableTO()
>>>>>> - called by SyncopeSyncResultHandler.******create()).
>>>>>>
>>>>>>
>>>>>>   Correction: as correctly pointed out by Colm, this happens only if
>>>>>> no
>>>>>>
>>>>> password was provided by the synchronizing resource.
>>>>>
>>>>>
>>>>>    If the passwords are stored in the backend in a hashed format then
>>>>> there
>>>>>
>>>>>  is
>>>>>>
>>>>>>> no way of successfully calling the above API from what I can see. The
>>>>>>> 'Password Cipher Algorithm' String of the Connector only applies to
>>>>>>> the
>>>>>>> hashing algorithm used for propagation not for synchronization.
>>>>>>> PasswordEncoder.verify() will hash the user password according to
>>>>>>> user.getCipherAlgorithm(), and so it will end up hashing the password
>>>>>>> twice
>>>>>>> in this use-case.
>>>>>>>
>>>>>>>   Actually this use case, e.g. authenticating users against an
>>>>>>> external
>>>>>>>
>>>>>> resource, is covered by SYNCOPE-164 as "passthrough authentication".
>>>>>>
>>>>>>    Does it make sense that if the Connector is configured to hash
>>>>>> passwords
>>>>>>
>>>>>>  on
>>>>>>> the propagation side using a given algorithm, that we can have some
>>>>>>> internal logic in Syncope that will treat a retrieved password as
>>>>>>> hashed
>>>>>>> according to this algorithm?
>>>>>>>
>>>>>>>   Definitely yes: the way how the synchronizing password value is
>>>>>>>
>>>>>> interpreted could also depend on the connector: for example
>>>>>> {CIPHER}VALUE
>>>>>> for LDAP.
>>>>>>
>>>>>> The ability to synchronize passwords from external resources sounds
>>>>>> like
>>>>>> a nice new feature, isn't it?
>>>>>>
>>>>>>   This should be instead: "The ability to synchronize non-cleartext
>>>>>>
>>>>> passwords from external resources sounds like a nice new feature, isn't
>>>>> it?"
>>>>>
>>>>> Regards.
>>>>>
>>>>
> --
> Francesco Chicchiriccò
>
> ASF Member, Apache Syncope PMC chair, Apache Cocoon PMC Member
> http://people.apache.org/~**ilgrosso/<http://people.apache.org/~ilgrosso/>
>
>


-- 
Colm O hEigeartaigh

Talend Community Coder
http://coders.talend.com

Reply via email to