Hi johan,

Thanks for the input. The code snippet I have shown to get the logged in
user from stepMap is only possible if the AuthenticationContext is
available. But there are other scenarios AuthenticationContext is not
available ( Eg. REST endpoint ), that's where I get the problem

On Sun, Jan 25, 2015 at 2:15 AM, Johann Nallathamby <joh...@wso2.com> wrote:

> CarbonContext is populated only if you login through carbon authenticators
> for management console login, or calling admin services.
>
> In your case the code snippet you have shown should be the way to get
> locally authenticated username from previous authentication steps. As you
> might see there is a restriction in the admin UI in choosing which locally
> authenticated step to pick as username. Currently we there is no way to
> give this in UI.
>
> So you may continue assuming that all local authenticators return same
> username for now and choose first local authenticator. Later we have to see
> how to improve this design.
>
> On Sun, Jan 25, 2015 at 1:06 AM, Lasitha Wattaladeniya <lasit...@wso2.com>
> wrote:
>
>> Hi devs,
>>
>> I'm trying to access the authorized user using the following code
>> snippet,
>>
>> String currentUser =
>> CarbonContext.getThreadLocalCarbonContext().getUsername();
>>
>> But .getUsername() returns null.
>>
>> The scenario is , I'm using two authenticators, basicauth => custom
>> authenticator (two authentication steps) . I need to access the logged in
>> user once it passed the basic authentication. I'm using IS 5.0.0 , Carbon
>> 4.2.0. I'm logging in using default username/password admin/admin. I can
>> access the tenantdomain and tenantID but not the username.
>>
>> I can access the username if the AuthenticationContext is available, as
>> the following way,
>>
>>        String username = "";
>>         for (int i = context.getSequenceConfig().getStepMap().size() - 1;
>> i >= 0; i--) {
>>             if
>> (context.getSequenceConfig().getStepMap().get(i).getAuthenticatedUser() !=
>> null &&
>>
>> context.getSequenceConfig().getStepMap().get(i).getAuthenticatedAutenticator()
>>                         .getApplicationAuthenticator() instanceof
>> LocalApplicationAuthenticator) {
>>                 username =
>> context.getSequenceConfig().getStepMap().get(i).getAuthenticatedUser();
>>                 if (log.isDebugEnabled()) {
>>                     log.debug("username :" + username);
>>                 }
>>                 break;
>>             }
>>         }
>>
>> But it's not possible to always access the user from the
>> authenticationContext. Anyone knows how to get this done through
>> CarbonContext ?
>>
>> Found this thread [1] about the same topic but no luck.
>>
>> [1].
>> http://wso2-oxygen-tank.10903.n7.nabble.com/Dev-PrivilegedCarbonContext-getThreadLocalCarbonContext-getUsername-returns-null-td73948.html
>>
>> --
>> Lasitha Wattaladeniya
>> Software Engineer
>> WSO2, Inc. | http://wso2.com
>> lean. enterprise. middleware
>>
>> Mobile : +94719397528
>> Blog : techreadme.blogspot.com
>>
>> _______________________________________________
>> Dev mailing list
>> Dev@wso2.org
>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>
>>
>
>
> --
> Thanks & Regards,
>
> *Johann Dilantha Nallathamby*
> Associate Technical Lead & Product Lead of WSO2 Identity Server
> Integration Technologies Team
> WSO2, Inc.
> lean.enterprise.middleware
>
> Mobile - *+94777776950*
> Blog - *http://nallaa.wordpress.com <http://nallaa.wordpress.com>*
>



-- 
Lasitha Wattaladeniya
Software Engineer
WSO2, Inc. | http://wso2.com
lean. enterprise. middleware

Mobile : +94719397528
Blog : techreadme.blogspot.com
_______________________________________________
Dev mailing list
Dev@wso2.org
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to