You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@guacamole.apache.org by necouchman <gi...@git.apache.org> on 2017/01/25 19:01:09 UTC

[GitHub] incubator-guacamole-client pull request #111: GUACAMOLE-29: Add module to su...

GitHub user necouchman opened a pull request:

    https://github.com/apache/incubator-guacamole-client/pull/111

    GUACAMOLE-29: Add module to support HTTP header-based authentication.

    New pull request to merge in the new guacamole-auth-http module.

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/necouchman/incubator-guacamole-client GUACAMOLE-29

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/incubator-guacamole-client/pull/111.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #111
    
----
commit 1cc7d06ef379748560a785f057a2a00d25c1c92e
Author: Nick Couchman <ni...@yahoo.com>
Date:   2017-01-25T19:00:04Z

    GUACAMOLE-29: Add module to support HTTP header-based authentication.

----


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] incubator-guacamole-client pull request #111: GUACAMOLE-195: Add module to s...

Posted by mike-jumper <gi...@git.apache.org>.
Github user mike-jumper commented on a diff in the pull request:

    https://github.com/apache/incubator-guacamole-client/pull/111#discussion_r99404874
  
    --- Diff: extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/AuthenticationProviderService.java ---
    @@ -0,0 +1,88 @@
    +/*
    + * 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.header;
    +
    +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.header.user.AuthenticatedUser;
    +import java.security.Principal;
    +
    +/**
    + * Service providing convenience functions for the HTTP Header
    + * AuthenticationProvider implementation.
    + *
    + * @author Nick Couchman
    + */
    +public class AuthenticationProviderService {
    +
    +    /**
    +     * Service for retrieving header configuration information.
    +     */
    +    @Inject
    +    private ConfigurationService confService;
    +
    +    /**
    +     * Provider for AuthenticatedUser objects.
    +     */
    +    @Inject
    +    private Provider<AuthenticatedUser> 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 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());
    +
    +            if(username != null) {
    --- End diff --
    
    `if` is not a function please.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] incubator-guacamole-client pull request #111: GUACAMOLE-29: Add module to su...

Posted by necouchman <gi...@git.apache.org>.
Github user necouchman commented on a diff in the pull request:

    https://github.com/apache/incubator-guacamole-client/pull/111#discussion_r98508324
  
    --- Diff: extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/AuthenticationProviderService.java ---
    @@ -0,0 +1,93 @@
    +/*
    + * Copyright (C) 2015 Glyptodon LLC
    --- End diff --
    
    Fixed.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] incubator-guacamole-client pull request #111: GUACAMOLE-195: Add module to s...

Posted by necouchman <gi...@git.apache.org>.
Github user necouchman commented on a diff in the pull request:

    https://github.com/apache/incubator-guacamole-client/pull/111#discussion_r99332855
  
    --- Diff: extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/AuthenticationProviderService.java ---
    @@ -0,0 +1,89 @@
    +/*
    + * 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 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 header configuration information.
    +     */
    +    @Inject
    +    private ConfigurationService confService;
    +
    +    /**
    +     * Provider for AuthenticatedUser objects.
    +     */
    +    @Inject
    +    private Provider<AuthenticatedUser> 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 header from request if present
    +        HttpServletRequest request = credentials.getRequest();
    +        if (request != null) {
    +            String username = request.getRemoteUser();
    +            if(username == null)
    +                username = request.getHeader(confService.getHttpAuthHeader());
    --- End diff --
    
    Added some comments on the logic.  I'll dig into the getRemoteUser() stuff and see if I can find anything, but it may just be less confusing to the person operating it to just pull the getRemoteUser() code altogether and use strictly header-based authentication.  I'll see what I can find.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] incubator-guacamole-client pull request #111: GUACAMOLE-29: Add module to su...

