From 4d998aa65057b7a29bd2a5f0012eb396b88da013 Mon Sep 17 00:00:00 2001 From: Nick Couchman Date: Tue, 31 Jan 2017 15:51:50 -0500 Subject: [PATCH 01/22] GUACAMOLE-156: Add missing French translations. --- .../src/main/resources/translations/fr.json | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/resources/translations/fr.json b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/resources/translations/fr.json index 5369d51b2..8521f5882 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/resources/translations/fr.json +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/resources/translations/fr.json @@ -8,6 +8,20 @@ "FIELD_HEADER_NEW_PASSWORD" : "Mot de passe", "FIELD_HEADER_CONFIRM_NEW_PASSWORD" : "Répéter mot de passe" + }, + + "USER_ATTRIBUTES" : { + + "FIELD_HEADER_DISABLED" : "Identifiant désactivé:", + "FIELD_HEADER_EXPIRED" : "Mot de passe expiré:", + "FIELD_HEADER_ACCESS_WINDOW_END" : "Interdire l'accès après:", + "FIELD_HEADER_ACCESS_WINDOW_START" : "Autoriser l'accès après:", + "FIELD_HEADER_TIMEZONE" : "Fuseau horaire de l'utilisateur:", + "FIELD_HEADER_VALID_FROM" : "Activer le compte après:", + "FIELD_HEADER_VALID_UNTIL" : "Désactiver le compte après:", + + "SECTION_HEADER_RESTRICTIONS" : "Restrictions de comptes" + } } From fdc654b945c9510f83562708ba305425536accd6 Mon Sep 17 00:00:00 2001 From: Nick Couchman Date: Wed, 25 Jan 2017 14:00:04 -0500 Subject: [PATCH 02/22] GUACAMOLE-195: Add module to support HTTP header-based authentication. --- extensions/guacamole-auth-http/.gitignore | 9 + extensions/guacamole-auth-http/LICENSE | 201 ++++++++++++++++++ extensions/guacamole-auth-http/README.md | 2 + extensions/guacamole-auth-http/pom.xml | 141 ++++++++++++ .../src/main/assembly/dist.xml | 53 +++++ .../http/AuthenticationProviderService.java | 92 ++++++++ .../auth/http/ConfigurationService.java | 58 +++++ .../auth/http/HTTPAuthenticationProvider.java | 110 ++++++++++ .../HTTPAuthenticationProviderModule.java | 83 ++++++++ .../auth/http/HTTPGuacamoleProperties.java | 50 +++++ .../auth/http/user/AuthenticatedUser.java | 76 +++++++ .../src/main/resources/guac-manifest.json | 12 ++ 12 files changed, 887 insertions(+) create mode 100644 extensions/guacamole-auth-http/.gitignore create mode 100644 extensions/guacamole-auth-http/LICENSE create mode 100644 extensions/guacamole-auth-http/README.md create mode 100644 extensions/guacamole-auth-http/pom.xml create mode 100644 extensions/guacamole-auth-http/src/main/assembly/dist.xml create mode 100644 extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/AuthenticationProviderService.java create mode 100644 extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/ConfigurationService.java create mode 100644 extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPAuthenticationProvider.java create mode 100644 extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPAuthenticationProviderModule.java create mode 100644 extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPGuacamoleProperties.java create mode 100644 extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/user/AuthenticatedUser.java create mode 100644 extensions/guacamole-auth-http/src/main/resources/guac-manifest.json diff --git a/extensions/guacamole-auth-http/.gitignore b/extensions/guacamole-auth-http/.gitignore new file mode 100644 index 000000000..1cdc9f7fd --- /dev/null +++ b/extensions/guacamole-auth-http/.gitignore @@ -0,0 +1,9 @@ +target/ +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next +release.properties +dependency-reduced-pom.xml +buildNumber.properties +.mvn/timing.properties diff --git a/extensions/guacamole-auth-http/LICENSE b/extensions/guacamole-auth-http/LICENSE new file mode 100644 index 000000000..8dada3eda --- /dev/null +++ b/extensions/guacamole-auth-http/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed 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. diff --git a/extensions/guacamole-auth-http/README.md b/extensions/guacamole-auth-http/README.md new file mode 100644 index 000000000..032bbc9de --- /dev/null +++ b/extensions/guacamole-auth-http/README.md @@ -0,0 +1,2 @@ +# guacamole-auth-http +Basic HTTP Authentication Module for Guacamole diff --git a/extensions/guacamole-auth-http/pom.xml b/extensions/guacamole-auth-http/pom.xml new file mode 100644 index 000000000..6893e163e --- /dev/null +++ b/extensions/guacamole-auth-http/pom.xml @@ -0,0 +1,141 @@ + + + + + 4.0.0 + org.apache.guacamole + guacamole-auth-http + jar + 0.9.11-incubating + guacamole-auth-http + http://guacamole.incubator.apache.org/ + + + UTF-8 + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.3 + + 1.6 + 1.6 + + -Xlint:all + -Werror + + true + + + + + + org.apache.maven.plugins + maven-dependency-plugin + 2.10 + + + unpack-dependencies + prepare-package + + unpack-dependencies + + + runtime + ${project.build.directory}/classes + + + + + + + + maven-assembly-plugin + 2.5.3 + + ${project.artifactId}-${project.version} + false + + src/main/assembly/dist.xml + + + + + make-dist-archive + package + + single + + + + + + + + + + + + + org.apache.guacamole + guacamole-common + 0.9.11-incubating + provided + + + + + org.apache.guacamole + guacamole-ext + 0.9.11-incubating + provided + + + + com.google.inject + guice + 3.0 + + + com.google.inject.extensions + guice-multibindings + 3.0 + + + + + javax.servlet + servlet-api + 2.5 + provided + + + + + + diff --git a/extensions/guacamole-auth-http/src/main/assembly/dist.xml b/extensions/guacamole-auth-http/src/main/assembly/dist.xml new file mode 100644 index 000000000..ffcb1a633 --- /dev/null +++ b/extensions/guacamole-auth-http/src/main/assembly/dist.xml @@ -0,0 +1,53 @@ + + + + + dist + ${project.artifactId}-${project.version} + + + + tar.gz + + + + + + + + + + + target + + + *.jar + + + + + + diff --git a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/AuthenticationProviderService.java b/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/AuthenticationProviderService.java new file mode 100644 index 000000000..d91c21758 --- /dev/null +++ b/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/AuthenticationProviderService.java @@ -0,0 +1,92 @@ +/* + * Copyright (C) 2015 Glyptodon LLC + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package org.apache.guacamole.auth.http; + +import com.google.inject.Inject; +import com.google.inject.Provider; +import javax.servlet.http.HttpServletRequest; +import org.apache.guacamole.GuacamoleException; +import org.apache.guacamole.net.auth.Credentials; +import org.apache.guacamole.net.auth.credentials.CredentialsInfo; +import org.apache.guacamole.net.auth.credentials.GuacamoleInvalidCredentialsException; +import org.apache.guacamole.auth.http.user.AuthenticatedUser; +import java.security.Principal; + +/** + * Service providing convenience functions for the HTTP AuthenticationProvider + * implementation. + * + * @author Nick Couchman + */ +public class AuthenticationProviderService { + + /** + * Service for retrieving LDAP server configuration information. + */ + @Inject + private ConfigurationService confService; + + /** + * Provider for AuthenticatedUser objects. + */ + @Inject + private Provider authenticatedUserProvider; + + /** + * Returns an AuthenticatedUser representing the user authenticated by the + * given credentials. + * + * @param credentials + * The credentials to use for authentication. + * + * @return + * An AuthenticatedUser representing the user authenticated by the + * given credentials. + * + * @throws GuacamoleException + * If an error occurs while authenticating the user, or if access is + * denied. + */ + public AuthenticatedUser authenticateUser(Credentials credentials) + throws GuacamoleException { + + // Pull HTTP ticket from request if present + HttpServletRequest request = credentials.getRequest(); + if (request != null) { + String username = request.getRemoteUser(); + if(username == null || username == "") { + username = request.getHeader(confService.getHttpAuthHeader()); + } + if (username != null) { + AuthenticatedUser authenticatedUser = authenticatedUserProvider.get(); + authenticatedUser.init(username, credentials); + return authenticatedUser; + } + } + + // Request HTTP authentication + throw new GuacamoleInvalidCredentialsException("Invalid login.", CredentialsInfo.USERNAME_PASSWORD); + + } + +} diff --git a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/ConfigurationService.java b/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/ConfigurationService.java new file mode 100644 index 000000000..abd78aac1 --- /dev/null +++ b/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/ConfigurationService.java @@ -0,0 +1,58 @@ +/* + * 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.guacamole.auth.http; + +import com.google.inject.Inject; +import org.apache.guacamole.GuacamoleException; +import org.apache.guacamole.environment.Environment; + +/** + * Service for retrieving configuration information regarding the LDAP server. + * + * @author Nick Couchman + */ +public class ConfigurationService { + + /** + * The Guacamole server environment. + */ + @Inject + private Environment environment; + + /** + * Returns the header of the HTTP server as configured with + * guacamole.properties used for HTTP basic authentication. + * By default, this will be "REMOTE_USER". + * + * @return + * The header used for HTTP basic authentication, as configured with + * guacamole.properties. + * + * @throws GuacamoleException + * If guacamole.properties cannot be parsed. + */ + public String getHttpAuthHeader() throws GuacamoleException { + return environment.getProperty( + HTTPGuacamoleProperties.HTTP_AUTH_HEADER, + "REMOTE_USER" + ); + } + +} diff --git a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPAuthenticationProvider.java b/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPAuthenticationProvider.java new file mode 100644 index 000000000..6bb6f5648 --- /dev/null +++ b/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPAuthenticationProvider.java @@ -0,0 +1,110 @@ +/* + * Copyright (C) 2015 Glyptodon LLC + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package org.apache.guacamole.auth.http; + +import com.google.inject.Guice; +import com.google.inject.Injector; +import org.apache.guacamole.GuacamoleException; +import org.apache.guacamole.net.auth.AuthenticatedUser; +import org.apache.guacamole.net.auth.AuthenticationProvider; +import org.apache.guacamole.net.auth.Credentials; +import org.apache.guacamole.net.auth.UserContext; + +/** + * Guacamole authentication backend which authenticates users using an + * arbitrary external system implementing HTTP. No storage for connections is + * provided - only authentication. Storage must be provided by some other + * extension. + * + * @author Nick Couchman + */ +public class HTTPAuthenticationProvider implements AuthenticationProvider { + + /** + * Injector which will manage the object graph of this authentication + * provider. + */ + private final Injector injector; + + /** + * Creates a new HTTPAuthenticationProvider that authenticates users + * against an HTTP service + * + * @throws GuacamoleException + * If a required property is missing, or an error occurs while parsing + * a property. + */ + public HTTPAuthenticationProvider() throws GuacamoleException { + + // Set up Guice injector. + injector = Guice.createInjector( + new HTTPAuthenticationProviderModule(this) + ); + + } + + @Override + public String getIdentifier() { + return "http"; + } + + @Override + public AuthenticatedUser authenticateUser(Credentials credentials) + throws GuacamoleException { + + // Attempt to authenticate user with given credentials + AuthenticationProviderService authProviderService = injector.getInstance(AuthenticationProviderService.class); + return authProviderService.authenticateUser(credentials); + + } + + @Override + public AuthenticatedUser updateAuthenticatedUser( + AuthenticatedUser authenticatedUser, Credentials credentials) + throws GuacamoleException { + + // No update necessary + return authenticatedUser; + + } + + @Override + public UserContext getUserContext(AuthenticatedUser authenticatedUser) + throws GuacamoleException { + + // No associated data whatsoever + return null; + + } + + @Override + public UserContext updateUserContext(UserContext context, + AuthenticatedUser authenticatedUser, Credentials credentials) + throws GuacamoleException { + + // No update necessary + return context; + + } + +} diff --git a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPAuthenticationProviderModule.java b/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPAuthenticationProviderModule.java new file mode 100644 index 000000000..4643c9ed1 --- /dev/null +++ b/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPAuthenticationProviderModule.java @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2015 Glyptodon LLC + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package org.apache.guacamole.auth.http; + +import com.google.inject.AbstractModule; +import org.apache.guacamole.GuacamoleException; +import org.apache.guacamole.environment.Environment; +import org.apache.guacamole.environment.LocalEnvironment; +import org.apache.guacamole.net.auth.AuthenticationProvider; + +/** + * Guice module which configures HTTP-specific injections. + * + * @author Michael Jumper + */ +public class HTTPAuthenticationProviderModule extends AbstractModule { + + /** + * Guacamole server environment. + */ + private final Environment environment; + + /** + * A reference to the HTTPAuthenticationProvider on behalf of which this + * module has configured injection. + */ + private final AuthenticationProvider authProvider; + + /** + * Creates a new HTTP authentication provider module which configures + * injection for the HTTPAuthenticationProvider. + * + * @param authProvider + * The AuthenticationProvider for which injection is being configured. + * + * @throws GuacamoleException + * If an error occurs while retrieving the Guacamole server + * environment. + */ + public HTTPAuthenticationProviderModule(AuthenticationProvider authProvider) + throws GuacamoleException { + + // Get local environment + this.environment = new LocalEnvironment(); + + // Store associated auth provider + this.authProvider = authProvider; + + } + + @Override + protected void configure() { + + // Bind core implementations of guacamole-ext classes + bind(AuthenticationProvider.class).toInstance(authProvider); + bind(Environment.class).toInstance(environment); + + // Bind HTTP-specific classes + bind(ConfigurationService.class); + + } + +} diff --git a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPGuacamoleProperties.java b/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPGuacamoleProperties.java new file mode 100644 index 000000000..3dada2397 --- /dev/null +++ b/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPGuacamoleProperties.java @@ -0,0 +1,50 @@ +/* + * 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.guacamole.auth.http; + +import org.apache.guacamole.properties.IntegerGuacamoleProperty; +import org.apache.guacamole.properties.StringGuacamoleProperty; + + +/** + * Provides properties required for use of the HTTP authentication provider. + * These properties will be read from guacamole.properties when the HTTP + * authentication provider is used. + * + * @author Nick Couchman + */ +public class HTTPGuacamoleProperties { + + /** + * This class should not be instantiated. + */ + private HTTPGuacamoleProperties() {} + + /** + * The header used for HTTP basic authentication. + */ + public static final StringGuacamoleProperty HTTP_AUTH_HEADER = new StringGuacamoleProperty() { + + @Override + public String getName() { return "http-auth-header"; } + + }; + +} diff --git a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/user/AuthenticatedUser.java b/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/user/AuthenticatedUser.java new file mode 100644 index 000000000..1afe2f3c0 --- /dev/null +++ b/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/user/AuthenticatedUser.java @@ -0,0 +1,76 @@ +/* + * Copyright (C) 2015 Glyptodon LLC + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package org.apache.guacamole.auth.http.user; + +import com.google.inject.Inject; +import org.apache.guacamole.net.auth.AbstractAuthenticatedUser; +import org.apache.guacamole.net.auth.AuthenticationProvider; +import org.apache.guacamole.net.auth.Credentials; + +/** + * An HTTP-specific implementation of AuthenticatedUser, associating a + * username and particular set of credentials with the HTTP authentication + * provider. + * + * @author Michael Jumper + */ +public class AuthenticatedUser extends AbstractAuthenticatedUser { + + /** + * Reference to the authentication provider associated with this + * authenticated user. + */ + @Inject + private AuthenticationProvider authProvider; + + /** + * The credentials provided when this user was authenticated. + */ + private Credentials credentials; + + /** + * Initializes this AuthenticatedUser using the given username and + * credentials. + * + * @param username + * The username of the user that was authenticated. + * + * @param credentials + * The credentials provided when this user was authenticated. + */ + public void init(String username, Credentials credentials) { + this.credentials = credentials; + setIdentifier(username.toLowerCase()); + } + + @Override + public AuthenticationProvider getAuthenticationProvider() { + return authProvider; + } + + @Override + public Credentials getCredentials() { + return credentials; + } + +} diff --git a/extensions/guacamole-auth-http/src/main/resources/guac-manifest.json b/extensions/guacamole-auth-http/src/main/resources/guac-manifest.json new file mode 100644 index 000000000..898234156 --- /dev/null +++ b/extensions/guacamole-auth-http/src/main/resources/guac-manifest.json @@ -0,0 +1,12 @@ +{ + + "guacamoleVersion" : "0.9.11-incubating", + + "name" : "HTTP Authentication Extension", + "namespace" : "guac-http", + + "authProviders" : [ + "org.apache.guacamole.auth.http.HTTPAuthenticationProvider" + ] + +} From 41b60ed62b3a5202fb00ebaccfa11dc345127432 Mon Sep 17 00:00:00 2001 From: Nick Couchman Date: Mon, 30 Jan 2017 07:39:00 -0500 Subject: [PATCH 03/22] GUACAMOLE-195: Remove incorrect check on empty username string. --- .../guacamole/auth/http/AuthenticationProviderService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/AuthenticationProviderService.java b/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/AuthenticationProviderService.java index d91c21758..1d86deb66 100644 --- a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/AuthenticationProviderService.java +++ b/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/AuthenticationProviderService.java @@ -74,7 +74,7 @@ public class AuthenticationProviderService { HttpServletRequest request = credentials.getRequest(); if (request != null) { String username = request.getRemoteUser(); - if(username == null || username == "") { + if(username == null) { username = request.getHeader(confService.getHttpAuthHeader()); } if (username != null) { From ee9fb5d7ed6fa823fea2979e926ff045a69dec76 Mon Sep 17 00:00:00 2001 From: Nick Couchman Date: Mon, 30 Jan 2017 07:40:06 -0500 Subject: [PATCH 04/22] GUACAMOLE-195: Add new module to main pom.xml for maven build. --- pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/pom.xml b/pom.xml index 8548f48cf..27dbc3c26 100644 --- a/pom.xml +++ b/pom.xml @@ -53,6 +53,7 @@ extensions/guacamole-auth-jdbc extensions/guacamole-auth-ldap extensions/guacamole-auth-noauth + extensions/guacamole-auth-http doc/guacamole-example From ab27739b02d6941b761af580969c449a7e3d2bdb Mon Sep 17 00:00:00 2001 From: Nick Couchman Date: Mon, 30 Jan 2017 08:09:18 -0500 Subject: [PATCH 05/22] GAUCAMOLE-195: Fix code style issues to conform to project standards. --- .../guacamole/auth/http/AuthenticationProviderService.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/AuthenticationProviderService.java b/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/AuthenticationProviderService.java index 1d86deb66..1ef02fe17 100644 --- a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/AuthenticationProviderService.java +++ b/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/AuthenticationProviderService.java @@ -74,10 +74,11 @@ public class AuthenticationProviderService { HttpServletRequest request = credentials.getRequest(); if (request != null) { String username = request.getRemoteUser(); - if(username == null) { + if(username == null) username = request.getHeader(confService.getHttpAuthHeader()); - } + if (username != null) { + logger.debug("Authenticating with user {}", username); AuthenticatedUser authenticatedUser = authenticatedUserProvider.get(); authenticatedUser.init(username, credentials); return authenticatedUser; From 3b27e466768e46b71e5f8a05b979226788095cc7 Mon Sep 17 00:00:00 2001 From: Nick Couchman Date: Mon, 30 Jan 2017 08:21:43 -0500 Subject: [PATCH 06/22] GUACAMOLE-195: Correct common version in extension pom.xml file. --- extensions/guacamole-auth-http/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/guacamole-auth-http/pom.xml b/extensions/guacamole-auth-http/pom.xml index 6893e163e..85aea3c95 100644 --- a/extensions/guacamole-auth-http/pom.xml +++ b/extensions/guacamole-auth-http/pom.xml @@ -104,7 +104,7 @@ org.apache.guacamole guacamole-common - 0.9.11-incubating + 0.9.10-incubating provided From af0b6a3a23e48ce6d4c8dc7b3667f635463a6d6b Mon Sep 17 00:00:00 2001 From: Nick Couchman Date: Mon, 30 Jan 2017 13:27:26 -0500 Subject: [PATCH 07/22] GUACAMOLE-195: Remove XML comments that were preventing src/licenses from being picked up. --- extensions/guacamole-auth-http/src/main/assembly/dist.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extensions/guacamole-auth-http/src/main/assembly/dist.xml b/extensions/guacamole-auth-http/src/main/assembly/dist.xml index ffcb1a633..b89fd534c 100644 --- a/extensions/guacamole-auth-http/src/main/assembly/dist.xml +++ b/extensions/guacamole-auth-http/src/main/assembly/dist.xml @@ -34,10 +34,10 @@ - + From e890819cbda864e3108a04c016750de6a93a2816 Mon Sep 17 00:00:00 2001 From: Nick Couchman Date: Mon, 30 Jan 2017 13:28:51 -0500 Subject: [PATCH 08/22] GUACAMOLE-195: Remove unnecessary LICENSE file. --- extensions/guacamole-auth-http/LICENSE | 201 ------------------------- 1 file changed, 201 deletions(-) delete mode 100644 extensions/guacamole-auth-http/LICENSE diff --git a/extensions/guacamole-auth-http/LICENSE b/extensions/guacamole-auth-http/LICENSE deleted file mode 100644 index 8dada3eda..000000000 --- a/extensions/guacamole-auth-http/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright {yyyy} {name of copyright owner} - - Licensed 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. From 89145b9ee9b12af4ec92cdabf0e92c81d3585414 Mon Sep 17 00:00:00 2001 From: Nick Couchman Date: Mon, 30 Jan 2017 13:29:37 -0500 Subject: [PATCH 09/22] GUACAMOLE-195: Fix ordering of extensions in pom.xml. --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 27dbc3c26..555535ff7 100644 --- a/pom.xml +++ b/pom.xml @@ -50,10 +50,10 @@ extensions/guacamole-auth-duo + extensions/guacamole-auth-http extensions/guacamole-auth-jdbc extensions/guacamole-auth-ldap extensions/guacamole-auth-noauth - extensions/guacamole-auth-http doc/guacamole-example From 1cd2c53bee9a6f58ce958a87981271eef797a3fe Mon Sep 17 00:00:00 2001 From: Nick Couchman Date: Mon, 30 Jan 2017 13:31:18 -0500 Subject: [PATCH 10/22] GUACAMOLE-195: Fix .gitignore file in the guacamole-auth-http directory. --- extensions/guacamole-auth-http/.gitignore | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/extensions/guacamole-auth-http/.gitignore b/extensions/guacamole-auth-http/.gitignore index 1cdc9f7fd..42f4a1a64 100644 --- a/extensions/guacamole-auth-http/.gitignore +++ b/extensions/guacamole-auth-http/.gitignore @@ -1,9 +1,2 @@ target/ -pom.xml.tag -pom.xml.releaseBackup -pom.xml.versionsBackup -pom.xml.next -release.properties -dependency-reduced-pom.xml -buildNumber.properties -.mvn/timing.properties +*~ From 6ab40f98fa569ae2f47a13158dff56ae60835044 Mon Sep 17 00:00:00 2001 From: Nick Couchman Date: Mon, 30 Jan 2017 13:34:04 -0500 Subject: [PATCH 11/22] GUACAMOLE-195: Fix license headers in several Java source files. --- .../http/AuthenticationProviderService.java | 31 +++++++++---------- .../auth/http/HTTPAuthenticationProvider.java | 31 +++++++++---------- .../HTTPAuthenticationProviderModule.java | 31 +++++++++---------- .../auth/http/user/AuthenticatedUser.java | 31 +++++++++---------- 4 files changed, 56 insertions(+), 68 deletions(-) diff --git a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/AuthenticationProviderService.java b/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/AuthenticationProviderService.java index 1ef02fe17..2235765ce 100644 --- a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/AuthenticationProviderService.java +++ b/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/AuthenticationProviderService.java @@ -1,23 +1,20 @@ /* - * Copyright (C) 2015 Glyptodon LLC + * 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 * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: + * http://www.apache.org/licenses/LICENSE-2.0 * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. + * 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.guacamole.auth.http; diff --git a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPAuthenticationProvider.java b/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPAuthenticationProvider.java index 6bb6f5648..fe7edeb80 100644 --- a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPAuthenticationProvider.java +++ b/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPAuthenticationProvider.java @@ -1,23 +1,20 @@ /* - * Copyright (C) 2015 Glyptodon LLC + * 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 * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: + * http://www.apache.org/licenses/LICENSE-2.0 * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. + * 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.guacamole.auth.http; diff --git a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPAuthenticationProviderModule.java b/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPAuthenticationProviderModule.java index 4643c9ed1..515598c59 100644 --- a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPAuthenticationProviderModule.java +++ b/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPAuthenticationProviderModule.java @@ -1,23 +1,20 @@ /* - * Copyright (C) 2015 Glyptodon LLC + * 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 * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: + * http://www.apache.org/licenses/LICENSE-2.0 * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. + * 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.guacamole.auth.http; diff --git a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/user/AuthenticatedUser.java b/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/user/AuthenticatedUser.java index 1afe2f3c0..390d184c1 100644 --- a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/user/AuthenticatedUser.java +++ b/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/user/AuthenticatedUser.java @@ -1,23 +1,20 @@ /* - * Copyright (C) 2015 Glyptodon LLC + * 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 * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: + * http://www.apache.org/licenses/LICENSE-2.0 * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. + * 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.guacamole.auth.http.user; From 9b4302c9a37b6cca8c576334e7269632a27ca5ab Mon Sep 17 00:00:00 2001 From: Nick Couchman Date: Mon, 30 Jan 2017 13:35:16 -0500 Subject: [PATCH 12/22] GUACAMOLE-195: Remove empty README.md file. --- extensions/guacamole-auth-http/README.md | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 extensions/guacamole-auth-http/README.md diff --git a/extensions/guacamole-auth-http/README.md b/extensions/guacamole-auth-http/README.md deleted file mode 100644 index 032bbc9de..000000000 --- a/extensions/guacamole-auth-http/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# guacamole-auth-http -Basic HTTP Authentication Module for Guacamole From 88903880f96df07bca20d3db01ffe9ff6e6c50b1 Mon Sep 17 00:00:00 2001 From: Nick Couchman Date: Mon, 30 Jan 2017 13:39:25 -0500 Subject: [PATCH 13/22] GUACAMOLE-195: Add RAT plugin to extension; fix build issue from leftover logger() call. --- extensions/guacamole-auth-http/pom.xml | 26 +++++++++++++++++++ .../http/AuthenticationProviderService.java | 1 - 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/extensions/guacamole-auth-http/pom.xml b/extensions/guacamole-auth-http/pom.xml index 85aea3c95..146a39c1c 100644 --- a/extensions/guacamole-auth-http/pom.xml +++ b/extensions/guacamole-auth-http/pom.xml @@ -95,6 +95,32 @@ + + + org.apache.rat + apache-rat-plugin + 0.12 + + + + **/*.json + src/licenses/**/* + + + + + + + validate + validate + + check + + + + + + diff --git a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/AuthenticationProviderService.java b/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/AuthenticationProviderService.java index 2235765ce..46bc92900 100644 --- a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/AuthenticationProviderService.java +++ b/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/AuthenticationProviderService.java @@ -75,7 +75,6 @@ public class AuthenticationProviderService { username = request.getHeader(confService.getHttpAuthHeader()); if (username != null) { - logger.debug("Authenticating with user {}", username); AuthenticatedUser authenticatedUser = authenticatedUserProvider.get(); authenticatedUser.init(username, credentials); return authenticatedUser; From 8054f4277771dcffc1c5fe5fbe407cb5476d9dd2 Mon Sep 17 00:00:00 2001 From: Nick Couchman Date: Mon, 30 Jan 2017 13:42:06 -0500 Subject: [PATCH 14/22] GUACAMOLE-195: Remove word basic from comments - module is just HTTP header-based authentication. --- .../org/apache/guacamole/auth/http/ConfigurationService.java | 4 ++-- .../apache/guacamole/auth/http/HTTPGuacamoleProperties.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/ConfigurationService.java b/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/ConfigurationService.java index abd78aac1..c1ee8d87d 100644 --- a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/ConfigurationService.java +++ b/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/ConfigurationService.java @@ -38,11 +38,11 @@ public class ConfigurationService { /** * Returns the header of the HTTP server as configured with - * guacamole.properties used for HTTP basic authentication. + * guacamole.properties used for HTTP authentication. * By default, this will be "REMOTE_USER". * * @return - * The header used for HTTP basic authentication, as configured with + * The header used for HTTP authentication, as configured with * guacamole.properties. * * @throws GuacamoleException diff --git a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPGuacamoleProperties.java b/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPGuacamoleProperties.java index 3dada2397..e038343cc 100644 --- a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPGuacamoleProperties.java +++ b/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPGuacamoleProperties.java @@ -38,7 +38,7 @@ public class HTTPGuacamoleProperties { private HTTPGuacamoleProperties() {} /** - * The header used for HTTP basic authentication. + * The header used for HTTP authentication. */ public static final StringGuacamoleProperty HTTP_AUTH_HEADER = new StringGuacamoleProperty() { From 63cb838df17c9c51c5462698365fa87948c20e4e Mon Sep 17 00:00:00 2001 From: Nick Couchman Date: Tue, 31 Jan 2017 22:27:58 -0500 Subject: [PATCH 15/22] GUACAMOLE-195: Add the necessary license files to the new extension. --- .../src/licenses/DISCLAIMER | 7 + .../guacamole-auth-http/src/licenses/LICENSE | 253 ++++++++++++++++++ .../guacamole-auth-http/src/licenses/NOTICE | 5 + .../src/licenses/bundled/README | 4 + .../licenses/bundled/aopalliance-1.0/LICENSE | 4 + .../src/licenses/bundled/guice-3.0/COPYING | 202 ++++++++++++++ .../bundled/javax.inject-1/LICENSE-2.0.txt | 202 ++++++++++++++ 7 files changed, 677 insertions(+) create mode 100644 extensions/guacamole-auth-http/src/licenses/DISCLAIMER create mode 100644 extensions/guacamole-auth-http/src/licenses/LICENSE create mode 100644 extensions/guacamole-auth-http/src/licenses/NOTICE create mode 100644 extensions/guacamole-auth-http/src/licenses/bundled/README create mode 100644 extensions/guacamole-auth-http/src/licenses/bundled/aopalliance-1.0/LICENSE create mode 100644 extensions/guacamole-auth-http/src/licenses/bundled/guice-3.0/COPYING create mode 100644 extensions/guacamole-auth-http/src/licenses/bundled/javax.inject-1/LICENSE-2.0.txt diff --git a/extensions/guacamole-auth-http/src/licenses/DISCLAIMER b/extensions/guacamole-auth-http/src/licenses/DISCLAIMER new file mode 100644 index 000000000..1a9c3be8d --- /dev/null +++ b/extensions/guacamole-auth-http/src/licenses/DISCLAIMER @@ -0,0 +1,7 @@ +Apache Guacamole is an effort undergoing incubation at The Apache Software +Foundation (ASF). Incubation is required of all newly accepted projects until a +further review indicates that the infrastructure, communications, and decision +making process have stabilized in a manner consistent with other successful ASF +projects. While incubation status is not necessarily a reflection of the +completeness or stability of the code, it does indicate that the project has +yet to be fully endorsed by the ASF. diff --git a/extensions/guacamole-auth-http/src/licenses/LICENSE b/extensions/guacamole-auth-http/src/licenses/LICENSE new file mode 100644 index 000000000..9368e8f28 --- /dev/null +++ b/extensions/guacamole-auth-http/src/licenses/LICENSE @@ -0,0 +1,253 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed 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. + + +============================================================================== + +APACHE GUACAMOLE SUBCOMPONENTS + +Apache Guacamole includes a number of subcomponents with separate copyright +notices and license terms. Your use of these subcomponents is subject to the +terms and conditions of the following licenses. + + +AOP Alliance (http://aopalliance.sourceforge.net/) +-------------------------------------------------- + + Version: 1.0 + From: 'AOP Alliance' (http://aopalliance.sourceforge.net/members.html) + License(s): + Public Domain (bundled/aopalliance-1.0/LICENSE) + + +Google Guice (https://github.com/google/guice) +---------------------------------------------- + + Version: 3.0 + From: 'Google Inc.' (http://www.google.com/) + License(s): + Apache v2.0 (bundled/guice-3.0/COPYING) + + +JLDAP (http://www.openldap.org/jldap/) +-------------------------------------- + + Version: 4.3 + From: 'The OpenLDAP Foundation' (http://www.openldap.org/) + License(s): + OpenLDAP Public License v2.8 (bundled/jldap-4.3/LICENSE) + OpenLDAP Public License v2.0.1 (bundled/jldap-4.3/LICENSE-2.0.1) + +NOTE: JLDAP is *NOT* dual-licensed. Whether a particular source file is under +version 2.8 or 2.0.1 of the OpenLDAP Public License depends on the license +header of the file in question. + + +JSR-330 / Dependency Injection for Java (http://code.google.com/p/atinject/) +---------------------------------------------------------------------------- + + Version: 1 + From: 'JSR-330 Expert Group' (https://jcp.org/en/jsr/detail?id=330) + License(s): + Apache v2.0 (bundled/javax.inject-1/LICENSE-2.0.txt) + diff --git a/extensions/guacamole-auth-http/src/licenses/NOTICE b/extensions/guacamole-auth-http/src/licenses/NOTICE new file mode 100644 index 000000000..2ef7e548b --- /dev/null +++ b/extensions/guacamole-auth-http/src/licenses/NOTICE @@ -0,0 +1,5 @@ +Apache Guacamole +Copyright 2016 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). diff --git a/extensions/guacamole-auth-http/src/licenses/bundled/README b/extensions/guacamole-auth-http/src/licenses/bundled/README new file mode 100644 index 000000000..47ba19db0 --- /dev/null +++ b/extensions/guacamole-auth-http/src/licenses/bundled/README @@ -0,0 +1,4 @@ +Apache Guacamole includes a number of subcomponents with separate copyright +notices and license terms. Your use of these subcomponents is subject to the +terms and conditions of their respective licenses, included within this +directory for reference. diff --git a/extensions/guacamole-auth-http/src/licenses/bundled/aopalliance-1.0/LICENSE b/extensions/guacamole-auth-http/src/licenses/bundled/aopalliance-1.0/LICENSE new file mode 100644 index 000000000..8e0e3786b --- /dev/null +++ b/extensions/guacamole-auth-http/src/licenses/bundled/aopalliance-1.0/LICENSE @@ -0,0 +1,4 @@ +From http://aopalliance.sourceforge.net/: + + LICENCE: all the source code provided by AOP Alliance is Public Domain. + diff --git a/extensions/guacamole-auth-http/src/licenses/bundled/guice-3.0/COPYING b/extensions/guacamole-auth-http/src/licenses/bundled/guice-3.0/COPYING new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/extensions/guacamole-auth-http/src/licenses/bundled/guice-3.0/COPYING @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed 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. diff --git a/extensions/guacamole-auth-http/src/licenses/bundled/javax.inject-1/LICENSE-2.0.txt b/extensions/guacamole-auth-http/src/licenses/bundled/javax.inject-1/LICENSE-2.0.txt new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/extensions/guacamole-auth-http/src/licenses/bundled/javax.inject-1/LICENSE-2.0.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed 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. From b8fb8f771b69b31e5013ff244f65cdb049b96ec3 Mon Sep 17 00:00:00 2001 From: Nick Couchman Date: Tue, 31 Jan 2017 22:37:39 -0500 Subject: [PATCH 16/22] GUACAMOLE-195: Fix comments to correctly specify that this is HTTP header-based authentication. --- .../guacamole/auth/http/AuthenticationProviderService.java | 4 ++-- .../apache/guacamole/auth/http/ConfigurationService.java | 3 ++- .../guacamole/auth/http/HTTPAuthenticationProvider.java | 6 +++--- .../apache/guacamole/auth/http/user/AuthenticatedUser.java | 2 +- .../src/main/resources/guac-manifest.json | 2 +- 5 files changed, 9 insertions(+), 8 deletions(-) diff --git a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/AuthenticationProviderService.java b/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/AuthenticationProviderService.java index 46bc92900..6aa98dcbf 100644 --- a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/AuthenticationProviderService.java +++ b/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/AuthenticationProviderService.java @@ -38,7 +38,7 @@ import java.security.Principal; public class AuthenticationProviderService { /** - * Service for retrieving LDAP server configuration information. + * Service for retrieving header configuration information. */ @Inject private ConfigurationService confService; @@ -67,7 +67,7 @@ public class AuthenticationProviderService { public AuthenticatedUser authenticateUser(Credentials credentials) throws GuacamoleException { - // Pull HTTP ticket from request if present + // Pull HTTP header from request if present HttpServletRequest request = credentials.getRequest(); if (request != null) { String username = request.getRemoteUser(); diff --git a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/ConfigurationService.java b/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/ConfigurationService.java index c1ee8d87d..59416a98d 100644 --- a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/ConfigurationService.java +++ b/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/ConfigurationService.java @@ -24,7 +24,8 @@ import org.apache.guacamole.GuacamoleException; import org.apache.guacamole.environment.Environment; /** - * Service for retrieving configuration information regarding the LDAP server. + * Service for retrieving configuration information for HTTP header-based + * authentication. * * @author Nick Couchman */ diff --git a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPAuthenticationProvider.java b/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPAuthenticationProvider.java index fe7edeb80..505f1c5af 100644 --- a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPAuthenticationProvider.java +++ b/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPAuthenticationProvider.java @@ -29,7 +29,7 @@ import org.apache.guacamole.net.auth.UserContext; /** * Guacamole authentication backend which authenticates users using an - * arbitrary external system implementing HTTP. No storage for connections is + * arbitrary external HTTP header. No storage for connections is * provided - only authentication. Storage must be provided by some other * extension. * @@ -45,7 +45,7 @@ public class HTTPAuthenticationProvider implements AuthenticationProvider { /** * Creates a new HTTPAuthenticationProvider that authenticates users - * against an HTTP service + * using HTTP headers. * * @throws GuacamoleException * If a required property is missing, or an error occurs while parsing @@ -69,7 +69,7 @@ public class HTTPAuthenticationProvider implements AuthenticationProvider { public AuthenticatedUser authenticateUser(Credentials credentials) throws GuacamoleException { - // Attempt to authenticate user with given credentials + // Pass credentials to authentication service. AuthenticationProviderService authProviderService = injector.getInstance(AuthenticationProviderService.class); return authProviderService.authenticateUser(credentials); diff --git a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/user/AuthenticatedUser.java b/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/user/AuthenticatedUser.java index 390d184c1..52a226e82 100644 --- a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/user/AuthenticatedUser.java +++ b/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/user/AuthenticatedUser.java @@ -25,7 +25,7 @@ import org.apache.guacamole.net.auth.AuthenticationProvider; import org.apache.guacamole.net.auth.Credentials; /** - * An HTTP-specific implementation of AuthenticatedUser, associating a + * An HTTP header implementation of AuthenticatedUser, associating a * username and particular set of credentials with the HTTP authentication * provider. * diff --git a/extensions/guacamole-auth-http/src/main/resources/guac-manifest.json b/extensions/guacamole-auth-http/src/main/resources/guac-manifest.json index 898234156..0432dc325 100644 --- a/extensions/guacamole-auth-http/src/main/resources/guac-manifest.json +++ b/extensions/guacamole-auth-http/src/main/resources/guac-manifest.json @@ -2,7 +2,7 @@ "guacamoleVersion" : "0.9.11-incubating", - "name" : "HTTP Authentication Extension", + "name" : "HTTP Header Authentication Extension", "namespace" : "guac-http", "authProviders" : [ From 3d6239d3aaa2040006a53d91f8e2d614a260d79a Mon Sep 17 00:00:00 2001 From: Nick Couchman Date: Tue, 31 Jan 2017 23:08:14 -0500 Subject: [PATCH 17/22] GUACAMOLE-195: Remove remaining license reference to jldap. --- .../guacamole-auth-http/src/licenses/LICENSE | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/extensions/guacamole-auth-http/src/licenses/LICENSE b/extensions/guacamole-auth-http/src/licenses/LICENSE index 9368e8f28..c6cbf77e8 100644 --- a/extensions/guacamole-auth-http/src/licenses/LICENSE +++ b/extensions/guacamole-auth-http/src/licenses/LICENSE @@ -229,20 +229,6 @@ Google Guice (https://github.com/google/guice) Apache v2.0 (bundled/guice-3.0/COPYING) -JLDAP (http://www.openldap.org/jldap/) --------------------------------------- - - Version: 4.3 - From: 'The OpenLDAP Foundation' (http://www.openldap.org/) - License(s): - OpenLDAP Public License v2.8 (bundled/jldap-4.3/LICENSE) - OpenLDAP Public License v2.0.1 (bundled/jldap-4.3/LICENSE-2.0.1) - -NOTE: JLDAP is *NOT* dual-licensed. Whether a particular source file is under -version 2.8 or 2.0.1 of the OpenLDAP Public License depends on the license -header of the file in question. - - JSR-330 / Dependency Injection for Java (http://code.google.com/p/atinject/) ---------------------------------------------------------------------------- From 96fb8a9c6b7b58b48d9c828b91be10f79fcd7ac8 Mon Sep 17 00:00:00 2001 From: Nick Couchman Date: Fri, 3 Feb 2017 08:00:47 -0500 Subject: [PATCH 18/22] GUACAMOLE-195: Rename extension to guacamole-auth-header to more accurately reflect nature of the authentication. --- .../.gitignore | 0 .../pom.xml | 4 ++-- .../src/licenses/DISCLAIMER | 0 .../src/licenses/LICENSE | 0 .../src/licenses/NOTICE | 0 .../src/licenses/bundled/README | 0 .../src/licenses/bundled/aopalliance-1.0/LICENSE | 0 .../src/licenses/bundled/guice-3.0/COPYING | 0 .../bundled/javax.inject-1/LICENSE-2.0.txt | 0 .../src/main/assembly/dist.xml | 0 .../header}/AuthenticationProviderService.java | 14 ++++++++------ .../auth/header}/ConfigurationService.java | 4 ++-- .../HTTPHeaderAuthenticationProvider.java} | 12 ++++++------ .../HTTPHeaderAuthenticationProviderModule.java} | 16 ++++++++-------- .../header/HTTPHeaderGuacamoleProperties.java} | 14 +++++++------- .../auth/header}/user/AuthenticatedUser.java | 2 +- .../src/main/resources/guac-manifest.json | 4 ++-- pom.xml | 2 +- 18 files changed, 37 insertions(+), 35 deletions(-) rename extensions/{guacamole-auth-http => guacamole-auth-header}/.gitignore (100%) rename extensions/{guacamole-auth-http => guacamole-auth-header}/pom.xml (98%) rename extensions/{guacamole-auth-http => guacamole-auth-header}/src/licenses/DISCLAIMER (100%) rename extensions/{guacamole-auth-http => guacamole-auth-header}/src/licenses/LICENSE (100%) rename extensions/{guacamole-auth-http => guacamole-auth-header}/src/licenses/NOTICE (100%) rename extensions/{guacamole-auth-http => guacamole-auth-header}/src/licenses/bundled/README (100%) rename extensions/{guacamole-auth-http => guacamole-auth-header}/src/licenses/bundled/aopalliance-1.0/LICENSE (100%) rename extensions/{guacamole-auth-http => guacamole-auth-header}/src/licenses/bundled/guice-3.0/COPYING (100%) rename extensions/{guacamole-auth-http => guacamole-auth-header}/src/licenses/bundled/javax.inject-1/LICENSE-2.0.txt (100%) rename extensions/{guacamole-auth-http => guacamole-auth-header}/src/main/assembly/dist.xml (100%) rename extensions/{guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http => guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header}/AuthenticationProviderService.java (86%) rename extensions/{guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http => guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header}/ConfigurationService.java (94%) rename extensions/{guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPAuthenticationProvider.java => guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/HTTPHeaderAuthenticationProvider.java} (89%) rename extensions/{guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPAuthenticationProviderModule.java => guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/HTTPHeaderAuthenticationProviderModule.java} (79%) rename extensions/{guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPGuacamoleProperties.java => guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/HTTPHeaderGuacamoleProperties.java} (76%) rename extensions/{guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http => guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header}/user/AuthenticatedUser.java (97%) rename extensions/{guacamole-auth-http => guacamole-auth-header}/src/main/resources/guac-manifest.json (56%) diff --git a/extensions/guacamole-auth-http/.gitignore b/extensions/guacamole-auth-header/.gitignore similarity index 100% rename from extensions/guacamole-auth-http/.gitignore rename to extensions/guacamole-auth-header/.gitignore diff --git a/extensions/guacamole-auth-http/pom.xml b/extensions/guacamole-auth-header/pom.xml similarity index 98% rename from extensions/guacamole-auth-http/pom.xml rename to extensions/guacamole-auth-header/pom.xml index 146a39c1c..a3f777c6c 100644 --- a/extensions/guacamole-auth-http/pom.xml +++ b/extensions/guacamole-auth-header/pom.xml @@ -24,10 +24,10 @@ 4.0.0 org.apache.guacamole - guacamole-auth-http + guacamole-auth-header jar 0.9.11-incubating - guacamole-auth-http + guacamole-auth-header http://guacamole.incubator.apache.org/ diff --git a/extensions/guacamole-auth-http/src/licenses/DISCLAIMER b/extensions/guacamole-auth-header/src/licenses/DISCLAIMER similarity index 100% rename from extensions/guacamole-auth-http/src/licenses/DISCLAIMER rename to extensions/guacamole-auth-header/src/licenses/DISCLAIMER diff --git a/extensions/guacamole-auth-http/src/licenses/LICENSE b/extensions/guacamole-auth-header/src/licenses/LICENSE similarity index 100% rename from extensions/guacamole-auth-http/src/licenses/LICENSE rename to extensions/guacamole-auth-header/src/licenses/LICENSE diff --git a/extensions/guacamole-auth-http/src/licenses/NOTICE b/extensions/guacamole-auth-header/src/licenses/NOTICE similarity index 100% rename from extensions/guacamole-auth-http/src/licenses/NOTICE rename to extensions/guacamole-auth-header/src/licenses/NOTICE diff --git a/extensions/guacamole-auth-http/src/licenses/bundled/README b/extensions/guacamole-auth-header/src/licenses/bundled/README similarity index 100% rename from extensions/guacamole-auth-http/src/licenses/bundled/README rename to extensions/guacamole-auth-header/src/licenses/bundled/README diff --git a/extensions/guacamole-auth-http/src/licenses/bundled/aopalliance-1.0/LICENSE b/extensions/guacamole-auth-header/src/licenses/bundled/aopalliance-1.0/LICENSE similarity index 100% rename from extensions/guacamole-auth-http/src/licenses/bundled/aopalliance-1.0/LICENSE rename to extensions/guacamole-auth-header/src/licenses/bundled/aopalliance-1.0/LICENSE diff --git a/extensions/guacamole-auth-http/src/licenses/bundled/guice-3.0/COPYING b/extensions/guacamole-auth-header/src/licenses/bundled/guice-3.0/COPYING similarity index 100% rename from extensions/guacamole-auth-http/src/licenses/bundled/guice-3.0/COPYING rename to extensions/guacamole-auth-header/src/licenses/bundled/guice-3.0/COPYING diff --git a/extensions/guacamole-auth-http/src/licenses/bundled/javax.inject-1/LICENSE-2.0.txt b/extensions/guacamole-auth-header/src/licenses/bundled/javax.inject-1/LICENSE-2.0.txt similarity index 100% rename from extensions/guacamole-auth-http/src/licenses/bundled/javax.inject-1/LICENSE-2.0.txt rename to extensions/guacamole-auth-header/src/licenses/bundled/javax.inject-1/LICENSE-2.0.txt diff --git a/extensions/guacamole-auth-http/src/main/assembly/dist.xml b/extensions/guacamole-auth-header/src/main/assembly/dist.xml similarity index 100% rename from extensions/guacamole-auth-http/src/main/assembly/dist.xml rename to extensions/guacamole-auth-header/src/main/assembly/dist.xml diff --git a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/AuthenticationProviderService.java b/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/AuthenticationProviderService.java similarity index 86% rename from extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/AuthenticationProviderService.java rename to extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/AuthenticationProviderService.java index 6aa98dcbf..2625efd81 100644 --- a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/AuthenticationProviderService.java +++ b/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/AuthenticationProviderService.java @@ -17,7 +17,7 @@ * under the License. */ -package org.apache.guacamole.auth.http; +package org.apache.guacamole.auth.header; import com.google.inject.Inject; import com.google.inject.Provider; @@ -26,12 +26,12 @@ import org.apache.guacamole.GuacamoleException; import org.apache.guacamole.net.auth.Credentials; import org.apache.guacamole.net.auth.credentials.CredentialsInfo; import org.apache.guacamole.net.auth.credentials.GuacamoleInvalidCredentialsException; -import org.apache.guacamole.auth.http.user.AuthenticatedUser; +import org.apache.guacamole.auth.header.user.AuthenticatedUser; import java.security.Principal; /** - * Service providing convenience functions for the HTTP AuthenticationProvider - * implementation. + * Service providing convenience functions for the HTTP Header + * AuthenticationProvider implementation. * * @author Nick Couchman */ @@ -69,8 +69,10 @@ public class AuthenticationProviderService { // Pull HTTP header from request if present HttpServletRequest request = credentials.getRequest(); - if (request != null) { + if(request != null) { + // Try getRemoteUser(), first String username = request.getRemoteUser(); + // Check if that worked, if not, try the configured header. if(username == null) username = request.getHeader(confService.getHttpAuthHeader()); @@ -81,7 +83,7 @@ public class AuthenticationProviderService { } } - // Request HTTP authentication + // Authentication not provided via header, yet, so we request it. throw new GuacamoleInvalidCredentialsException("Invalid login.", CredentialsInfo.USERNAME_PASSWORD); } diff --git a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/ConfigurationService.java b/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/ConfigurationService.java similarity index 94% rename from extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/ConfigurationService.java rename to extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/ConfigurationService.java index 59416a98d..7d483b0ba 100644 --- a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/ConfigurationService.java +++ b/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/ConfigurationService.java @@ -17,7 +17,7 @@ * under the License. */ -package org.apache.guacamole.auth.http; +package org.apache.guacamole.auth.header; import com.google.inject.Inject; import org.apache.guacamole.GuacamoleException; @@ -51,7 +51,7 @@ public class ConfigurationService { */ public String getHttpAuthHeader() throws GuacamoleException { return environment.getProperty( - HTTPGuacamoleProperties.HTTP_AUTH_HEADER, + HTTPHeaderGuacamoleProperties.HTTP_AUTH_HEADER, "REMOTE_USER" ); } diff --git a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPAuthenticationProvider.java b/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/HTTPHeaderAuthenticationProvider.java similarity index 89% rename from extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPAuthenticationProvider.java rename to extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/HTTPHeaderAuthenticationProvider.java index 505f1c5af..9c0957115 100644 --- a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPAuthenticationProvider.java +++ b/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/HTTPHeaderAuthenticationProvider.java @@ -17,7 +17,7 @@ * under the License. */ -package org.apache.guacamole.auth.http; +package org.apache.guacamole.auth.header; import com.google.inject.Guice; import com.google.inject.Injector; @@ -35,7 +35,7 @@ import org.apache.guacamole.net.auth.UserContext; * * @author Nick Couchman */ -public class HTTPAuthenticationProvider implements AuthenticationProvider { +public class HTTPHeaderAuthenticationProvider implements AuthenticationProvider { /** * Injector which will manage the object graph of this authentication @@ -44,25 +44,25 @@ public class HTTPAuthenticationProvider implements AuthenticationProvider { private final Injector injector; /** - * Creates a new HTTPAuthenticationProvider that authenticates users + * Creates a new HTTPHeaderAuthenticationProvider that authenticates users * using HTTP headers. * * @throws GuacamoleException * If a required property is missing, or an error occurs while parsing * a property. */ - public HTTPAuthenticationProvider() throws GuacamoleException { + public HTTPHeaderAuthenticationProvider() throws GuacamoleException { // Set up Guice injector. injector = Guice.createInjector( - new HTTPAuthenticationProviderModule(this) + new HTTPHeaderAuthenticationProviderModule(this) ); } @Override public String getIdentifier() { - return "http"; + return "header"; } @Override diff --git a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPAuthenticationProviderModule.java b/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/HTTPHeaderAuthenticationProviderModule.java similarity index 79% rename from extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPAuthenticationProviderModule.java rename to extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/HTTPHeaderAuthenticationProviderModule.java index 515598c59..099e04c24 100644 --- a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPAuthenticationProviderModule.java +++ b/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/HTTPHeaderAuthenticationProviderModule.java @@ -17,7 +17,7 @@ * under the License. */ -package org.apache.guacamole.auth.http; +package org.apache.guacamole.auth.header; import com.google.inject.AbstractModule; import org.apache.guacamole.GuacamoleException; @@ -26,11 +26,11 @@ import org.apache.guacamole.environment.LocalEnvironment; import org.apache.guacamole.net.auth.AuthenticationProvider; /** - * Guice module which configures HTTP-specific injections. + * Guice module which configures HTTP header-specific injections. * * @author Michael Jumper */ -public class HTTPAuthenticationProviderModule extends AbstractModule { +public class HTTPHeaderAuthenticationProviderModule extends AbstractModule { /** * Guacamole server environment. @@ -38,14 +38,14 @@ public class HTTPAuthenticationProviderModule extends AbstractModule { private final Environment environment; /** - * A reference to the HTTPAuthenticationProvider on behalf of which this + * A reference to the HTTPHeaderAuthenticationProvider on behalf of which this * module has configured injection. */ private final AuthenticationProvider authProvider; /** - * Creates a new HTTP authentication provider module which configures - * injection for the HTTPAuthenticationProvider. + * Creates a new HTTP header authentication provider module which configures + * injection for the HTTPHeaderAuthenticationProvider. * * @param authProvider * The AuthenticationProvider for which injection is being configured. @@ -54,7 +54,7 @@ public class HTTPAuthenticationProviderModule extends AbstractModule { * If an error occurs while retrieving the Guacamole server * environment. */ - public HTTPAuthenticationProviderModule(AuthenticationProvider authProvider) + public HTTPHeaderAuthenticationProviderModule(AuthenticationProvider authProvider) throws GuacamoleException { // Get local environment @@ -72,7 +72,7 @@ public class HTTPAuthenticationProviderModule extends AbstractModule { bind(AuthenticationProvider.class).toInstance(authProvider); bind(Environment.class).toInstance(environment); - // Bind HTTP-specific classes + // Bind HTTPHeader-specific classes bind(ConfigurationService.class); } diff --git a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPGuacamoleProperties.java b/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/HTTPHeaderGuacamoleProperties.java similarity index 76% rename from extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPGuacamoleProperties.java rename to extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/HTTPHeaderGuacamoleProperties.java index e038343cc..e31bbabcf 100644 --- a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPGuacamoleProperties.java +++ b/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/HTTPHeaderGuacamoleProperties.java @@ -17,28 +17,28 @@ * under the License. */ -package org.apache.guacamole.auth.http; +package org.apache.guacamole.auth.header; import org.apache.guacamole.properties.IntegerGuacamoleProperty; import org.apache.guacamole.properties.StringGuacamoleProperty; /** - * Provides properties required for use of the HTTP authentication provider. - * These properties will be read from guacamole.properties when the HTTP - * authentication provider is used. + * Provides properties required for use of the HTTP header + * authentication provider. These properties will be read from + * guacamole.properties when the HTTP authentication provider is used. * * @author Nick Couchman */ -public class HTTPGuacamoleProperties { +public class HTTPHeaderGuacamoleProperties { /** * This class should not be instantiated. */ - private HTTPGuacamoleProperties() {} + private HTTPHeaderGuacamoleProperties() {} /** - * The header used for HTTP authentication. + * The header used for HTTP header authentication. */ public static final StringGuacamoleProperty HTTP_AUTH_HEADER = new StringGuacamoleProperty() { diff --git a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/user/AuthenticatedUser.java b/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/user/AuthenticatedUser.java similarity index 97% rename from extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/user/AuthenticatedUser.java rename to extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/user/AuthenticatedUser.java index 52a226e82..0acff9721 100644 --- a/extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/user/AuthenticatedUser.java +++ b/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/user/AuthenticatedUser.java @@ -17,7 +17,7 @@ * under the License. */ -package org.apache.guacamole.auth.http.user; +package org.apache.guacamole.auth.header.user; import com.google.inject.Inject; import org.apache.guacamole.net.auth.AbstractAuthenticatedUser; diff --git a/extensions/guacamole-auth-http/src/main/resources/guac-manifest.json b/extensions/guacamole-auth-header/src/main/resources/guac-manifest.json similarity index 56% rename from extensions/guacamole-auth-http/src/main/resources/guac-manifest.json rename to extensions/guacamole-auth-header/src/main/resources/guac-manifest.json index 0432dc325..d7294e7eb 100644 --- a/extensions/guacamole-auth-http/src/main/resources/guac-manifest.json +++ b/extensions/guacamole-auth-header/src/main/resources/guac-manifest.json @@ -3,10 +3,10 @@ "guacamoleVersion" : "0.9.11-incubating", "name" : "HTTP Header Authentication Extension", - "namespace" : "guac-http", + "namespace" : "guac-header", "authProviders" : [ - "org.apache.guacamole.auth.http.HTTPAuthenticationProvider" + "org.apache.guacamole.auth.header.HTTPHeaderAuthenticationProvider" ] } diff --git a/pom.xml b/pom.xml index 555535ff7..1f11b1719 100644 --- a/pom.xml +++ b/pom.xml @@ -50,7 +50,7 @@ extensions/guacamole-auth-duo - extensions/guacamole-auth-http + extensions/guacamole-auth-header extensions/guacamole-auth-jdbc extensions/guacamole-auth-ldap extensions/guacamole-auth-noauth From 8eb33b5ca6ac276a5e368c754546e5d400aa1759 Mon Sep 17 00:00:00 2001 From: Nick Couchman Date: Fri, 3 Feb 2017 13:13:02 -0500 Subject: [PATCH 19/22] GUACAMOLE-195: Remove call to getRemoteUser() and just use the configured HTTP header. --- .../auth/header/AuthenticationProviderService.java | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/AuthenticationProviderService.java b/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/AuthenticationProviderService.java index 2625efd81..a4acc9b66 100644 --- a/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/AuthenticationProviderService.java +++ b/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/AuthenticationProviderService.java @@ -70,13 +70,10 @@ public class AuthenticationProviderService { // Pull HTTP header from request if present HttpServletRequest request = credentials.getRequest(); if(request != null) { - // Try getRemoteUser(), first - String username = request.getRemoteUser(); - // Check if that worked, if not, try the configured header. - if(username == null) - username = request.getHeader(confService.getHttpAuthHeader()); + // Get the username from the header configured in guacamole.properties + String username = request.getHeader(confService.getHttpAuthHeader()); - if (username != null) { + if(username != null) { AuthenticatedUser authenticatedUser = authenticatedUserProvider.get(); authenticatedUser.init(username, credentials); return authenticatedUser; From 4faa806ae9634f94dcfec3b7de26ca72bdf3a3c8 Mon Sep 17 00:00:00 2001 From: Nick Couchman Date: Fri, 3 Feb 2017 15:05:00 -0500 Subject: [PATCH 20/22] GUACAMOLE-195: Fix style issues with if statements. --- .../guacamole/auth/header/AuthenticationProviderService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/AuthenticationProviderService.java b/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/AuthenticationProviderService.java index a4acc9b66..7adb100c1 100644 --- a/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/AuthenticationProviderService.java +++ b/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/AuthenticationProviderService.java @@ -69,11 +69,11 @@ public class AuthenticationProviderService { // Pull HTTP header from request if present HttpServletRequest request = credentials.getRequest(); - if(request != null) { + if (request != null) { // Get the username from the header configured in guacamole.properties String username = request.getHeader(confService.getHttpAuthHeader()); - if(username != null) { + if (username != null) { AuthenticatedUser authenticatedUser = authenticatedUserProvider.get(); authenticatedUser.init(username, credentials); return authenticatedUser; From bc5f88884b99f4f7c8b9b7ad61ade491497530fb Mon Sep 17 00:00:00 2001 From: Nick Couchman Date: Fri, 3 Feb 2017 15:06:47 -0500 Subject: [PATCH 21/22] GUACAMOLE-195: Add some spacing around comments and if statements to make things more readable. --- .../guacamole/auth/header/AuthenticationProviderService.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/AuthenticationProviderService.java b/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/AuthenticationProviderService.java index 7adb100c1..e64183c3d 100644 --- a/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/AuthenticationProviderService.java +++ b/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/AuthenticationProviderService.java @@ -70,6 +70,7 @@ public class AuthenticationProviderService { // Pull HTTP header from request if present HttpServletRequest request = credentials.getRequest(); if (request != null) { + // Get the username from the header configured in guacamole.properties String username = request.getHeader(confService.getHttpAuthHeader()); @@ -78,6 +79,7 @@ public class AuthenticationProviderService { authenticatedUser.init(username, credentials); return authenticatedUser; } + } // Authentication not provided via header, yet, so we request it. From 0105b3e4ecc0baa8c5ad0cd17f0405fb8e303ef2 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Tue, 7 Feb 2017 12:33:16 -0800 Subject: [PATCH 22/22] GUACAMOLE-196: Strip backslashes from stream download filenames. --- guacamole/src/main/webapp/app/rest/services/tunnelService.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guacamole/src/main/webapp/app/rest/services/tunnelService.js b/guacamole/src/main/webapp/app/rest/services/tunnelService.js index e736f82a7..11c2e92c0 100644 --- a/guacamole/src/main/webapp/app/rest/services/tunnelService.js +++ b/guacamole/src/main/webapp/app/rest/services/tunnelService.js @@ -157,7 +157,7 @@ angular.module('rest').factory('tunnelService', ['$injector', * The sanitized filename. */ var sanitizeFilename = function sanitizeFilename(filename) { - return filename.replace(/\/+/g, '_'); + return filename.replace(/[\\\/]+/g, '_'); }; /**