You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2012/08/24 10:46:39 UTC
svn commit: r1376863 - in
/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina:
TomEERealm.java realm/LowTypedRealm.java
Author: rmannibucau
Date: Fri Aug 24 08:46:38 2012
New Revision: 1376863
URL: http://svn.apache.org/viewvc?rev=1376863&view=rev
Log:
the test was reversed and overriding hasrole method in tomeerealm to let user use its own one
Modified:
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEERealm.java
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/realm/LowTypedRealm.java
Modified: openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEERealm.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEERealm.java?rev=1376863&r1=1376862&r2=1376863&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEERealm.java (original)
+++ openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEERealm.java Fri Aug 24 08:46:38 2012
@@ -16,20 +16,29 @@
*/
package org.apache.tomee.catalina;
-import java.security.Principal;
-import java.security.cert.X509Certificate;
-import javax.security.auth.callback.CallbackHandler;
+import org.apache.catalina.Realm;
+import org.apache.catalina.Wrapper;
import org.apache.catalina.connector.Request;
import org.apache.catalina.realm.CombinedRealm;
-import org.apache.catalina.realm.JAASRealm;
+import org.apache.catalina.realm.GenericPrincipal;
import org.apache.openejb.loader.SystemInstance;
import org.apache.openejb.spi.SecurityService;
import org.ietf.jgss.GSSContext;
+import java.security.Principal;
+import java.security.cert.X509Certificate;
+
public class TomEERealm extends CombinedRealm {
+ private static final String INFO = TomEERealm.class.getName() + "/1.0";
+
private final ThreadLocal<Request> requests = new ThreadLocal<Request>();
@Override
+ public String getInfo() {
+ return INFO;
+ }
+
+ @Override
public Principal authenticate(String username, String password) {
return logInTomEE(super.authenticate(username, password));
}
@@ -51,6 +60,34 @@ public class TomEERealm extends Combined
return logInTomEE(super.authenticate(gssContext, storeCreds));
}
+ @Override
+ public boolean hasRole(final Wrapper wrapper, final Principal principal, final String rawRole) {
+ String role = rawRole;
+
+ // Check for a role alias defined in a <security-role-ref> element
+ if (wrapper != null) {
+ final String realRole = wrapper.findSecurityReference(role);
+ if (realRole != null) {
+ role = realRole;
+ }
+ }
+
+ if (principal == null || role == null) {
+ return false;
+ }
+
+ if (principal instanceof GenericPrincipal) {
+ return ((GenericPrincipal) principal).hasRole(role);
+ }
+
+ for (Realm realm : realms) { // when used implicitely (always?) realms.size == 1 so no need of a strategy
+ if (realm.hasRole(wrapper, principal, rawRole)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
private Principal logInTomEE(final Principal pcp) {
if (pcp == null) {
return null;
Modified: openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/realm/LowTypedRealm.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/realm/LowTypedRealm.java?rev=1376863&r1=1376862&r2=1376863&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/realm/LowTypedRealm.java (original)
+++ openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/realm/LowTypedRealm.java Fri Aug 24 08:46:38 2012
@@ -67,7 +67,7 @@ public class LowTypedRealm implements Re
private Method findMethod(final Class<?> clazz, final Class<?>[] argTypes) {
for (Method mtd : clazz.getMethods()) {
- if (!Modifier.isAbstract(mtd.getModifiers())) {
+ if (Modifier.isAbstract(mtd.getModifiers())) {
continue;
}