Posted by mike-jumper <gi...@git.apache.org>.
Github user mike-jumper commented on a diff in the pull request:

    https://github.com/apache/incubator-guacamole-client/pull/111#discussion_r98798289
  
    --- Diff: extensions/guacamole-auth-http/src/main/assembly/dist.xml ---
    @@ -0,0 +1,53 @@
    +<?xml version="1.0" encoding="UTF-8"?>
    +<!--
    +    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.
    +-->
    +<assembly
    +    xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
    +    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    +    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
    +    
    +    <id>dist</id>
    +    <baseDirectory>${project.artifactId}-${project.version}</baseDirectory>
    +
    +    <!-- Output tar.gz -->
    +    <formats>
    +        <format>tar.gz</format>
    +    </formats>
    +
    +    <!-- Include licenses and extension .jar -->
    +    <fileSets>
    +
    +        <!-- Include licenses -->
    +        <fileSet>
    +            <outputDirectory></outputDirectory>
    +            <directory>src/licenses</directory>
    --- End diff --
    
    To clarify, the licenses I refer to above are the contents of the `src/licenses/` directory (as well as `DISCLAIMER` and `NOTICE`), which is absent here. Unlike the top-level license which you needed to remove previously, these licenses are what apply to the bundled `.tar.gz` produced by the build.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] incubator-guacamole-client pull request #111: GUACAMOLE-29: Add module to su...

Posted by necouchman <gi...@git.apache.org>.
Github user necouchman commented on a diff in the pull request:

    https://github.com/apache/incubator-guacamole-client/pull/111#discussion_r98508560
  
    --- Diff: extensions/guacamole-auth-http/README.md ---
    @@ -0,0 +1,2 @@
    +# guacamole-auth-http
    +Basic HTTP Authentication Module for Guacamole
    --- End diff --
    
    Removed.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] incubator-guacamole-client pull request #111: GUACAMOLE-29: Add module to su...

Posted by mike-jumper <gi...@git.apache.org>.
Github user mike-jumper commented on a diff in the pull request:

    https://github.com/apache/incubator-guacamole-client/pull/111#discussion_r98506122
  
    --- Diff: extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/AuthenticationProviderService.java ---
    @@ -0,0 +1,93 @@
    +/*
    + * Copyright (C) 2015 Glyptodon LLC
    --- End diff --
    
    If copying the `AuthenticationProviderService` from something else, should probably copy the Apache-licensed one.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] incubator-guacamole-client pull request #111: GUACAMOLE-195: Add module to s...

Posted by mike-jumper <gi...@git.apache.org>.
Github user mike-jumper commented on a diff in the pull request:

    https://github.com/apache/incubator-guacamole-client/pull/111#discussion_r99390576
  
    --- Diff: extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/AuthenticationProviderService.java ---
    @@ -0,0 +1,89 @@
    +/*
    + * 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 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 header configuration information.
    +     */
    +    @Inject
    +    private ConfigurationService confService;
    +
    +    /**
    +     * Provider for AuthenticatedUser objects.
    +     */
    +    @Inject
    +    private Provider<AuthenticatedUser> 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 header from request if present
    +        HttpServletRequest request = credentials.getRequest();
    +        if (request != null) {
    +            String username = request.getRemoteUser();
    +            if(username == null)
    +                username = request.getHeader(confService.getHttpAuthHeader());
    --- End diff --
    
    I'd say just remote `getRemoteUser()` altogether. If it does use the `REMOTE_USER` header, as you expect, then it's superfluous and a potential security issue for any deployment which explicitly specifies `http-auth-header` expecting the default `REMOTE_USER` to be overridden.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] incubator-guacamole-client pull request #111: GUACAMOLE-29: Add module to su...

