If there are no other use cases besides NTLM than I guess the current
name is ok.

Florent

On Thu, Sep 23, 2010 at 4:40 PM, Florian Müller
<[email protected]> wrote:
> Well, it's the only way to get Javas build-in NTLM support to kick in. It
> also supports HTTP basic authentication but you really shouldn't use it for
> that.
>
> We can rename the class but that would hide it's purpose. It should really
> only be used if NTLM is desperately needed.
>
>
> Florian
>
>
> On 23/09/2010 15:27, Florent Guillaume wrote:
>>
>> Shouldn't NTLMAuthenticationProvider be named
>> JavaNetAuthenticationProvider, or something like that? There's
>> actually nothing NTLM-specific about it...
>>
>> Florent
>>
>> On Thu, Sep 23, 2010 at 11:11 AM,<[email protected]>  wrote:
>>>
>>> Author: fmui
>>> Date: Thu Sep 23 09:11:58 2010
>>> New Revision: 1000365
>>>
>>> URL: http://svn.apache.org/viewvc?rev=1000365&view=rev
>>> Log:
>>> added NTLM authentication provider
>>>
>>> Added:
>>>
>>>  incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/NTLMAuthenticationProvider.java
>>>   (with props)
>>> Modified:
>>>
>>>  incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/CmisBindingFactory.java
>>>
>>> Modified:
>>> incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/CmisBindingFactory.java
>>> URL:
>>> http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/CmisBindingFactory.java?rev=1000365&r1=1000364&r2=1000365&view=diff
>>>
>>> ==============================================================================
>>> ---
>>> incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/CmisBindingFactory.java
>>> (original)
>>> +++
>>> incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/CmisBindingFactory.java
>>> Thu Sep 23 09:11:58 2010
>>> @@ -22,6 +22,7 @@ import java.util.HashMap;
>>>  import java.util.Map;
>>>
>>>  import
>>> org.apache.chemistry.opencmis.client.bindings.impl.CmisBindingImpl;
>>> +import
>>> org.apache.chemistry.opencmis.client.bindings.spi.AbstractAuthenticationProvider;
>>>  import org.apache.chemistry.opencmis.commons.SessionParameter;
>>>  import org.apache.chemistry.opencmis.commons.spi.CmisBinding;
>>>
>>> @@ -39,7 +40,10 @@ public final class CmisBindingFactory {
>>>
>>>     /** Standard authentication provider class */
>>>     public static final String STANDARD_AUTHENTICATION_PROVIDER =
>>> "org.apache.chemistry.opencmis.client.bindings.spi.StandardAuthenticationProvider";
>>> +    /** NTLM authentication provider class */
>>> +    public static final String NTLM_AUTHENTICATION_PROVIDER =
>>> "org.apache.chemistry.opencmis.client.bindings.spi.NTLMAuthenticationProvider";
>>>
>>> +
>>>     private Map<String, String>  defaults;
>>>
>>>     /**
>>>
>>> Added:
>>> incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/NTLMAuthenticationProvider.java
>>> URL:
>>> http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/NTLMAuthenticationProvider.java?rev=1000365&view=auto
>>>
>>> ==============================================================================
>>> ---
>>> incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/NTLMAuthenticationProvider.java
>>> (added)
>>> +++
>>> incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/NTLMAuthenticationProvider.java
>>> Thu Sep 23 09:11:58 2010
>>> @@ -0,0 +1,106 @@
>>> +/*
>>> + * Licensed to the Apache Software Foundation (ASF) under one
>>> + * or more contributor license agreements.  See the NOTICE file
>>> + * distributed with this work for additional information
>>> + * regarding copyright ownership.  The ASF licenses this file
>>> + * to you under the Apache License, Version 2.0 (the
>>> + * "License"); you may not use this file except in compliance
>>> + * with the License.  You may obtain a copy of the License at
>>> + *
>>> + * http://www.apache.org/licenses/LICENSE-2.0
>>> + *
>>> + * Unless required by applicable law or agreed to in writing,
>>> + * software distributed under the License is distributed on an
>>> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
>>> + * KIND, either express or implied.  See the License for the
>>> + * specific language governing permissions and limitations
>>> + * under the License.
>>> + */
>>> +package org.apache.chemistry.opencmis.client.bindings.spi;
>>> +
>>> +import java.net.Authenticator;
>>> +import java.net.PasswordAuthentication;
>>> +import java.util.List;
>>> +import java.util.Map;
>>> +
>>> +import org.w3c.dom.Element;
>>> +
>>> +/**
>>> + * NTLM authentication provider class. USE WITH CARE!
>>> + *
>>> + * This authentication provider sets a {...@link java.net.Authenticator}
>>> which will
>>> + * replace the current authenticator, if any. It will fail if this
>>> authenticator
>>> + * will be replaced by another part of the code.
>>> + *
>>> + * Since {...@link java.net.Authenticator} is a system-wide authenticator,
>>> it will
>>> + * not reliably work in multi-user environments! To achieve that you
>>> have to
>>> + * wrap OpenCMIS into its own class loader.
>>> + */
>>> +public class NTLMAuthenticationProvider extends
>>> AbstractAuthenticationProvider {
>>> +
>>> +    private static final long serialVersionUID = 1L;
>>> +
>>> +    // java.net.Authenticator is static, so this can be static too
>>> +    private final static OpenCMISAuthenticator authenticator = new
>>> OpenCMISAuthenticator();
>>> +    static {
>>> +        Authenticator.setDefault(authenticator);
>>> +    }
>>> +
>>> +   �...@override
>>> +    public Map<String, List<String>>  getHTTPHeaders(String url) {
>>> +        // get user and password
>>> +        String user = getUser();
>>> +        String password = getPassword();
>>> +
>>> +        // if no user is set, reset the authenticator
>>> +        if (user == null) {
>>> +            authenticator.reset();
>>> +            return null;
>>> +        }
>>> +
>>> +        if (password == null) {
>>> +            password = "";
>>> +        }
>>> +
>>> +        // set user and password
>>> +        authenticator.setPasswordAuthentication(user, password);
>>> +
>>> +        // OpenCMIS is not in charge of the authentication
>>> +        // ->  no HTTP header to set
>>> +        return null;
>>> +    }
>>> +
>>> +   �...@override
>>> +    public Element getSOAPHeaders(Object portObject) {
>>> +        // no SOAP headers to set
>>> +        return null;
>>> +    }
>>> +
>>> +    /**
>>> +     * OpenCMIS Authenticator class.
>>> +     */
>>> +    static class OpenCMISAuthenticator extends Authenticator {
>>> +
>>> +        private PasswordAuthentication passwordAuthentication = null;
>>> +
>>> +        /**
>>> +         * Resets the user and password. The next request will not be
>>> +         * authenticated.
>>> +         */
>>> +        public synchronized void reset() {
>>> +            passwordAuthentication = null;
>>> +        }
>>> +
>>> +        /**
>>> +         * Sets a new user and password.
>>> +         */
>>> +        public synchronized void setPasswordAuthentication(String user,
>>> String password) {
>>> +            passwordAuthentication = new PasswordAuthentication(user,
>>> password.toCharArray());
>>> +        }
>>> +
>>> +       �...@override
>>> +        protected synchronized PasswordAuthentication
>>> getPasswordAuthentication() {
>>> +            return passwordAuthentication;
>>> +        }
>>> +    }
>>> +}
>>>
>>> Propchange:
>>> incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/NTLMAuthenticationProvider.java
>>>
>>> ------------------------------------------------------------------------------
>>>    svn:eol-style = native
>>>
>>>
>>>
>>
>>
>>
>
>



-- 
Florent Guillaume, Director of R&D, Nuxeo
Open Source, Java EE based, Enterprise Content Management (ECM)
http://www.nuxeo.com   http://www.nuxeo.org   +33 1 40 33 79 87

Reply via email to