1 package com.atlassian.asap.core.server.springsecurity;
2
3 import com.atlassian.asap.api.Jwt;
4 import com.atlassian.asap.core.validator.JwtValidator;
5 import com.google.common.collect.ImmutableSet;
6 import org.springframework.security.core.GrantedAuthority;
7
8 import java.util.Collection;
9 import java.util.Collections;
10 import java.util.Set;
11
12
13
14
15
16
17
18 public class IssuerAndSubjectWhitelistAsapAuthenticationProvider extends AsapAuthenticationProvider {
19 private final Set<String> validIssuers;
20 private final Set<String> validSubjects;
21 private final Collection<GrantedAuthority> authorities;
22
23
24
25
26
27
28
29 public IssuerAndSubjectWhitelistAsapAuthenticationProvider(JwtValidator jwtValidator,
30 Iterable<String> validIssuers,
31 Iterable<String> validSubjects,
32 Iterable<GrantedAuthority> authorities) {
33 super(jwtValidator);
34 this.validIssuers = ImmutableSet.copyOf(validIssuers);
35 this.validSubjects = ImmutableSet.copyOf(validSubjects);
36 this.authorities = ImmutableSet.copyOf(authorities);
37 }
38
39 @Override
40 protected Collection<GrantedAuthority> getGrantedAuthorities(Jwt validJwt) {
41 if (validIssuers.contains(validJwt.getClaims().getIssuer()) &&
42 validSubjects.contains(effectiveSubject(validJwt))) {
43 return authorities;
44 } else {
45 return Collections.emptyList();
46 }
47 }
48 }