Jakob,
 
Thank you for your answer. So the patch I did was to allow one Marmotta module 
that I am developping to call another existing marmotta module, which seems a 
common use case for me when developping new modules in this SOA architecture.
Thank you for your proposal that I will try: "decrypt" the auth token and 
provide user/passwd via the ClientConfiguration.
 
But now, here I am back to the current problem if I would like to use 
ImportClient(), as the user/pwd passed to ClientConfiguration don't seem to 
work.
 
I would be happy to have a look into that, but I would need your help about the 
open question:
"I do see the deprecated methods in 
org.apache.marmotta.client.util.HTTPUtil.createClient()
However I don't see anywhere in that createClient() that the user/pwd values 
are used ? is it a hidden mechanisme ?"
Is that maybe the current bug: that HTTPUtil.createClient() don't use the 
user/pwd to set the "Authorization" header ?
 
Thank you
Fabian

>>> Jakob Frank <ja...@apache.org> 28.10.2014 11:20 >>>

Hi Fabian, 
sorry, I mixed up the two. ClientConfiguration is the right one.
So you want to forward the auth-token you receive on your side to marmotta? 
This usecase is currently not covered, the patch you did looks like a possible 
solution.
A different approach would be to "decrypt" the auth token and provide 
user/passwd via the ClientConfiguration.


Best,
Jakob



Am 27.10.2014 15:11 schrieb "Fabian Cretton" <fabian.cret...@hevs.ch>:


Jakob,
Do we talk here about ClientConfiguration or ConfigurationClient ?
In my understanding ConfigurationClient is a client to access the configuration 
of Marmotta whereas I was talking about ClientConfiguration here.
In my code, to call the ImportClient, I am doing:
ClientConfiguration configuration = new ClientConfiguration(marmottaURL, 
"admin", "pass123");
configuration.setMarmottaContext(context);
ImportClient importClient = new ImportClient(configuration);
importClient.uploadDataset(is, format.getDefaultMIMEType());
Then, I do see the deprecated methods in 
org.apache.marmotta.client.util.HTTPUtil.createClient()
However I don't see anywhere in that createClient() that the user/pwd values 
are used ? is it a hidden mechanisme ?
If you can give me more precision I can still look into that, but hopefully I 
am not causing you more troubles then help.
But still there is something not clear for me:
Ultimately, I don't want to pass a predefined user/pwd to my 
ClientConfiguration in my java code, but I want to use the user/pwd currently 
logged on the platform.
This is what I do in the current work-around I described in my first post:
>> To make it work, I had make my own copy of the method
>> ImportClient.uploadDataset(), and pass the headerAuth received by my own
>> webservice to the post object: post.setHeader("Authorization", headerAuth);
Fabian

>>> Jakob Frank <ja...@apache.org> 27.10.2014 13:43 >>>
It is - setting the username/passwd in the ConfigurationClient should
do the trick.

I had a look into
org.apache.marmotta.client.clients.ConfigurationClient and
org.apache.marmotta.client.util.HTTPUtil, this is where I found the
warnings.

We updated HttpClient to 4.3 some time ago which changed the API, but
never followed up with all the usages in marmotta [1].

There are probably to strategies to fix the auth-issue:
* configure the HttpClient for "preemtive auth", so it sends the
auth-header right at the beginning, or
* implement a retry-strategy that reacts on 401 correctly (actually,
IMHO HttpClient should do so automatically)


Best,
Jakob

[1] https://issues.apache.org/jira/browse/MARMOTTA-406

On 27 October 2014 10:50, Fabian Cretton <fabian.cret...@hevs.ch> wrote:
> Do you mean that passing the user/pwd to the ClientConfiguration should be
> the correct way to do it ?
>
> And, more precisely, where is the use of a deprecated API of HttpClient ?
>
> thanks
> Fabian
>
>>>> Jakob Frank <ja...@apache.org> 27.10.2014 09:38 >>>
> Hi Fabian,
>
> while looking into the code for the data-import issue, I saw that we
> are using a deprecated API of HttpClient - maybe the authentication
> issue is related to that.
>
> Would be great if you could have a look into that and maybe provide a patch!
>
> Best,
> Jakob
>
>
> On 24 October 2014 13:56, Fabian Cretton <fabian.cret...@hevs.ch> wrote:
>> Hi,
>>
>> In a Marmotta module I am developping, I did use ImportClient to upload
>> data, and it did work fine.
>>
>> However, when changing Marmotta's security from "simple" to "restricted",
>> the ImportClient was failing with a 401.
>> I did try to pass a user/pwd to the ClientConfiguration(), but the error
>> persisted (I was passing the user and password as 'clear' strings, for
>> instance 'admin' and 'pass123').
>>
>> To make it work, I had make my own copy of the method
>> ImportClient.uploadDataset(), and pass the headerAuth received by my own
>> webservice to the post object: post.setHeader("Authorization",
>> headerAuth);
>>
>> I thus have two question:
>> - is that normal that the ImportClient was failing or did I do something
>> wrong
>> - if that was normal, would you want a new version of ImportClient that
>> could handle this ?
>>
>> thank you
>> Fabian
>>

Reply via email to