Author: kwall
Date: Mon Feb 15 16:13:17 2016
New Revision: 1730559

URL: http://svn.apache.org/viewvc?rev=1730559&view=rev
Log:
QPID-7028: Address review comments from Lorenz Quack <[email protected]>

Modified:
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/oauth2/OAuth2AuthenticationProvider.java
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/oauth2/OAuth2AuthenticationProviderImpl.java
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/auth/OAuth2InteractiveAuthenticator.java
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/auth/UsernamePasswordInteractiveLogin.java
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/index.html

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/oauth2/OAuth2AuthenticationProvider.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/oauth2/OAuth2AuthenticationProvider.java?rev=1730559&r1=1730558&r2=1730559&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/oauth2/OAuth2AuthenticationProvider.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/oauth2/OAuth2AuthenticationProvider.java
 Mon Feb 15 16:13:17 2016
@@ -74,7 +74,7 @@ public interface OAuth2AuthenticationPro
     String getIdentityResolverType();
 
     @ManagedAttribute( description = "Redirect URI used when the user leaves 
the Web Management Console. If not specified, an internal page is used 
instead.")
-    URI getLogoutURI();
+    URI getPostLogoutURI();
 
     @ManagedAttribute( description = "Client ID to identify qpid to the OAuth 
endpoints", mandatory = true )
     String getClientId();

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/oauth2/OAuth2AuthenticationProviderImpl.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/oauth2/OAuth2AuthenticationProviderImpl.java?rev=1730559&r1=1730558&r2=1730559&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/oauth2/OAuth2AuthenticationProviderImpl.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/oauth2/OAuth2AuthenticationProviderImpl.java
 Mon Feb 15 16:13:17 2016
@@ -81,7 +81,7 @@ public class OAuth2AuthenticationProvide
     private boolean _tokenEndpointNeedsAuth;
 
     @ManagedAttributeField
-    private URI _logoutURI;
+    private URI _postLogoutURI;
 
     @ManagedAttributeField
     private String _clientId;
@@ -125,6 +125,7 @@ public class OAuth2AuthenticationProvide
         super.validateChange(proxyForValidation, changedAttributes);
         validateResolver((OAuth2AuthenticationProvider<?>)proxyForValidation);
         
validateSecureEndpoints((OAuth2AuthenticationProvider<?>)proxyForValidation);
+        validatePostLogoutURI(this);
     }
 
 
@@ -134,6 +135,7 @@ public class OAuth2AuthenticationProvide
         super.onValidate();
         validateResolver(this);
         validateSecureEndpoints(this);
+        validatePostLogoutURI(this);
     }
 
     private void validateSecureEndpoints(final OAuth2AuthenticationProvider<?> 
provider)
@@ -152,6 +154,17 @@ public class OAuth2AuthenticationProvide
         }
     }
 
+    private void validatePostLogoutURI(final OAuth2AuthenticationProvider<?> 
provider)
+    {
+        if (provider.getPostLogoutURI() != null)
+        {
+            String scheme = provider.getPostLogoutURI().getScheme();
+            if (!"https".equals(scheme) && !"http".equals(scheme))
+            {
+                throw new IllegalConfigurationException(String.format("Post 
logout URI does not have a http or https scheme: '%s'", 
provider.getPostLogoutURI()));
+            }
+        }
+    }
 
     private void validateResolver(final OAuth2AuthenticationProvider<?> 
provider)
     {
@@ -348,9 +361,9 @@ public class OAuth2AuthenticationProvide
     }
 
     @Override
-    public URI getLogoutURI()
+    public URI getPostLogoutURI()
     {
-        return _logoutURI;
+        return _postLogoutURI;
     }
 
     @Override

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/auth/OAuth2InteractiveAuthenticator.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/auth/OAuth2InteractiveAuthenticator.java?rev=1730559&r1=1730558&r2=1730559&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/auth/OAuth2InteractiveAuthenticator.java
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/auth/OAuth2InteractiveAuthenticator.java
 Mon Feb 15 16:13:17 2016
@@ -20,10 +20,8 @@
 package org.apache.qpid.server.management.plugin.auth;
 
 import java.io.IOException;
-import java.net.MalformedURLException;
 import java.net.URI;
 import java.net.URISyntaxException;
-import java.net.URL;
 import java.security.AccessControlException;
 import java.security.SecureRandom;
 import java.util.Collections;
