You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@knox.apache.org by lm...@apache.org on 2015/04/11 02:03:37 UTC

[2/3] knox git commit: KNOX-509 add logging and better error handling

KNOX-509 add logging and better error handling

Project: http://git-wip-us.apache.org/repos/asf/knox/repo
Commit: http://git-wip-us.apache.org/repos/asf/knox/commit/95136c51
Tree: http://git-wip-us.apache.org/repos/asf/knox/tree/95136c51
Diff: http://git-wip-us.apache.org/repos/asf/knox/diff/95136c51

Branch: refs/heads/master
Commit: 95136c51b1425f66cb226c3b74fafca77e71af97
Parents: 79e707a
Author: Larry McCay <lm...@hortonworks.com>
Authored: Fri Apr 10 12:49:10 2015 -0400
Committer: Larry McCay <lm...@hortonworks.com>
Committed: Fri Apr 10 12:49:10 2015 -0400

----------------------------------------------------------------------
 .../service/knoxsso/KnoxSSOMessages.java        | 37 +++++++++++++++++
 .../gateway/service/knoxsso/WebSSOResource.java | 42 +++++++-------------
 2 files changed, 52 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/knox/blob/95136c51/gateway-service-knoxsso/src/main/java/org/apache/hadoop/gateway/service/knoxsso/KnoxSSOMessages.java
----------------------------------------------------------------------
diff --git a/gateway-service-knoxsso/src/main/java/org/apache/hadoop/gateway/service/knoxsso/KnoxSSOMessages.java b/gateway-service-knoxsso/src/main/java/org/apache/hadoop/gateway/service/knoxsso/KnoxSSOMessages.java
new file mode 100644
index 0000000..cb8b137
--- /dev/null
+++ b/gateway-service-knoxsso/src/main/java/org/apache/hadoop/gateway/service/knoxsso/KnoxSSOMessages.java
@@ -0,0 +1,37 @@
+/**
+ * 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.hadoop.gateway.service.knoxsso;
+
+import org.apache.hadoop.gateway.i18n.messages.Message;
+import org.apache.hadoop.gateway.i18n.messages.MessageLevel;
+import org.apache.hadoop.gateway.i18n.messages.Messages;
+
+@Messages(logger="org.apache.hadoop.gateway.service.knoxsso")
+public interface KnoxSSOMessages {
+  @Message( level = MessageLevel.INFO, text = "About to redirect to original URL: {0}")
+  void aboutToRedirectToOriginal(String original);
+
+  @Message( level = MessageLevel.DEBUG, text = "Adding the following JWT token as a cookie: {0}")
+  void addingJWTCookie(String token);
+
+  @Message( level = MessageLevel.INFO, text = "Unable to find cookie with name: {0}")
+  void cookieNotFound(String name);
+
+  @Message( level = MessageLevel.ERROR, text = "Unable to properly send needed HTTP status code: {0}, {1}")
+  void unableToCloseOutputStream(String message, String string);
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/knox/blob/95136c51/gateway-service-knoxsso/src/main/java/org/apache/hadoop/gateway/service/knoxsso/WebSSOResource.java
----------------------------------------------------------------------
diff --git a/gateway-service-knoxsso/src/main/java/org/apache/hadoop/gateway/service/knoxsso/WebSSOResource.java b/gateway-service-knoxsso/src/main/java/org/apache/hadoop/gateway/service/knoxsso/WebSSOResource.java
index f1e4c50..84b74e7 100644
--- a/gateway-service-knoxsso/src/main/java/org/apache/hadoop/gateway/service/knoxsso/WebSSOResource.java
+++ b/gateway-service-knoxsso/src/main/java/org/apache/hadoop/gateway/service/knoxsso/WebSSOResource.java
@@ -32,7 +32,9 @@ import javax.ws.rs.Path;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.Context;
 import javax.ws.rs.core.Response;
+import javax.ws.rs.WebApplicationException;
 
+import org.apache.hadoop.gateway.i18n.messages.MessagesFactory;
 import org.apache.hadoop.gateway.services.GatewayServices;
 import org.apache.hadoop.gateway.services.security.token.JWTokenAuthority;
 import org.apache.hadoop.gateway.services.security.token.impl.JWT;
@@ -42,6 +44,8 @@ import static javax.ws.rs.core.MediaType.APPLICATION_XML;
 
 @Path( "/knoxsso/websso" )
 public class WebSSOResource {
+  private static KnoxSSOMessages log = MessagesFactory.get( KnoxSSOMessages.class );
+
   @Context 
   private HttpServletRequest request;
 
@@ -78,54 +82,37 @@ public class WebSSOResource {
     JWT token = ts.issueToken(p, "RS256");
     
     addJWTHadoopCookie(original, token);
-    addHadoopCookie(original, p);
     
     if (removeOriginalUrlCookie) {
       removeOriginalUrlCookie(response);
     }
     
-    System.out.println( new Date() + "about to redirect to original: " + original );
+    log.aboutToRedirectToOriginal(original);
     response.setStatus(statusCode);
     response.setHeader("Location", original);
     try {
       response.getOutputStream().close();
     } catch (IOException e) {
-      e.printStackTrace();
+      log.unableToCloseOutputStream(e.getMessage(), e.getStackTrace().toString());
     }
     return null;
   }
 
   public void addJWTHadoopCookie(String original, JWT token) {
-    System.out.println( "adding JWT cookie: " + token.toString() );
+    log.addingJWTCookie(token.toString());
     Cookie c = new Cookie("hadoop-jwt",  token.toString());
     c.setPath("/");
     try {
       String domain = getDomainName(original);
       c.setDomain(domain);
-      // c.setHttpOnly(false);
-      // c.setSecure(false);
+      c.setHttpOnly(true);
+      c.setSecure(true);
+      c.setMaxAge(120);
+      response.addCookie(c);
     }
     catch(Exception e) {
-      e.printStackTrace();
+      throw new WebApplicationException("Unable to add JWT cookie to response.");
     }
-    c.setMaxAge(120);
-    response.addCookie(c);
-  }
-
-  public void addHadoopCookie(String original, Principal p) {
-    System.out.println( "adding cookie with username: " + p.getName() );
-    Cookie c = new Cookie("hadoop-auth", p.getName());
-    c.setPath("/");
-    try {
-      String domain = getDomainName(original);
-      System.out.println("Setting domain on cookie: " + domain);
-      c.setDomain(domain);
-    }
-    catch(Exception e) {
-      e.printStackTrace();
-    }
-    c.setMaxAge(120);
-    response.addCookie(c);
   }
 
   private void removeOriginalUrlCookie(HttpServletResponse response) {
@@ -145,12 +132,13 @@ public class WebSSOResource {
     Cookie[] cookies = request.getCookies();
     String value = null;
     for(Cookie cookie : cookies){
-      System.out.println( "cookie name: " + cookie.getName());
-      System.out.println( "cookie value: " + cookie.getValue());
       if(name.equals(cookie.getName())){
           value = cookie.getValue();
       }
     }
+    if (value == null) {
+      log.cookieNotFound(name);
+    }
     return value;
   }
 }