View Javadoc

1   package com.atlassian.asap.service.core.service;
2   
3   import com.atlassian.asap.core.client.http.AuthorizationHeaderGeneratorImpl;
4   import com.atlassian.asap.core.keys.KeyProvider;
5   import com.atlassian.asap.core.keys.privatekey.NullKeyProvider;
6   import com.atlassian.asap.core.keys.privatekey.PrivateKeyProviderFactory;
7   import com.atlassian.asap.nimbus.serializer.NimbusJwtSerializer;
8   import com.atlassian.asap.service.core.spi.AsapConfiguration;
9   
10  import java.net.URI;
11  import java.security.PrivateKey;
12  
13  import static java.util.Objects.requireNonNull;
14  
15  /**
16   * An authorization header generator that is suitable for use as a globally configured component in a container.
17   */
18  @SuppressWarnings("unused")
19  public class DefaultAuthorizationHeaderGenerator extends AuthorizationHeaderGeneratorImpl {
20      /**
21       * Constructs a new authorization header generator.
22       *
23       * @param config the configuration parameters for the ASAP services
24       */
25      public DefaultAuthorizationHeaderGenerator(AsapConfiguration config) {
26          super(new NimbusJwtSerializer(), createPrivateKeyProvider(config));
27      }
28  
29      private static KeyProvider<PrivateKey> createPrivateKeyProvider(AsapConfiguration config) {
30          requireNonNull(config, "config");
31          final String url = config.privateKeyUrl();
32          return url.isEmpty() ? new NullKeyProvider() : PrivateKeyProviderFactory.createPrivateKeyProvider(URI.create(url));
33      }
34  }