View Javadoc

1   package com.atlassian.asap.service.core.service;
2   
3   import com.atlassian.asap.api.client.http.AuthorizationHeaderGenerator;
4   import com.atlassian.asap.core.keys.KeyProvider;
5   import com.atlassian.asap.core.keys.publickey.PublicKeyProviderFactory;
6   import com.atlassian.asap.core.validator.JwtClaimsValidator;
7   import com.atlassian.asap.service.api.AsapService;
8   import com.atlassian.asap.service.api.AuthorizationBuilder;
9   import com.atlassian.asap.service.api.TokenValidator;
10  import com.atlassian.asap.service.core.impl.AuthorizationBuilderImpl;
11  import com.atlassian.asap.service.core.impl.TokenValidatorImpl;
12  import com.atlassian.asap.service.core.spi.AsapConfiguration;
13  
14  import java.security.PublicKey;
15  
16  import static java.util.Objects.requireNonNull;
17  
18  /**
19   * A default implementation for {@code AsapService} that takes its settings from an {@code AsapConfiguration}.
20   */
21  public class DefaultAsapService implements AsapService {
22      private final AsapConfiguration config;
23      private final JwtClaimsValidator jwtClaimsValidator;
24      private final KeyProvider<PublicKey> publicKeyProvider;
25      private final AuthorizationHeaderGenerator authorizationHeaderGenerator;
26  
27      @SuppressWarnings("unused")
28      public DefaultAsapService(AsapConfiguration config,
29                                JwtClaimsValidator jwtClaimsValidator,
30                                PublicKeyProviderFactory publicKeyProviderFactory,
31                                AuthorizationHeaderGenerator authorizationHeaderGenerator) {
32          this(config, jwtClaimsValidator, createPublicKeyProvider(config, publicKeyProviderFactory), authorizationHeaderGenerator);
33      }
34  
35      @SuppressWarnings("WeakerAccess")
36      protected DefaultAsapService(AsapConfiguration config,
37                                   JwtClaimsValidator jwtClaimsValidator,
38                                   KeyProvider<PublicKey> publicKeyProvider,
39                                   AuthorizationHeaderGenerator authorizationHeaderGenerator) {
40          this.config = requireNonNull(config, "config");
41          this.jwtClaimsValidator = requireNonNull(jwtClaimsValidator, "jwtClaimsValidator");
42          this.publicKeyProvider = requireNonNull(publicKeyProvider, "publicKeyProvider");
43          this.authorizationHeaderGenerator = requireNonNull(authorizationHeaderGenerator, "authorizationHeaderGenerator");
44      }
45  
46      @Override
47      public AuthorizationBuilder authorizationBuilder() {
48          return new AuthorizationBuilderImpl(config, authorizationHeaderGenerator);
49      }
50  
51      @Override
52      public TokenValidator tokenValidator() {
53          return new TokenValidatorImpl(config, publicKeyProvider, jwtClaimsValidator);
54      }
55  
56      private static KeyProvider<PublicKey> createPublicKeyProvider(AsapConfiguration config,
57                                                                    PublicKeyProviderFactory publicKeyProviderFactory) {
58          requireNonNull(config, "config");
59          requireNonNull(publicKeyProviderFactory, "publicKeyProviderFactory");
60          return publicKeyProviderFactory.createPublicKeyProvider(config.publicKeyRepositoryUrl());
61      }
62  }
63