All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.microsoft.kiota.authentication.BaseBearerTokenAuthenticationProvider Maven / Gradle / Ivy

package com.microsoft.kiota.authentication;

import com.microsoft.kiota.Compatibility;
import com.microsoft.kiota.RequestInformation;

import jakarta.annotation.Nonnull;
import jakarta.annotation.Nullable;

import java.net.URI;
import java.net.URISyntaxException;
import java.util.Map;
import java.util.Objects;

/** Provides a base class for implementing AuthenticationProvider for Bearer token scheme. */
public class BaseBearerTokenAuthenticationProvider implements AuthenticationProvider {
    /**
     * Instantiates a new BaseBearerTokenAuthenticationProvider.
     * @param accessTokenProvider the access token provider.
     */
    public BaseBearerTokenAuthenticationProvider(
            @Nonnull final AccessTokenProvider accessTokenProvider) {
        this.accessTokenProvider = Objects.requireNonNull(accessTokenProvider);
    }

    private final AccessTokenProvider accessTokenProvider;
    private static final String authorizationHeaderKey = "Authorization";
    private static final String ClaimsKey = "claims";

    public void authenticateRequest(
            @Nonnull final RequestInformation request,
            @Nullable final Map additionalAuthenticationContext) {
        Objects.requireNonNull(request);
        if (request.headers.containsKey(authorizationHeaderKey)
                && additionalAuthenticationContext != null
                && additionalAuthenticationContext.containsKey(ClaimsKey)) {
            request.headers.remove(authorizationHeaderKey);
        }
        if (!request.headers.containsKey(authorizationHeaderKey)) {
            final URI targetUri;
            try {
                targetUri = request.getUri();
            } catch (URISyntaxException e) {
                throw new RuntimeException("Malformed URI.", e);
            }
            String accessToken =
                    this.accessTokenProvider.getAuthorizationToken(
                            targetUri, additionalAuthenticationContext);
            if (!Compatibility.isBlank(accessToken)) {
                request.headers.add(authorizationHeaderKey, "Bearer " + accessToken);
            }
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy