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
