Repository: cxf Updated Branches: refs/heads/3.1.x-fixes 3b272f9a3 -> 3c19fac24
[CXF-7006]add an util method in AuthorizationUtils which can take AuthorizationFailure cause (cherry picked from commit 395acbd2f16b03314f34ee0b6a212b708b375873) Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/3c19fac2 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/3c19fac2 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/3c19fac2 Branch: refs/heads/3.1.x-fixes Commit: 3c19fac24be0d39f67f7d62d5bf133e28fe90a33 Parents: 3b272f9 Author: Freeman Fang <[email protected]> Authored: Wed Aug 10 15:28:00 2016 +0800 Committer: Freeman Fang <[email protected]> Committed: Wed Aug 10 15:29:42 2016 +0800 ---------------------------------------------------------------------- .../security/oauth2/utils/AuthorizationUtils.java | 14 +++++++++++--- .../oauth2/utils/AuthorizationUtilsTest.java | 16 ++++++++++++++++ 2 files changed, 27 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cxf/blob/3c19fac2/rt/rs/security/oauth-parent/oauth2/src/main/java/org/apache/cxf/rs/security/oauth2/utils/AuthorizationUtils.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/oauth-parent/oauth2/src/main/java/org/apache/cxf/rs/security/oauth2/utils/AuthorizationUtils.java b/rt/rs/security/oauth-parent/oauth2/src/main/java/org/apache/cxf/rs/security/oauth2/utils/AuthorizationUtils.java index 51446a2..088c16b 100644 --- a/rt/rs/security/oauth-parent/oauth2/src/main/java/org/apache/cxf/rs/security/oauth2/utils/AuthorizationUtils.java +++ b/rt/rs/security/oauth-parent/oauth2/src/main/java/org/apache/cxf/rs/security/oauth2/utils/AuthorizationUtils.java @@ -91,6 +91,10 @@ public final class AuthorizationUtils { } public static void throwAuthorizationFailure(Set<String> challenges, String realm) { + throwAuthorizationFailure(challenges, realm, null); + } + + public static void throwAuthorizationFailure(Set<String> challenges, String realm, Throwable cause) { ResponseBuilder rb = JAXRSUtils.toResponseBuilder(401); StringBuilder sb = new StringBuilder(); @@ -109,8 +113,12 @@ public final class AuthorizationUtils { } rb.header(HttpHeaders.WWW_AUTHENTICATE, sb.toString()); } - Response r = rb.build(); - throw ExceptionUtils.toNotAuthorizedException(null, r); + Response r = null; + if (cause != null) { + r = rb.entity(cause.getMessage()).build(); + } else { + r = rb.build(); + } + throw ExceptionUtils.toNotAuthorizedException(cause, r); } - } http://git-wip-us.apache.org/repos/asf/cxf/blob/3c19fac2/rt/rs/security/oauth-parent/oauth2/src/test/java/org/apache/cxf/rs/security/oauth2/utils/AuthorizationUtilsTest.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/oauth-parent/oauth2/src/test/java/org/apache/cxf/rs/security/oauth2/utils/AuthorizationUtilsTest.java b/rt/rs/security/oauth-parent/oauth2/src/test/java/org/apache/cxf/rs/security/oauth2/utils/AuthorizationUtilsTest.java index af2980d..6c3d14a 100644 --- a/rt/rs/security/oauth-parent/oauth2/src/test/java/org/apache/cxf/rs/security/oauth2/utils/AuthorizationUtilsTest.java +++ b/rt/rs/security/oauth-parent/oauth2/src/test/java/org/apache/cxf/rs/security/oauth2/utils/AuthorizationUtilsTest.java @@ -74,4 +74,20 @@ public class AuthorizationUtilsTest extends Assert { assertNull(value); } } + + @Test + public void testThrowAuthorizationFailureWithCause() { + try { + AuthorizationUtils.throwAuthorizationFailure(Collections.singleton("Basic"), + null, new RuntimeException("expired token")); + fail("WebApplicationException expected"); + } catch (WebApplicationException ex) { + Response r = ex.getResponse(); + assertEquals("expired token", r.getEntity()); + assertEquals(401, r.getStatus()); + Object value = r.getMetadata().getFirst(HttpHeaders.WWW_AUTHENTICATE); + assertNotNull(value); + assertEquals("Basic", value.toString()); + } + } }
