Merge branch 'stable-3.4' * stable-3.4: Create HTTP session only for login requests Change-Id: I6143bccd46a0a683d5da241db3eb3d1e1f945830
diff --git a/BUILD b/BUILD index 3454255..a13b9ed 100644 --- a/BUILD +++ b/BUILD
@@ -9,6 +9,7 @@ resources = glob(["src/main/resources/**"]), deps = [ "@commons-collections//jar", + "@commons-lang//jar", "@cryptacular//jar", "@joda-time//jar", "@opensaml-core//jar",
diff --git a/external_plugin_deps.bzl b/external_plugin_deps.bzl index 59f0529..16b7dad 100644 --- a/external_plugin_deps.bzl +++ b/external_plugin_deps.bzl
@@ -15,6 +15,12 @@ ) maven_jar( + name = "commons-lang", + artifact = "commons-lang:commons-lang:2.6", + sha1 = "0ce1edb914c94ebc388f086c6827e8bdeec71ac2", + ) + + maven_jar( name = "cryptacular", artifact = "org.cryptacular:cryptacular:1.2.1", sha1 = "c470bac7309ac04b0b9529bd7dcb1e0b75954f11",
diff --git a/src/main/java/com/googlesource/gerrit/plugins/saml/SamlMembership.java b/src/main/java/com/googlesource/gerrit/plugins/saml/SamlMembership.java index 06940dc..7b91f1e 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/saml/SamlMembership.java +++ b/src/main/java/com/googlesource/gerrit/plugins/saml/SamlMembership.java
@@ -24,9 +24,9 @@ import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.ServerInitiated; import com.google.gerrit.server.account.*; +import com.google.gerrit.server.group.db.GroupDelta; import com.google.gerrit.server.group.db.GroupsUpdate; import com.google.gerrit.server.group.db.InternalGroupCreation; -import com.google.gerrit.server.group.db.InternalGroupUpdate; import com.google.gerrit.server.notedb.Sequences; import com.google.inject.Inject; import com.google.inject.Provider; @@ -56,6 +56,7 @@ private final IdentifiedUser.GenericFactory userFactory; private final Provider<GroupsUpdate> groupsUpdateProvider; private final Sequences sequences; + private final AuthRequest.Factory authRequestFactory; @Inject SamlMembership( @@ -65,7 +66,8 @@ GroupCache groupCache, IdentifiedUser.GenericFactory userFactory, @ServerInitiated Provider<GroupsUpdate> groupsUpdateProvider, - Sequences sequences) { + Sequences sequences, + AuthRequest.Factory authRequestFactory) { this.memberAttr = samlConfig.getMemberOfAttr(); this.serverIdent = serverIdent; this.accountManager = accountManager; @@ -73,6 +75,7 @@ this.userFactory = userFactory; this.groupsUpdateProvider = groupsUpdateProvider; this.sequences = sequences; + this.authRequestFactory = authRequestFactory; } /** @@ -84,7 +87,8 @@ public void sync(AuthenticatedUser user, SAML2Profile profile) throws IOException { Set<AccountGroup.UUID> samlMembership = Optional.ofNullable((List<?>) profile.getAttribute(memberAttr, List.class)) - .orElse(Collections.emptyList()).stream() + .orElse(Collections.emptyList()) + .stream() .map(m -> getOrCreateGroup(m.toString())) .filter(Optional::isPresent) .map(Optional::get) @@ -130,9 +134,8 @@ } private void updateMembers( - AccountGroup.UUID group, InternalGroupUpdate.MemberModification memberModification) { - InternalGroupUpdate update = - InternalGroupUpdate.builder().setMemberModification(memberModification).build(); + AccountGroup.UUID group, GroupDelta.MemberModification memberModification) { + GroupDelta update = GroupDelta.builder().setMemberModification(memberModification).build(); try { groupsUpdateProvider.get().updateGroup(group, update); } catch (Exception e) { @@ -156,8 +159,8 @@ .setNameKey(name) .setId(groupId) .build(); - InternalGroupUpdate.Builder groupUpdateBuilder = - InternalGroupUpdate.builder() + GroupDelta.Builder groupUpdateBuilder = + GroupDelta.builder() .setVisibleToAll(false) .setDescription(samlGroup + " (imported by the SAML plugin)"); return groupsUpdateProvider.get().createGroup(groupCreation, groupUpdateBuilder.build()); @@ -174,7 +177,7 @@ } private Account.Id getOrCreateAccountId(AuthenticatedUser user) throws IOException { - AuthRequest authRequest = AuthRequest.forUser(user.getUsername()); + AuthRequest authRequest = authRequestFactory.createForUser(user.getUsername()); authRequest.setUserName(user.getUsername()); authRequest.setEmailAddress(user.getEmail()); authRequest.setDisplayName(user.getDisplayName());