Repository: cxf
Updated Branches:
  refs/heads/3.0.x-fixes 7557d5fcf -> 2c4907143


Few more OIDC RP changes


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/2c490714
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/2c490714
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/2c490714

Branch: refs/heads/3.0.x-fixes
Commit: 2c4907143d59297a3f94fdd8cf096863535bc9c6
Parents: 7557d5f
Author: Sergey Beryozkin <sberyoz...@gmail.com>
Authored: Fri Oct 30 14:37:19 2015 +0000
Committer: Sergey Beryozkin <sberyoz...@gmail.com>
Committed: Fri Oct 30 14:38:07 2015 +0000

----------------------------------------------------------------------
 .../security/oidc/rp/OidcSecurityContext.java   | 11 ++++++++---
 .../cxf/rs/security/oidc/utils/OidcUtils.java   | 20 +++++++++++---------
 2 files changed, 19 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/2c490714/rt/rs/security/sso/oidc/src/main/java/org/apache/cxf/rs/security/oidc/rp/OidcSecurityContext.java
----------------------------------------------------------------------
diff --git 
a/rt/rs/security/sso/oidc/src/main/java/org/apache/cxf/rs/security/oidc/rp/OidcSecurityContext.java
 
b/rt/rs/security/sso/oidc/src/main/java/org/apache/cxf/rs/security/oidc/rp/OidcSecurityContext.java
index df0242f..d31c189 100644
--- 
a/rt/rs/security/sso/oidc/src/main/java/org/apache/cxf/rs/security/oidc/rp/OidcSecurityContext.java
+++ 
b/rt/rs/security/sso/oidc/src/main/java/org/apache/cxf/rs/security/oidc/rp/OidcSecurityContext.java
@@ -31,17 +31,22 @@ public class OidcSecurityContext extends 
SimpleSecurityContext implements Securi
         this(new OidcClientTokenContextImpl(token));
     }
     public OidcSecurityContext(OidcClientTokenContext oidcContext) {
-        super(getUserName(oidcContext));
+        super(getPrincipalName(oidcContext));
         this.oidcContext = oidcContext;
     }
     public OidcClientTokenContext getOidcContext() {
         return oidcContext;
     }
-    private static String getUserName(OidcClientTokenContext oidcContext) {
+    private static String getPrincipalName(OidcClientTokenContext oidcContext) 
{
         if (oidcContext.getUserInfo() != null) {
             return oidcContext.getUserInfo().getEmail();
         } else {
-            return oidcContext.getIdToken().getEmail();
+            IdToken token = oidcContext.getIdToken();
+            String name = token.getEmail();
+            if (name == null) {
+                name = token.getSubject();
+            }
+            return name;
         }
     }
     @Override

http://git-wip-us.apache.org/repos/asf/cxf/blob/2c490714/rt/rs/security/sso/oidc/src/main/java/org/apache/cxf/rs/security/oidc/utils/OidcUtils.java
----------------------------------------------------------------------
diff --git 
a/rt/rs/security/sso/oidc/src/main/java/org/apache/cxf/rs/security/oidc/utils/OidcUtils.java
 
b/rt/rs/security/sso/oidc/src/main/java/org/apache/cxf/rs/security/oidc/utils/OidcUtils.java
index 1a0c3de..ccad6d7 100644
--- 
a/rt/rs/security/sso/oidc/src/main/java/org/apache/cxf/rs/security/oidc/utils/OidcUtils.java
+++ 
b/rt/rs/security/sso/oidc/src/main/java/org/apache/cxf/rs/security/oidc/utils/OidcUtils.java
@@ -92,21 +92,23 @@ public final class OidcUtils {
         validateAccessTokenHash(at, jwt, true);
     }
     public static void validateAccessTokenHash(ClientAccessToken at, JwtToken 
jwt, boolean required) {
-        validateHash(at.getTokenKey(),
-                     (String)jwt.getClaims().getClaim("at_hash"),
-                     jwt.getHeaders().getAlgorithm(),
-                     required);
+        if (required) {
+            validateHash(at.getTokenKey(),
+                         (String)jwt.getClaims().getClaim("at_hash"),
+                         jwt.getHeaders().getAlgorithm());
+        }
     }
     public static void validateCodeHash(String code, JwtToken jwt) {
         validateCodeHash(code, jwt, true);
     }
     public static void validateCodeHash(String code, JwtToken jwt, boolean 
required) {
-        validateHash(code,
-                     (String)jwt.getClaims().getClaim("c_hash"),
-                     jwt.getHeaders().getAlgorithm(),
-                     required);
+        if (required) {
+            validateHash(code,
+                         (String)jwt.getClaims().getClaim("c_hash"),
+                         jwt.getHeaders().getAlgorithm());
+        }
     }
-    private static void validateHash(String value, String theHash, String 
joseAlgo, boolean required) {
+    private static void validateHash(String value, String theHash, String 
joseAlgo) {
         String hash = calculateHash(value, joseAlgo);
         if (!hash.equals(theHash)) {
             throw new SecurityException("Invalid hash");

Reply via email to