@@ -62,12 +60,12 @@ public class OAuth2InteractiveAuthentica
     private static final String ORIGINAL_REQUEST_URI_SESSION_ATTRIBUTE = 
"originalRequestURI";
     private static final String REDIRECT_URI_SESSION_ATTRIBUTE = "redirectURI";
 
-    /** Authentication Endpoint error responses 
https://tools.ietf.org/html/rfc6749#section-4.2.1 */
+    /** Authentication Endpoint error responses 
https://tools.ietf.org/html/rfc6749#section-4.2.2.1 */
     private static final Map<String, Integer> ERROR_RESPONSES;
 
     static
     {
-        // Authentication Enpoint
+        // Authentication Endpoint
         Map<String, Integer> errorResponses = new HashMap<>();
         errorResponses.put("invalid_request", 400);
         errorResponses.put("unauthorized_client", 400);
@@ -223,25 +221,17 @@ public class OAuth2InteractiveAuthentica
             final OAuth2AuthenticationProvider oauth2Provider =
                     (OAuth2AuthenticationProvider) 
configuration.getAuthenticationProvider(request);
 
-            try
+            if (oauth2Provider.getPostLogoutURI() != null)
             {
-                if (oauth2Provider.getLogoutURI() != null)
+                final String postLogoutRedirect = 
oauth2Provider.getPostLogoutURI().toString();
+                return new LogoutHandler()
                 {
-                    final URL logoutUri = 
oauth2Provider.getLogoutURI().toURL();
-                    return new LogoutHandler()
+                    @Override
+                    public void handleLogout(final HttpServletResponse 
response) throws IOException
                     {
-                        @Override
-                        public void handleLogout(final HttpServletResponse 
response) throws IOException
-                        {
-                            response.sendRedirect(logoutUri.toString());
-                        }
-                    };
-                }
-            }
-            catch (MalformedURLException e)
-            {
-                throw new IllegalStateException(String.format("LogoutURI has 
unexpected format '%s'",
-                                                              
oauth2Provider.getLogoutURI()), e);
+                        response.sendRedirect(postLogoutRedirect);
+                    }
+                };
             }
         }
         return null;

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/auth/UsernamePasswordInteractiveLogin.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/auth/UsernamePasswordInteractiveLogin.java?rev=1730559&r1=1730558&r2=1730559&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/auth/UsernamePasswordInteractiveLogin.java
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/auth/UsernamePasswordInteractiveLogin.java
 Mon Feb 15 16:13:17 2016
@@ -35,11 +35,11 @@ import org.apache.qpid.server.security.a
 @PluggableService
 public class UsernamePasswordInteractiveLogin implements 
HttpRequestInteractiveAuthenticator
 {
-    // TODO: When we refactor web management and adopt a web fragments, move 
login.html and login.html
-    // to WEB-INF/ and dispatch (forward) to them, rather than client side 
redirect.
-    // This would keep the login/logout pages private and inaccessible when 
using auth providers
+    // TODO: When we refactor web management and adopt web fragments, move 
login.html (and logout.html)
+    // to WEB-INF/ and dispatch (forward) to them, rather than using a client 
side redirect.
+    // This would keep the login/logout pages private and inaccessible to the 
user when using auth providers
     // such as Ouath2.
-    private static final String DEFAULT_LOGIN_URL = "login.html";
+    private static final String DEFAULT_LOGIN_URL = "/login.html";
 
     private static final AuthenticationHandler REDIRECT_HANDLER = new 
AuthenticationHandler()
     {

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/index.html
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/index.html?rev=1730559&r1=1730558&r2=1730559&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/index.html
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/index.html
 Mon Feb 15 16:13:17 2016
@@ -161,7 +161,7 @@
             </div>
             <div class="dijitDialogPaneActionBar qpidDialogPaneActionBar">
                 <input type="button" id="errorDialog.button.cancel" 
value="Cancel" label="Cancel" dojoType="dijit.form.Button" 
onClick="dijit.byId('errorDialog').hide();"/>
-                <input type="button" id="errorDialog.button.relogin"  
value="Login" label="Login" dojoType="dijit.form.Button" 
onClick="dijit.byId('errorDialog').hide(); window.location='logout';"/>
+                <input type="button" id="errorDialog.button.relogin"  
value="Login" label="Login" dojoType="dijit.form.Button" 
onClick="dijit.byId('errorDialog').hide(); window.location='/';"/>
             </div>
         </div>
     </div>



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to