Posted by mike-jumper <gi...@git.apache.org>.
Github user mike-jumper commented on a diff in the pull request:

    https://github.com/apache/incubator-guacamole-client/pull/111#discussion_r98506283
  
    --- Diff: extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPAuthenticationProvider.java ---
    @@ -0,0 +1,110 @@
    +/*
    + * Copyright (C) 2015 Glyptodon LLC
    --- End diff --
    
    Same thing here - the license boilerplate for the guac codebase is different now.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] incubator-guacamole-client pull request #111: GUACAMOLE-29: Add module to su...

Posted by mike-jumper <gi...@git.apache.org>.
Github user mike-jumper commented on a diff in the pull request:

    https://github.com/apache/incubator-guacamole-client/pull/111#discussion_r98798013
  
    --- Diff: extensions/guacamole-auth-http/src/main/assembly/dist.xml ---
    @@ -0,0 +1,53 @@
    +<?xml version="1.0" encoding="UTF-8"?>
    +<!--
    +    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.
    +-->
    +<assembly
    +    xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
    +    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    +    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
    +    
    +    <id>dist</id>
    +    <baseDirectory>${project.artifactId}-${project.version}</baseDirectory>
    +
    +    <!-- Output tar.gz -->
    +    <formats>
    +        <format>tar.gz</format>
    +    </formats>
    +
    +    <!-- Include licenses and extension .jar -->
    +    <fileSets>
    +
    +        <!-- Include licenses -->
    +        <fileSet>
    +            <outputDirectory></outputDirectory>
    +            <directory>src/licenses</directory>
    --- End diff --
    
    In order for the licenses to be included (and they need to be), they need to be part of the source tree. Here things are simpler, since this extension isn't bundling anything which hasn't already been bundled by other extensions, so the burden of research is lessened.  The contents of the `src/licenses/` directory for guacamole-auth-ldap is probably the best reference:
    
    https://github.com/apache/incubator-guacamole-client/tree/d358449c7f1592e6b06aadc94dcf39dcc50c9671/extensions/guacamole-auth-ldap/src/licenses
    
    I think your extension has the exact same dependencies (with the exception of jldap, of course).


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] incubator-guacamole-client pull request #111: GUACAMOLE-195: Add module to s...

Posted by necouchman <gi...@git.apache.org>.
Github user necouchman commented on a diff in the pull request:

    https://github.com/apache/incubator-guacamole-client/pull/111#discussion_r99333796
  
    --- Diff: extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/AuthenticationProviderService.java ---
    @@ -0,0 +1,89 @@
    +/*
    + * 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 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 header configuration information.
    +     */
    +    @Inject
    +    private ConfigurationService confService;
    +
    +    /**
    +     * Provider for AuthenticatedUser objects.
    +     */
    +    @Inject
    +    private Provider<AuthenticatedUser> 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 header from request if present
    +        HttpServletRequest request = credentials.getRequest();
    +        if (request != null) {
    +            String username = request.getRemoteUser();
    +            if(username == null)
    +                username = request.getHeader(confService.getHttpAuthHeader());
    --- End diff --
    
    So, Oracle's JavaEE documentation has this to say on the subject of HttpServletRequest getRemoteUser():
    
    > Returns the login of the user making this request, if the user has been authenticated, or null if the user has not been authenticated. Whether the user name is sent with each subsequent request depends on the browser and type of authentication. Same as the value of the CGI variable REMOTE_USER.
    
    This indicates to me that this function probably works off the REMOTE_USER header.
    
    That said, it may still be a little confusing for the operator to set something up in guacamole.properties for a custom header, and then run into a situation where a different username gets pulled from getRemoteUser() (because it's looking at the REMOTE_USER header) and whatever the operator has configured as their header.  So, I think the two options would be:
    1) Remove getRemoteUser() altogether and just work off the configured header, or default to REMOTE_USER if none is configured.
    2) Reverse the logic such that the configured header is checked, first, and, if nothing is found or nothing configured, revert to getRemoteUser().  This may not be overly-useful though, and may not eliminate the confusion for the operator.
    
    Thoughts?


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] incubator-guacamole-client pull request #111: GUACAMOLE-195: Add module to s...

Posted by necouchman <gi...@git.apache.org>.
Github user necouchman commented on a diff in the pull request:

    https://github.com/apache/incubator-guacamole-client/pull/111#discussion_r98826020
  
    --- Diff: 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/)
    --- End diff --
    
    Removed.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] incubator-guacamole-client pull request #111: GUACAMOLE-195: Add module to s...

Posted by necouchman <gi...@git.apache.org>.
GitHub user necouchman reopened a pull request:

    https://github.com/apache/incubator-guacamole-client/pull/111

    GUACAMOLE-195: Add module to support HTTP header-based authentication.

    New pull request to merge in the new guacamole-auth-http module.

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/necouchman/incubator-guacamole-client GUACAMOLE-29

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/incubator-guacamole-client/pull/111.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #111
    
----
commit fdc654b945c9510f83562708ba305425536accd6
Author: Nick Couchman <ni...@yahoo.com>
Date:   2017-01-25T19:00:04Z

    GUACAMOLE-195: Add module to support HTTP header-based authentication.

commit 41b60ed62b3a5202fb00ebaccfa11dc345127432
Author: Nick Couchman <ni...@yahoo.com>
Date:   2017-01-30T12:39:00Z

    GUACAMOLE-195: Remove incorrect check on empty username string.

