From c23b176567dec5dc026b792636264395ad82377c Mon Sep 17 00:00:00 2001 From: Amanda Anganes <aanganes@mitre.org> Date: Thu, 23 Aug 2012 10:46:08 -0400 Subject: [PATCH] Database backed authorization-code-service now works. --- .../mitre/oauth2/model/AuthorizationCodeEntity.java | 12 ++++++++++-- .../impl/JpaAuthorizationCodeRepository.java | 5 ++++- .../impl/DefaultOAuth2AuthorizationCodeService.java | 3 +-- .../src/main/resources/META-INF/persistence.xml | 1 + .../src/main/webapp/WEB-INF/application-context.xml | 2 +- 5 files changed, 17 insertions(+), 6 deletions(-) diff --git a/openid-connect-common/src/main/java/org/mitre/oauth2/model/AuthorizationCodeEntity.java b/openid-connect-common/src/main/java/org/mitre/oauth2/model/AuthorizationCodeEntity.java index 70b5ac76c..2747b6f3a 100644 --- a/openid-connect-common/src/main/java/org/mitre/oauth2/model/AuthorizationCodeEntity.java +++ b/openid-connect-common/src/main/java/org/mitre/oauth2/model/AuthorizationCodeEntity.java @@ -32,13 +32,21 @@ public class AuthorizationCodeEntity { private AuthorizationRequestHolder authorizationRequestHolder; + /** + * Default constructor. + */ + public AuthorizationCodeEntity() { + + } + /** * Create a new AuthorizationCodeEntity with the given code. * * @param code the authorization code */ - public AuthorizationCodeEntity(String code) { + public AuthorizationCodeEntity(String code, AuthorizationRequestHolder authRequest) { this.code = code; + this.authorizationRequestHolder = authRequest; } /** @@ -76,7 +84,7 @@ public class AuthorizationCodeEntity { * @return the authorizationRequestHolder */ @Lob - @Basic(fetch=FetchType.LAZY) + @Basic(fetch=FetchType.EAGER) @Column(name="authorization_request_holder") public AuthorizationRequestHolder getAuthorizationRequestHolder() { return authorizationRequestHolder; diff --git a/openid-connect-server/src/main/java/org/mitre/oauth2/repository/impl/JpaAuthorizationCodeRepository.java b/openid-connect-server/src/main/java/org/mitre/oauth2/repository/impl/JpaAuthorizationCodeRepository.java index ccfe8acba..e549735fb 100644 --- a/openid-connect-server/src/main/java/org/mitre/oauth2/repository/impl/JpaAuthorizationCodeRepository.java +++ b/openid-connect-server/src/main/java/org/mitre/oauth2/repository/impl/JpaAuthorizationCodeRepository.java @@ -53,7 +53,10 @@ public class JpaAuthorizationCodeRepository implements AuthorizationCodeReposito throw new InvalidGrantException("JpaAuthorizationCodeRepository: no authorization code found for value " + code); } - return result.getAuthorizationRequestHolder(); + AuthorizationRequestHolder authRequest = result.getAuthorizationRequestHolder(); + //authRequest.getAuthenticationRequest(); + + return authRequest; } diff --git a/openid-connect-server/src/main/java/org/mitre/oauth2/service/impl/DefaultOAuth2AuthorizationCodeService.java b/openid-connect-server/src/main/java/org/mitre/oauth2/service/impl/DefaultOAuth2AuthorizationCodeService.java index f653d3a1d..fff72ce5b 100644 --- a/openid-connect-server/src/main/java/org/mitre/oauth2/service/impl/DefaultOAuth2AuthorizationCodeService.java +++ b/openid-connect-server/src/main/java/org/mitre/oauth2/service/impl/DefaultOAuth2AuthorizationCodeService.java @@ -31,8 +31,7 @@ public class DefaultOAuth2AuthorizationCodeService implements AuthorizationCodeS public String createAuthorizationCode(AuthorizationRequestHolder authentication) { String code = generator.generate(); - AuthorizationCodeEntity entity = new AuthorizationCodeEntity(code); - + AuthorizationCodeEntity entity = new AuthorizationCodeEntity(code, authentication); repository.save(entity); return code; diff --git a/openid-connect-server/src/main/resources/META-INF/persistence.xml b/openid-connect-server/src/main/resources/META-INF/persistence.xml index 57aeaf32b..8cd495e85 100644 --- a/openid-connect-server/src/main/resources/META-INF/persistence.xml +++ b/openid-connect-server/src/main/resources/META-INF/persistence.xml @@ -9,6 +9,7 @@ <class>org.mitre.oauth2.model.OAuth2AccessTokenEntity</class> <class>org.mitre.oauth2.model.OAuth2RefreshTokenEntity</class> <class>org.mitre.oauth2.model.AuthenticationHolder</class> + <class>org.mitre.oauth2.model.AuthorizationCodeEntity</class> <class>org.mitre.openid.connect.model.Address</class> <class>org.mitre.openid.connect.model.ApprovedSite</class> <class>org.mitre.openid.connect.model.Event</class> diff --git a/openid-connect-server/src/main/webapp/WEB-INF/application-context.xml b/openid-connect-server/src/main/webapp/WEB-INF/application-context.xml index b06dacfdc..7ba55d719 100644 --- a/openid-connect-server/src/main/webapp/WEB-INF/application-context.xml +++ b/openid-connect-server/src/main/webapp/WEB-INF/application-context.xml @@ -85,7 +85,7 @@ authorization-endpoint-url="/authorize" token-endpoint-url="/token"> - <oauth:authorization-code /> + <oauth:authorization-code authorization-code-services-ref="defaultOAuth2AuthorizationCodeService"/> <oauth:implicit /> </oauth:authorization-server>