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
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