commit ee9fb5d7ed6fa823fea2979e926ff045a69dec76
Author: Nick Couchman <ni...@yahoo.com>
Date:   2017-01-30T12:40:06Z

    GUACAMOLE-195: Add new module to main pom.xml for maven build.

commit ab27739b02d6941b761af580969c449a7e3d2bdb
Author: Nick Couchman <ni...@yahoo.com>
Date:   2017-01-30T13:09:18Z

    GAUCAMOLE-195: Fix code style issues to conform to project standards.

commit 3b27e466768e46b71e5f8a05b979226788095cc7
Author: Nick Couchman <ni...@yahoo.com>
Date:   2017-01-30T13:21:43Z

    GUACAMOLE-195: Correct common version in extension pom.xml file.

commit af0b6a3a23e48ce6d4c8dc7b3667f635463a6d6b
Author: Nick Couchman <ni...@yahoo.com>
Date:   2017-01-30T18:27:26Z

    GUACAMOLE-195: Remove XML comments that were preventing src/licenses from being picked up.

commit e890819cbda864e3108a04c016750de6a93a2816
Author: Nick Couchman <ni...@yahoo.com>
Date:   2017-01-30T18:28:51Z

    GUACAMOLE-195: Remove unnecessary LICENSE file.

commit 89145b9ee9b12af4ec92cdabf0e92c81d3585414
Author: Nick Couchman <ni...@yahoo.com>
Date:   2017-01-30T18:29:37Z

    GUACAMOLE-195: Fix ordering of extensions in pom.xml.

commit 1cd2c53bee9a6f58ce958a87981271eef797a3fe
Author: Nick Couchman <ni...@yahoo.com>
Date:   2017-01-30T18:31:18Z

    GUACAMOLE-195: Fix .gitignore file in the guacamole-auth-http directory.

commit 6ab40f98fa569ae2f47a13158dff56ae60835044
Author: Nick Couchman <ni...@yahoo.com>
Date:   2017-01-30T18:34:04Z

    GUACAMOLE-195: Fix license headers in several Java source files.

commit 9b4302c9a37b6cca8c576334e7269632a27ca5ab
Author: Nick Couchman <ni...@yahoo.com>
Date:   2017-01-30T18:35:16Z

    GUACAMOLE-195: Remove empty README.md file.

commit 88903880f96df07bca20d3db01ffe9ff6e6c50b1
Author: Nick Couchman <ni...@yahoo.com>
Date:   2017-01-30T18:39:25Z

    GUACAMOLE-195: Add RAT plugin to extension; fix build issue from leftover logger() call.

commit 8054f4277771dcffc1c5fe5fbe407cb5476d9dd2
Author: Nick Couchman <ni...@yahoo.com>
Date:   2017-01-30T18:42:06Z

    GUACAMOLE-195: Remove word basic from comments - module is just HTTP header-based authentication.

commit 63cb838df17c9c51c5462698365fa87948c20e4e
Author: Nick Couchman <ni...@yahoo.com>
Date:   2017-02-01T03:27:58Z

    GUACAMOLE-195: Add the necessary license files to the new extension.

commit b8fb8f771b69b31e5013ff244f65cdb049b96ec3
Author: Nick Couchman <ni...@yahoo.com>
Date:   2017-02-01T03:37:39Z

    GUACAMOLE-195: Fix comments to correctly specify that this is HTTP header-based authentication.

----


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] incubator-guacamole-client pull request #111: GUACAMOLE-29: Add module to su...

