1 package com.atlassian.asap.core.server;
2
3 import com.atlassian.asap.core.keys.KeyProvider;
4 import com.atlassian.asap.core.keys.publickey.PublicKeyProviderFactory;
5 import com.google.common.collect.ImmutableSet;
6 import com.google.common.collect.Iterables;
7
8 import javax.annotation.Nonnull;
9 import java.security.PublicKey;
10 import java.util.Set;
11
12 import static com.google.common.base.Preconditions.checkState;
13 import static com.google.common.collect.ImmutableSet.copyOf;
14 import static java.util.Objects.requireNonNull;
15
16
17
18
19 public class AuthenticationContext {
20 private final Set<String> resourceServerAudiences;
21 private final KeyProvider<PublicKey> publicKeyProvider;
22
23
24
25
26
27
28
29 public AuthenticationContext(@Nonnull String resourceServerAudience,
30 @Nonnull String publicKeyServerBaseUrl) {
31 this(ImmutableSet.of(requireNonNull(resourceServerAudience)), publicKeyServerBaseUrl);
32 }
33
34
35
36
37
38
39
40 public AuthenticationContext(@Nonnull Set<String> resourceServerAudiences,
41 @Nonnull String publicKeyServerBaseUrl) {
42 this(resourceServerAudiences,
43 PublicKeyProviderFactory.createDefault().createPublicKeyProvider(publicKeyServerBaseUrl));
44 }
45
46
47
48
49
50
51
52 public AuthenticationContext(@Nonnull String resourceServerAudience,
53 @Nonnull KeyProvider<PublicKey> publicKeyProvider) {
54 this(ImmutableSet.of(requireNonNull(resourceServerAudience)), publicKeyProvider);
55 }
56
57
58
59
60
61
62
63 public AuthenticationContext(@Nonnull Set<String> resourceServerAudiences,
64 @Nonnull KeyProvider<PublicKey> publicKeyProvider) {
65 this.resourceServerAudiences = copyOf(requireNonNull(resourceServerAudiences));
66 this.publicKeyProvider = requireNonNull(publicKeyProvider);
67 }
68
69
70
71
72
73 @Deprecated
74 public String getResourceServerAudience() {
75 checkState(resourceServerAudiences.size() == 1,
76 "Legacy getResourceServerAudience can only be called if a single audience value has been set.");
77 return Iterables.getFirst(resourceServerAudiences, null);
78 }
79
80
81
82
83 public Set<String> getResourceServerAudiences() {
84 return resourceServerAudiences;
85 }
86
87
88
89
90 public KeyProvider<PublicKey> getPublicKeyProvider() {
91 return publicKeyProvider;
92 }
93 }