Hi Jon:
Are you managing a database of user/password credentials for the various remote
sites?
Another design is that ncWMS has a single logon to each of your remote sites.
Give each remote site a role, and manage access to them through standard
role-based tomcat authentication, ie users are given that role if they have
authorization.
I have some more thoughts about what to do if that doesnt work.
John
Jon Blower wrote:
> Hi,
>
> Accessing OPeNDAP or remote NetCDF files in nj4.0 uses the Apache
> Commons HttpClient library. If my understanding is correct then nj4.0
> uses the same HttpClient instance for all connections, and this
> instance is set with static methods:
>
> opendap.dap.DConnect2.setHttpClient(client);
> ucar.unidata.io.http.HTTPRandomAccessFile.setHttpClient(client);
>
> In my case, I have a Java web application (running in a single VM)
> accessing lots of remote servers via HTTP. The entire application
> uses the same HttpClient instance, and therefore there is no way to
> distinguish between the users of my application. Say I have two users
> going via my application to the same secure OPeNDAP server. My
> application can only associate a *single* username/password
> combination with the host:port of the OPeNDAP server, following the
> Credentials framework in HttpClient. There is no way to register two
> different username/password combinations for the same remote server.
>
> One possible way to fix this would be to allow each NetcdfDataset to
> be associated with its own HttpClient instance. This could be
> provided as an optional parameter to openDataset(), defaulting back to
> the VM-wide one if omitted. Then I could store an HttpClient (with
> associated credentials) in the user's session object in my
> application. (I am not sure if this is good practice for HttpClient
> though.)
>
> Is this easily remedied or a tough job?
>
> Cheers, Jon
>