Posted by mike-jumper <gi...@git.apache.org>.
Github user mike-jumper commented on a diff in the pull request:

    https://github.com/apache/incubator-guacamole-client/pull/111#discussion_r98506405
  
    --- Diff: extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/user/AuthenticatedUser.java ---
    @@ -0,0 +1,76 @@
    +/*
    + * Copyright (C) 2015 Glyptodon LLC
    --- End diff --
    
    You probably get the idea.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] incubator-guacamole-client pull request #111: GUACAMOLE-195: Add module to s...

Posted by necouchman <gi...@git.apache.org>.
Github user necouchman commented on a diff in the pull request:

    https://github.com/apache/incubator-guacamole-client/pull/111#discussion_r99413422
  
    --- Diff: extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/AuthenticationProviderService.java ---
    @@ -0,0 +1,88 @@
    +/*
    + * 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.header;
    +
    +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.header.user.AuthenticatedUser;
    +import java.security.Principal;
    +
    +/**
    + * Service providing convenience functions for the HTTP Header
    + * AuthenticationProvider implementation.
    + *
    + * @author Nick Couchman
    + */
    +public class AuthenticationProviderService {
    +
    +    /**
    +     * Service for retrieving header configuration information.
    +     */
    +    @Inject
    +    private ConfigurationService confService;
    +
    +    /**
    +     * Provider for AuthenticatedUser objects.
    +     */
    +    @Inject
    +    private Provider<AuthenticatedUser> 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 header from request if present
    +        HttpServletRequest request = credentials.getRequest();
    +        if(request != null) {
    +            // Get the username from the header configured in guacamole.properties
    --- End diff --
    
    I added some spacing to it, so hopefully it looks better, now!


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] incubator-guacamole-client pull request #111: GUACAMOLE-29: Add module to su...

Posted by mike-jumper <gi...@git.apache.org>.
Github user mike-jumper commented on a diff in the pull request:

    https://github.com/apache/incubator-guacamole-client/pull/111#discussion_r98508351
  
    --- Diff: 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.
    --- End diff --
    
    Is it correct to refer to this as HTTP basic authentication?
    
    The header may come from something that performs HTTP basic auth, but the extension itself isn't doing that. It's just consuming an arbitrary header, the default header `REMOTE_USER` not in fact being part of HTTP basic:
    
    https://en.wikipedia.org/wiki/Basic_access_authentication


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] incubator-guacamole-client pull request #111: GUACAMOLE-195: Add module to s...

Posted by mike-jumper <gi...@git.apache.org>.
Github user mike-jumper commented on a diff in the pull request:

    https://github.com/apache/incubator-guacamole-client/pull/111#discussion_r98825829
  
    --- Diff: 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/)
    --- End diff --
    
    Missed a JLDAP.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] incubator-guacamole-client pull request #111: GUACAMOLE-29: Add module to su...

Posted by mike-jumper <gi...@git.apache.org>.
Github user mike-jumper commented on a diff in the pull request:

    https://github.com/apache/incubator-guacamole-client/pull/111#discussion_r98506512
  
    --- Diff: pom.xml ---
    @@ -53,6 +53,7 @@
             <module>extensions/guacamole-auth-jdbc</module>
             <module>extensions/guacamole-auth-ldap</module>
             <module>extensions/guacamole-auth-noauth</module>
    +        <module>extensions/guacamole-auth-http</module>
    --- End diff --
    
    Please maintain alphabetical ordering of modules within the `pom.xml`.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] incubator-guacamole-client pull request #111: GUACAMOLE-29: Add module to su...

Posted by mike-jumper <gi...@git.apache.org>.
Github user mike-jumper commented on a diff in the pull request:

    https://github.com/apache/incubator-guacamole-client/pull/111#discussion_r98506340
  
    --- Diff: extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPAuthenticationProviderModule.java ---
    @@ -0,0 +1,83 @@
    +/*
    + * Copyright (C) 2015 Glyptodon LLC
    --- End diff --
    
    Aaaaaand here.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] incubator-guacamole-client pull request #111: GUACAMOLE-29: Add module to su...

Posted by necouchman <gi...@git.apache.org>.
Github user necouchman commented on a diff in the pull request:

    https://github.com/apache/incubator-guacamole-client/pull/111#discussion_r98508344
  
    --- Diff: extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPAuthenticationProvider.java ---
    @@ -0,0 +1,110 @@
    +/*
    + * Copyright (C) 2015 Glyptodon LLC
    --- End diff --
    
    Fixed.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] incubator-guacamole-client pull request #111: GUACAMOLE-195: Add module to s...

Posted by necouchman <gi...@git.apache.org>.
Github user necouchman commented on a diff in the pull request:

    https://github.com/apache/incubator-guacamole-client/pull/111#discussion_r99391388
  
    --- Diff: extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/AuthenticationProviderService.java ---
    @@ -0,0 +1,89 @@
    +/*
    + * 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 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 header configuration information.
    +     */
    +    @Inject
    +    private ConfigurationService confService;
    +
    +    /**
    +     * Provider for AuthenticatedUser objects.
    +     */
    +    @Inject
    +    private Provider<AuthenticatedUser> 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 header from request if present
    +        HttpServletRequest request = credentials.getRequest();
    +        if (request != null) {
    +            String username = request.getRemoteUser();
    +            if(username == null)
    +                username = request.getHeader(confService.getHttpAuthHeader());
    --- End diff --
    
    Removed and pushed changes to this branch.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] incubator-guacamole-client pull request #111: GUACAMOLE-29: Add module to su...

