[ 
https://issues.apache.org/jira/browse/OAK-4129?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15263268#comment-15263268
 ] 

Alexander Klimetschek edited comment on OAK-4129 at 4/28/16 11:43 PM:
----------------------------------------------------------------------

Will this really solve the problem of OAK-3899? Maybe it would, but the 
description doesn't make it clear...

The problem over there is that some authentication mechanisms do not have a 
user id that is passed into session.login(), but some other credential like a 
token, and only in the middle of the login module process the external identity 
provider figures out the (local) user id (very much like the TokenLoginModule 
itself), which is required for the TokenLoginModule to create a token in 
commit().

This means we currently cannot do "external identity provider authentication 
w/o user id in credentials + create token" in one go. We are using a workaround 
in which we create a new token using a new JCR session in the sling 
authentication handler after the first login was successful (but did not 
provide a ".token" in the attributes).

The only thing to get this issue fixed would be to respect 
{{javax.security.auth.login.name}} from the shared state in the token impl - 
which is completely independent on the type of Credentials passed in. Also, to 
support the .token creation, the custom Credentials must have a map where you 
can add the token to, to return it to the caller of session.login(), and that 
would require a common interface like "AttributedCredentials" with 
set/getAttributes().


was (Author: alexander.klimetschek):
Will this really solve the problem of OAK-3899? Maybe it would, but the 
description doesn't make it clear...

The problem over there is that some authentication mechanisms do not have a 
user id that is passed into session.login(), but some other credential like a 
token, and only in the middle of the login module process the external identity 
provider figures out the (local) user id (very much like the TokenLoginModule 
itself), which is required for the TokenLoginModule to create a token in 
commit().

This means we currently cannot do "external identity provider authentication 
w/o user id in credentials + create token" in one go. We are using a workaround 
in which we create a new token using a new JCR session in the sling 
authentication handler after the first login was successful (but did not 
provide a ".token" in the attributes).

The only thing to get this issue fixed would be to respect 
{{javax.security.auth.login.name}} in the shared state - which is completely 
independent on the type of Credentials passed in. Also, to support the .token 
creation, the custom Credentials must have a map where you can add the token 
to, to return it to the caller of session.login(), and that would require a 
common interface like "AttributedCredentials" with set/getAttributes().

> Use CredentialsSupport in TokenConfigurationImpl and TokenProviderImpl
> ----------------------------------------------------------------------
>
>                 Key: OAK-4129
>                 URL: https://issues.apache.org/jira/browse/OAK-4129
>             Project: Jackrabbit Oak
>          Issue Type: New Feature
>          Components: core
>            Reporter: angela
>            Assignee: angela
>            Priority: Minor
>
> the default token implementation could make use of the {{CredentialsSupport}} 
> thus not limiting the functionality to {{SimpleCredentials}}, which could 
> still be used as default.
> in order to do so the {{CredentialsSupport}} would need to be extended with 
> the ability to setAttibutes (i.e. an attribute map) to credentials 
> corresponding to the getAttributes method.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to