updated 1.2 import to reflect new objects

pull/819/merge
Justin Richer 2015-05-22 17:30:12 -04:00
parent 441b19f0c5
commit 3d1aee77b4
1 changed files with 49 additions and 80 deletions

View File

@ -35,6 +35,7 @@ import org.mitre.oauth2.model.ClientDetailsEntity.AuthMethod;
import org.mitre.oauth2.model.ClientDetailsEntity.SubjectType;
import org.mitre.oauth2.model.OAuth2AccessTokenEntity;
import org.mitre.oauth2.model.OAuth2RefreshTokenEntity;
import org.mitre.oauth2.model.SavedUserAuthentication;
import org.mitre.oauth2.model.SystemScope;
import org.mitre.oauth2.repository.AuthenticationHolderRepository;
import org.mitre.oauth2.repository.OAuth2ClientRepository;
@ -681,43 +682,34 @@ public class MITREidDataService_1_2 extends MITREidDataServiceSupport implements
if (reader.peek() == JsonToken.NULL) {
reader.skipValue();
} else if (name.equals("id")) {
currentId = reader.nextLong();
} else if (name.equals("ownerId")) {
//not needed
reader.skipValue();
} else if (name.equals("authentication")) {
OAuth2Request authorizationRequest = null;
Authentication userAuthentication = null;
reader.beginObject();
while (reader.hasNext()) {
switch (reader.peek()) {
case END_OBJECT:
continue;
case NAME:
String subName = reader.nextName();
if (subName.equals("authorizationRequest")) {
authorizationRequest = readAuthorizationRequest(reader);
} else if (subName.equals("userAuthentication")) {
if (reader.peek() == JsonToken.NULL) {
reader.skipValue();
} else {
String authString = reader.nextString();
userAuthentication = base64UrlDecodeObject(authString, Authentication.class);
}
} else {
logger.debug("Found unexpected entry");
reader.skipValue();
}
break;
default:
logger.debug("Found unexpected entry");
reader.skipValue();
continue;
}
ahe.setId(reader.nextLong());
currentId = ahe.getId();
} else if (name.equals("requestParameters")) {
ahe.setRequestParameters(readMap(reader));
} else if (name.equals("clientId")) {
ahe.setClientId(reader.nextString());
} else if (name.equals("scope")) {
ahe.setScope(readSet(reader));
} else if (name.equals("resourceIds")) {
ahe.setResourceIds(readSet(reader));
} else if (name.equals("authorities")) {
Set<String> authorityStrs = readSet(reader);
Set<GrantedAuthority> authorities = new HashSet<GrantedAuthority>();
for (String s : authorityStrs) {
GrantedAuthority ga = new SimpleGrantedAuthority(s);
authorities.add(ga);
}
reader.endObject();
OAuth2Authentication auth = new OAuth2Authentication(authorizationRequest, userAuthentication);
ahe.setAuthentication(auth);
ahe.setAuthorities(authorities);
} else if (name.equals("approved")) {
ahe.setApproved(reader.nextBoolean());
} else if (name.equals("redirectUri")) {
ahe.setRedirectUri(reader.nextString());
} else if (name.equals("responseTypes")) {
ahe.setResponseTypes(readSet(reader));
} else if (name.equals("extensions")) {
ahe.setExtensions(readMap(reader));
} else if (name.equals("savedUserAuthentication")) {
ahe.setUserAuth(readSavedUserAuthentication(reader));
} else {
logger.debug("Found unexpected entry");
reader.skipValue();
@ -738,72 +730,47 @@ public class MITREidDataService_1_2 extends MITREidDataServiceSupport implements
logger.info("Done reading authentication holders");
}
//used by readAuthenticationHolders
private OAuth2Request readAuthorizationRequest(JsonReader reader) throws IOException {
Set<String> scope = new LinkedHashSet<String>();
Set<String> resourceIds = new HashSet<String>();
boolean approved = false;
Collection<GrantedAuthority> authorities = new HashSet<GrantedAuthority>();
Map<String, String> requestParameters = new HashMap<String, String>();
Set<String> responseTypes = new HashSet<String>();
Map<String, Serializable> extensions = new HashMap<String, Serializable>();
String redirectUri = null;
String clientId = null;
/**
* @param reader
* @return
* @throws IOException
*/
private SavedUserAuthentication readSavedUserAuthentication(JsonReader reader) throws IOException {
SavedUserAuthentication savedUserAuth = new SavedUserAuthentication();
reader.beginObject();
while (reader.hasNext()) {
switch (reader.peek()) {
switch(reader.peek()) {
case END_OBJECT:
continue;
case NAME:
String name = reader.nextName();
if (reader.peek() == JsonToken.NULL) {
reader.skipValue();
} else if (name.equals("requestParameters")) {
requestParameters = readMap(reader);
} else if (name.equals("clientId")) {
clientId = reader.nextString();
} else if (name.equals("scope")) {
scope = readSet(reader);
} else if (name.equals("resourceIds")) {
resourceIds = readSet(reader);
} else if (name.equals("name")) {
savedUserAuth.setName(reader.nextString());
} else if (name.equals("sourceClass")) {
savedUserAuth.setSourceClass(reader.nextString());
} else if (name.equals("authorities")) {
Set<String> authorityStrs = readSet(reader);
authorities = new HashSet<GrantedAuthority>();
Set<GrantedAuthority> authorities = new HashSet<GrantedAuthority>();
for (String s : authorityStrs) {
GrantedAuthority ga = new SimpleGrantedAuthority(s);
authorities.add(ga);
}
} else if (name.equals("approved")) {
approved = reader.nextBoolean();
} else if (name.equals("denied")) {
if (approved == false) {
approved = !reader.nextBoolean();
}
} else if (name.equals("redirectUri")) {
redirectUri = reader.nextString();
} else if (name.equals("responseTypes")) {
responseTypes = readSet(reader);
} else if (name.equals("extensions")) {
Map<String, String> extEnc = readMap(reader);
for (Entry<String, String> entry : extEnc.entrySet()) {
Serializable decoded = base64UrlDecodeObject(entry.getValue(), Serializable.class);
if (decoded != null) {
extensions.put(entry.getKey(), decoded);
}
}
savedUserAuth.setAuthorities(authorities);
} else {
logger.debug("Found unexpected entry");
reader.skipValue();
}
break;
default:
logger.debug("Found unexpected entry");
reader.skipValue();
continue;
}
}
reader.endObject();
return new OAuth2Request(requestParameters, clientId, authorities, approved, scope, resourceIds, redirectUri, responseTypes, extensions);
return savedUserAuth;
}
Map<Long, Long> grantOldToNewIdMap = new HashMap<Long, Long>();
Map<Long, Long> grantToWhitelistedSiteRefs = new HashMap<Long, Long>();
Map<Long, Set<Long>> grantToAccessTokensRefs = new HashMap<Long, Set<Long>>();
@ -1147,6 +1114,7 @@ public class MITREidDataService_1_2 extends MITREidDataServiceSupport implements
}
private void fixObjectReferences() {
logger.info("Fixing object references...");
for (Long oldRefreshTokenId : refreshTokenToClientRefs.keySet()) {
String clientRef = refreshTokenToClientRefs.get(oldRefreshTokenId);
ClientDetailsEntity client = clientRepository.getClientByClientId(clientRef);
@ -1230,6 +1198,7 @@ public class MITREidDataService_1_2 extends MITREidDataServiceSupport implements
}
accessTokenOldToNewIdMap.clear();
grantOldToNewIdMap.clear();
logger.info("Done fixing object references.");
}
}