Posted by necouchman <gi...@git.apache.org>.
Github user necouchman commented on a diff in the pull request:

    https://github.com/apache/incubator-guacamole-client/pull/111#discussion_r98506934
  
    --- Diff: extensions/guacamole-auth-http/src/main/assembly/dist.xml ---
    @@ -0,0 +1,53 @@
    +<?xml version="1.0" encoding="UTF-8"?>
    +<!--
    +    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.
    +-->
    +<assembly
    +    xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
    +    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    +    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
    +    
    +    <id>dist</id>
    +    <baseDirectory>${project.artifactId}-${project.version}</baseDirectory>
    +
    +    <!-- Output tar.gz -->
    +    <formats>
    +        <format>tar.gz</format>
    +    </formats>
    +
    +    <!-- Include licenses and extension .jar -->
    +    <fileSets>
    +
    +        <!-- Include licenses -->
    +        <!--<fileSet>
    --- End diff --
    
    No clue...fixed.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] incubator-guacamole-client pull request #111: GUACAMOLE-195: Add module to s...

Posted by asfgit <gi...@git.apache.org>.
Github user asfgit closed the pull request at:

    https://github.com/apache/incubator-guacamole-client/pull/111


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] incubator-guacamole-client pull request #111: GUACAMOLE-29: Add module to su...

Posted by necouchman <gi...@git.apache.org>.
Github user necouchman commented on a diff in the pull request:

    https://github.com/apache/incubator-guacamole-client/pull/111#discussion_r98510072
  
    --- Diff: 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.
    --- End diff --
    
    Removed the word basic from these comments.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] incubator-guacamole-client pull request #111: GUACAMOLE-29: Add module to su...

Posted by mike-jumper <gi...@git.apache.org>.
Github user mike-jumper commented on a diff in the pull request:

    https://github.com/apache/incubator-guacamole-client/pull/111#discussion_r98506836
  
    --- Diff: extensions/guacamole-auth-http/LICENSE ---
    @@ -0,0 +1,201 @@
    +                                 Apache License
    --- End diff --
    
    While there does need to be a copy of the Apache License included in the `.tar.gz` bundle (see the packaging of the other extensions), there shouldn't be a top-level copy. The guacamole-client source must have exactly one top-level `LICENSE` file, and that's already present.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] incubator-guacamole-client pull request #111: GUACAMOLE-29: Add module to su...

Posted by mike-jumper <gi...@git.apache.org>.
Github user mike-jumper commented on a diff in the pull request:

    https://github.com/apache/incubator-guacamole-client/pull/111#discussion_r98507296
  
    --- Diff: extensions/guacamole-auth-http/.gitignore ---
    @@ -0,0 +1,9 @@
    +target/
    +pom.xml.tag
    --- End diff --
    
    So ... what are all these files being ignored? A typical `.gitignore` just contains:
    
        target/
        *~
    
    Though even that is probably not necessary due to the top-level `.gitignore` of guacamole-client.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] incubator-guacamole-client pull request #111: GUACAMOLE-29: Add module to su...

