Repository: jena Updated Branches: refs/heads/master 744216169 -> 7e7bf2b3a
Added SecurityEvaluator.isPrincipalAuthenticated( Object principal) to verify authentication. Part of issue JENA-992 Project: http://git-wip-us.apache.org/repos/asf/jena/repo Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/31af91ff Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/31af91ff Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/31af91ff Branch: refs/heads/master Commit: 31af91ff1b536dae980ea8585cdce98940c818c8 Parents: 4723a8a Author: Claude Warren <[email protected]> Authored: Sun Jul 19 11:55:21 2015 +0100 Committer: Claude Warren <[email protected]> Committed: Sun Jul 19 11:55:21 2015 +0100 ---------------------------------------------------------------------- .../jena/permissions/example/ExampleEvaluator.java | 6 ++++++ .../permissions/example/ShiroExampleEvaluator.java | 12 ++++++++++++ .../apache/jena/permissions/SecurityEvaluator.java | 14 ++++++++++++++ .../permissions/impl/CachedSecurityEvaluator.java | 5 +++++ .../jena/permissions/query/SecuredQueryEngine.java | 5 +++++ .../jena/permissions/MockSecurityEvaluator.java | 6 ++++++ .../jena/permissions/ModelBasedSecurityEvaluator.java | 9 ++++++++- .../jena/permissions/StaticSecurityEvaluator.java | 5 +++++ .../permissions/model/SecuredModelDetailTest.java | 5 +++++ 9 files changed, 66 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jena/blob/31af91ff/jena-permissions/src/example/java/org/apache/jena/permissions/example/ExampleEvaluator.java ---------------------------------------------------------------------- diff --git a/jena-permissions/src/example/java/org/apache/jena/permissions/example/ExampleEvaluator.java b/jena-permissions/src/example/java/org/apache/jena/permissions/example/ExampleEvaluator.java index f67aa40..2c74c4e 100644 --- a/jena-permissions/src/example/java/org/apache/jena/permissions/example/ExampleEvaluator.java +++ b/jena-permissions/src/example/java/org/apache/jena/permissions/example/ExampleEvaluator.java @@ -126,9 +126,15 @@ public class ExampleEvaluator implements SecurityEvaluator { } principal = new BasicUserPrincipal( userName ); } + @Override public Principal getPrincipal() { return principal; } + @Override + public boolean isPrincipalAuthenticated(Object principal) { + return principal != null; + } + } http://git-wip-us.apache.org/repos/asf/jena/blob/31af91ff/jena-permissions/src/example/java/org/apache/jena/permissions/example/ShiroExampleEvaluator.java ---------------------------------------------------------------------- diff --git a/jena-permissions/src/example/java/org/apache/jena/permissions/example/ShiroExampleEvaluator.java b/jena-permissions/src/example/java/org/apache/jena/permissions/example/ShiroExampleEvaluator.java index 6feeff1..4bac59b 100644 --- a/jena-permissions/src/example/java/org/apache/jena/permissions/example/ShiroExampleEvaluator.java +++ b/jena-permissions/src/example/java/org/apache/jena/permissions/example/ShiroExampleEvaluator.java @@ -218,5 +218,17 @@ public class ShiroExampleEvaluator implements SecurityEvaluator { return SecurityUtils.getSubject(); } + /** + * Verify the Shiro subject is authenticated. + */ + @Override + public boolean isPrincipalAuthenticated(Object principal) { + if (principal instanceof Subject) + { + return ((Subject)principal).isAuthenticated(); + } + return false; + } + } http://git-wip-us.apache.org/repos/asf/jena/blob/31af91ff/jena-permissions/src/main/java/org/apache/jena/permissions/SecurityEvaluator.java ---------------------------------------------------------------------- diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/SecurityEvaluator.java b/jena-permissions/src/main/java/org/apache/jena/permissions/SecurityEvaluator.java index bb10e7c..898c41f 100644 --- a/jena-permissions/src/main/java/org/apache/jena/permissions/SecurityEvaluator.java +++ b/jena-permissions/src/main/java/org/apache/jena/permissions/SecurityEvaluator.java @@ -389,4 +389,18 @@ public interface SecurityEvaluator { * @return The current principal */ public Object getPrincipal(); + + /** + * Returns true if the principal is recognized as an authenticated principal by the + * underlying authentication mechanism. + * + * This is to handle the case where an authentication mechanism returns a non-null object to + * indicate a non-authenticated principal. (e.g. Shiro). + * + * The principal is guaranteed to have been the return value from an earlier getPrincipal() call. + * + * @param principal The principal to check. + * @return true if authenticated, false if not. + */ + public boolean isPrincipalAuthenticated( Object principal ); } http://git-wip-us.apache.org/repos/asf/jena/blob/31af91ff/jena-permissions/src/main/java/org/apache/jena/permissions/impl/CachedSecurityEvaluator.java ---------------------------------------------------------------------- diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/impl/CachedSecurityEvaluator.java b/jena-permissions/src/main/java/org/apache/jena/permissions/impl/CachedSecurityEvaluator.java index b27bde7..5b7b07d 100644 --- a/jena-permissions/src/main/java/org/apache/jena/permissions/impl/CachedSecurityEvaluator.java +++ b/jena-permissions/src/main/java/org/apache/jena/permissions/impl/CachedSecurityEvaluator.java @@ -89,4 +89,9 @@ public class CachedSecurityEvaluator implements SecurityEvaluator { return origPrincipal; } + @Override + public boolean isPrincipalAuthenticated(Object principal) { + return wrapped.isPrincipalAuthenticated(principal); + } + } http://git-wip-us.apache.org/repos/asf/jena/blob/31af91ff/jena-permissions/src/main/java/org/apache/jena/permissions/query/SecuredQueryEngine.java ---------------------------------------------------------------------- diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/query/SecuredQueryEngine.java b/jena-permissions/src/main/java/org/apache/jena/permissions/query/SecuredQueryEngine.java index 65fde31..d4ed844 100644 --- a/jena-permissions/src/main/java/org/apache/jena/permissions/query/SecuredQueryEngine.java +++ b/jena-permissions/src/main/java/org/apache/jena/permissions/query/SecuredQueryEngine.java @@ -146,6 +146,11 @@ public class SecuredQueryEngine extends QueryEngineMain { return null; } + + @Override + public boolean isPrincipalAuthenticated(Object principal) { + return true; + } }; } http://git-wip-us.apache.org/repos/asf/jena/blob/31af91ff/jena-permissions/src/test/java/org/apache/jena/permissions/MockSecurityEvaluator.java ---------------------------------------------------------------------- diff --git a/jena-permissions/src/test/java/org/apache/jena/permissions/MockSecurityEvaluator.java b/jena-permissions/src/test/java/org/apache/jena/permissions/MockSecurityEvaluator.java index dd2e8d7..8e2fc09 100644 --- a/jena-permissions/src/test/java/org/apache/jena/permissions/MockSecurityEvaluator.java +++ b/jena-permissions/src/test/java/org/apache/jena/permissions/MockSecurityEvaluator.java @@ -227,4 +227,10 @@ public class MockSecurityEvaluator implements SecurityEvaluator update, delete, forceTripleChecks); } + + @Override + public boolean isPrincipalAuthenticated(Object principal) { + return principal != null; + } + } http://git-wip-us.apache.org/repos/asf/jena/blob/31af91ff/jena-permissions/src/test/java/org/apache/jena/permissions/ModelBasedSecurityEvaluator.java ---------------------------------------------------------------------- diff --git a/jena-permissions/src/test/java/org/apache/jena/permissions/ModelBasedSecurityEvaluator.java b/jena-permissions/src/test/java/org/apache/jena/permissions/ModelBasedSecurityEvaluator.java index 61fc094..ca2f3cc 100644 --- a/jena-permissions/src/test/java/org/apache/jena/permissions/ModelBasedSecurityEvaluator.java +++ b/jena-permissions/src/test/java/org/apache/jena/permissions/ModelBasedSecurityEvaluator.java @@ -73,7 +73,14 @@ public class ModelBasedSecurityEvaluator implements SecurityEvaluator { @Override public Object getPrincipal() { - return null; + return "principal"; + } + + + + @Override + public boolean isPrincipalAuthenticated(Object principal) { + return principal != null; } } http://git-wip-us.apache.org/repos/asf/jena/blob/31af91ff/jena-permissions/src/test/java/org/apache/jena/permissions/StaticSecurityEvaluator.java ---------------------------------------------------------------------- diff --git a/jena-permissions/src/test/java/org/apache/jena/permissions/StaticSecurityEvaluator.java b/jena-permissions/src/test/java/org/apache/jena/permissions/StaticSecurityEvaluator.java index 94e47e9..37c9fed 100644 --- a/jena-permissions/src/test/java/org/apache/jena/permissions/StaticSecurityEvaluator.java +++ b/jena-permissions/src/test/java/org/apache/jena/permissions/StaticSecurityEvaluator.java @@ -80,4 +80,9 @@ public class StaticSecurityEvaluator implements SecurityEvaluator { return user; } + @Override + public boolean isPrincipalAuthenticated(Object principal) { + return principal != null; + } + } http://git-wip-us.apache.org/repos/asf/jena/blob/31af91ff/jena-permissions/src/test/java/org/apache/jena/permissions/model/SecuredModelDetailTest.java ---------------------------------------------------------------------- diff --git a/jena-permissions/src/test/java/org/apache/jena/permissions/model/SecuredModelDetailTest.java b/jena-permissions/src/test/java/org/apache/jena/permissions/model/SecuredModelDetailTest.java index 51375ac..77f705d 100644 --- a/jena-permissions/src/test/java/org/apache/jena/permissions/model/SecuredModelDetailTest.java +++ b/jena-permissions/src/test/java/org/apache/jena/permissions/model/SecuredModelDetailTest.java @@ -376,6 +376,11 @@ public class SecuredModelDetailTest { return principal; } + @Override + public boolean isPrincipalAuthenticated(Object principal) { + return principal != null; + } + } }