Posted by necouchman <gi...@git.apache.org>.
Github user necouchman commented on a diff in the pull request:

    https://github.com/apache/incubator-guacamole-client/pull/111#discussion_r98508373
  
    --- Diff: extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/HTTPAuthenticationProviderModule.java ---
    @@ -0,0 +1,83 @@
    +/*
    + * Copyright (C) 2015 Glyptodon LLC
    --- End diff --
    
    Fixed.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] incubator-guacamole-client pull request #111: GUACAMOLE-195: Add module to s...

Posted by necouchman <gi...@git.apache.org>.
Github user necouchman closed the pull request at:

    https://github.com/apache/incubator-guacamole-client/pull/111


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] incubator-guacamole-client pull request #111: GUACAMOLE-29: Add module to su...

Posted by mike-jumper <gi...@git.apache.org>.
Github user mike-jumper commented on a diff in the pull request:

    https://github.com/apache/incubator-guacamole-client/pull/111#discussion_r98505915
  
    --- Diff: extensions/guacamole-auth-http/src/main/assembly/dist.xml ---
    @@ -0,0 +1,53 @@
    +<?xml version="1.0" encoding="UTF-8"?>
    +<!--
    +    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.
    +-->
    +<assembly
    +    xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
    +    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    +    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
    +    
    +    <id>dist</id>
    +    <baseDirectory>${project.artifactId}-${project.version}</baseDirectory>
    +
    +    <!-- Output tar.gz -->
    +    <formats>
    +        <format>tar.gz</format>
    +    </formats>
    +
    +    <!-- Include licenses and extension .jar -->
    +    <fileSets>
    +
    +        <!-- Include licenses -->
    +        <!--<fileSet>
    --- End diff --
    
    Why the commented-out section?


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] incubator-guacamole-client pull request #111: GUACAMOLE-29: Add module to su...

Posted by necouchman <gi...@git.apache.org>.
Github user necouchman commented on a diff in the pull request:

    https://github.com/apache/incubator-guacamole-client/pull/111#discussion_r98507215
  
    --- Diff: extensions/guacamole-auth-http/LICENSE ---
    @@ -0,0 +1,201 @@
    +                                 Apache License
    --- End diff --
    
    Removed.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] incubator-guacamole-client pull request #111: GUACAMOLE-29: Add module to su...

Posted by necouchman <gi...@git.apache.org>.
Github user necouchman commented on a diff in the pull request:

    https://github.com/apache/incubator-guacamole-client/pull/111#discussion_r98507747
  
    --- Diff: extensions/guacamole-auth-http/.gitignore ---
    @@ -0,0 +1,9 @@
    +target/
    +pom.xml.tag
    --- End diff --
    
    Fixed - made the contents the same as the other extensions.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] incubator-guacamole-client pull request #111: GUACAMOLE-29: Add module to su...

Posted by mike-jumper <gi...@git.apache.org>.
Github user mike-jumper commented on a diff in the pull request:

    https://github.com/apache/incubator-guacamole-client/pull/111#discussion_r98507940
  
    --- Diff: extensions/guacamole-auth-http/README.md ---
    @@ -0,0 +1,2 @@
    +# guacamole-auth-http
    +Basic HTTP Authentication Module for Guacamole
    --- End diff --
    
    *Probably* don't need this virtually-empty `README.md`.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] incubator-guacamole-client pull request #111: GUACAMOLE-195: Add module to s...

Posted by necouchman <gi...@git.apache.org>.
Github user necouchman commented on a diff in the pull request:

    https://github.com/apache/incubator-guacamole-client/pull/111#discussion_r98823567
  
    --- Diff: extensions/guacamole-auth-http/src/main/assembly/dist.xml ---
    @@ -0,0 +1,53 @@
    +<?xml version="1.0" encoding="UTF-8"?>
    +<!--
    +    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.
    +-->
    +<assembly
    +    xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
    +    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    +    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
    +    
    +    <id>dist</id>
    +    <baseDirectory>${project.artifactId}-${project.version}</baseDirectory>
    +
    +    <!-- Output tar.gz -->
    +    <formats>
    +        <format>tar.gz</format>
    +    </formats>
    +
    +    <!-- Include licenses and extension .jar -->
    +    <fileSets>
    +
    +        <!-- Include licenses -->
    +        <fileSet>
    +            <outputDirectory></outputDirectory>
    +            <directory>src/licenses</directory>
    --- End diff --
    
    Added those licenses - copied from LDAP and removed jldap.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] incubator-guacamole-client pull request #111: GUACAMOLE-195: Add module to s...

Posted by necouchman <gi...@git.apache.org>.
Github user necouchman commented on a diff in the pull request:

    https://github.com/apache/incubator-guacamole-client/pull/111#discussion_r99413392
  
    --- Diff: extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/AuthenticationProviderService.java ---
    @@ -0,0 +1,88 @@
    +/*
    + * 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.header;
    +
    +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.header.user.AuthenticatedUser;
    +import java.security.Principal;
    +
    +/**
    + * Service providing convenience functions for the HTTP Header
    + * AuthenticationProvider implementation.
    + *
    + * @author Nick Couchman
    + */
    +public class AuthenticationProviderService {
    +
    +    /**
    +     * Service for retrieving header configuration information.
    +     */
    +    @Inject
    +    private ConfigurationService confService;
    +
    +    /**
    +     * Provider for AuthenticatedUser objects.
    +     */
    +    @Inject
    +    private Provider<AuthenticatedUser> 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 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());
    +
    +            if(username != null) {
    --- End diff --
    
    Doh.  Fixed one of them but went the wrong way on it!  Fixed it the correct way this time.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] incubator-guacamole-client pull request #111: GUACAMOLE-195: Add module to s...

Posted by mike-jumper <gi...@git.apache.org>.
Github user mike-jumper commented on a diff in the pull request:

    https://github.com/apache/incubator-guacamole-client/pull/111#discussion_r99405215
  
    --- Diff: extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/AuthenticationProviderService.java ---
    @@ -0,0 +1,88 @@
    +/*
    + * 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.header;
    +
    +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.header.user.AuthenticatedUser;
    +import java.security.Principal;
    +
    +/**
    + * Service providing convenience functions for the HTTP Header
    + * AuthenticationProvider implementation.
    + *
    + * @author Nick Couchman
    + */
    +public class AuthenticationProviderService {
    +
    +    /**
    +     * Service for retrieving header configuration information.
    +     */
    +    @Inject
    +    private ConfigurationService confService;
    +
    +    /**
    +     * Provider for AuthenticatedUser objects.
    +     */
    +    @Inject
    +    private Provider<AuthenticatedUser> 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 header from request if present
    +        HttpServletRequest request = credentials.getRequest();
    +        if(request != null) {
    +            // Get the username from the header configured in guacamole.properties
    --- End diff --
    
    Please also keep in mind, from the style guidelines (and the general style of the code in this repository):
    
    > Comment everything semantically and liberally, use blank lines to separate logical blocks. 
    
    I like that this part is commented, but it looks awfully crowded lacking separation from the enclosing `if` block. Similarly, though I like the spacing before nested `if`, it's not commented semantically, and the closing half of things is crowded.
    
    It looks decent as is, to be honest, but with minor changes it could be much more readable.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] incubator-guacamole-client pull request #111: GUACAMOLE-29: Add module to su...

Posted by necouchman <gi...@git.apache.org>.
Github user necouchman commented on a diff in the pull request:

    https://github.com/apache/incubator-guacamole-client/pull/111#discussion_r98507427
  
    --- Diff: pom.xml ---
    @@ -53,6 +53,7 @@
             <module>extensions/guacamole-auth-jdbc</module>
             <module>extensions/guacamole-auth-ldap</module>
             <module>extensions/guacamole-auth-noauth</module>
    +        <module>extensions/guacamole-auth-http</module>
    --- End diff --
    
    Reordered.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] incubator-guacamole-client pull request #111: GUACAMOLE-195: Add module to s...

Posted by mike-jumper <gi...@git.apache.org>.
Github user mike-jumper commented on a diff in the pull request:

    https://github.com/apache/incubator-guacamole-client/pull/111#discussion_r99279706
  
    --- Diff: extensions/guacamole-auth-http/src/main/java/org/apache/guacamole/auth/http/AuthenticationProviderService.java ---
    @@ -0,0 +1,89 @@
    +/*
    + * 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 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 header configuration information.
    +     */
    +    @Inject
    +    private ConfigurationService confService;
    +
    +    /**
    +     * Provider for AuthenticatedUser objects.
    +     */
    +    @Inject
    +    private Provider<AuthenticatedUser> 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 header from request if present
    +        HttpServletRequest request = credentials.getRequest();
    +        if (request != null) {
    +            String username = request.getRemoteUser();
    +            if(username == null)
    +                username = request.getHeader(confService.getHttpAuthHeader());
    --- End diff --
    
    The logic here could stand to be better commented. Beware the "if is not a function" thing again, too.
    
    Beyond that, I'm a little worried about the behavior of the `http-auth-header` property with respect to `getRemoteUser()`. Presumably, the expectation is that if the admin specifies `http-auth-header: X-Foo-Bar` in their `guacamole.properties`, then the auth backend will look at that `X-Foo-Bar` header to determine the identity of the user, but that won't be the case if `getRemoteUser()` returns non-null.
    
    For that matter, and of possible relevance to the renaming, is `getRemoteUser()` driven by HTTP headers?
    
    I suppose that must be why you originally had this change listed as support for HTTP Basic, though I'm having a hard time finding what exactly drives `getRemoteUser()`. Do you have any information on this?


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---