Commit e83ab018 authored by Labros Papadopoulos's avatar Labros Papadopoulos
Browse files

feat: use oidc base url to retrieve oidc provider access token

parent 097206a8
Loading
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -18,7 +18,7 @@ import lombok.ToString;
    "oauth2ClientId",
    "oauth2ClientSecret",
    "oauth2Scopes",
    "oidcBaseUrl",
    "authUrl",
    "username",
    "password"
})
@@ -38,7 +38,7 @@ public class OssLifecycleData {

    private String oauth2Scopes;

    private String oidcBaseUrl;
    private String authUrl;

    private String username;

+7 −3
Original line number Diff line number Diff line
@@ -13,14 +13,18 @@ import java.util.Map;
public class OidcClientCreator {

    @Inject OidcClients oidcClients;
    private static final String openSliceRealm = "/auth/realms/openslice";

    public Uni<OidcClient> createOidcClient(
            String name, String url, String clientId, String secret, String username, String password) {
            String name,
            String authUrl,
            String clientId,
            String secret,
            String username,
            String password) {
        OidcClientConfig cfg =
                new OidcClientConfigBuilder()
                        .id(name)
                        .authServerUrl(url + openSliceRealm)
                        .authServerUrl(authUrl)
                        .clientId(clientId)
                        .credentials(secret)
                        .grant(OidcClientConfig.Grant.Type.PASSWORD)
+10 −10
Original line number Diff line number Diff line
@@ -73,7 +73,7 @@ public class OssRestClientImpl {
            String username,
            String password,
            String organizationId,
            String oidcBaseUrl) {
            String authUrl) {

        return executeWithRetry(
                baseUrl,
@@ -83,7 +83,7 @@ public class OssRestClientImpl {
                oauth2ClientSecret,
                username,
                password,
                oidcBaseUrl,
                authUrl,
                (client, token) -> {
                    Response response = client.getServiceSpecifications("Bearer " + token.getAccessToken());
                    String jsonResponse = response.readEntity(String.class);
@@ -101,7 +101,7 @@ public class OssRestClientImpl {
            String password,
            String serviceSpecificationId,
            String organizationId,
            String oidcBaseUrl) {
            String authUrl) {

        return executeWithRetry(
                baseUrl,
@@ -111,7 +111,7 @@ public class OssRestClientImpl {
                oauth2ClientSecret,
                username,
                password,
                oidcBaseUrl,
                authUrl,
                (client, token) -> {
                    Response response =
                            client.getServiceSpecificationById(
@@ -126,7 +126,7 @@ public class OssRestClientImpl {

    Tokens createToken(
            String name,
            String oidcBaseUrl,
            String authUrl,
            String oauth2ClientId,
            String oauth2ClientSecret,
            String username,
@@ -134,7 +134,7 @@ public class OssRestClientImpl {
        logger.debugf("Will retrieve a fresh token for org: %s", name);
        Uni<OidcClient> oidcClientUni =
                oidcClientCreator.createOidcClient(
                        name, oidcBaseUrl, oauth2ClientId, oauth2ClientSecret, username, password);
                        name, authUrl, oauth2ClientId, oauth2ClientSecret, username, password);
        TokensHelper tokenHelper = new TokensHelper();
        return tokenHelper.getTokens(oidcClientUni.await().indefinitely()).await().indefinitely();
    }
@@ -147,12 +147,12 @@ public class OssRestClientImpl {
            String secret,
            String user,
            String pass,
            String oidcBaseUrl,
            String authUrl,
            BiFunctionWithException<OssRestClient, Tokens, T> action) {
        OssRestClient client = getCachedRestClient(baseUrl);

        // Compute token if missing
        Tokens tokens = getOrComputeToken(orgId, name, oidcBaseUrl, clientId, secret, user, pass);
        Tokens tokens = getOrComputeToken(orgId, name, authUrl, clientId, secret, user, pass);
        try {
            return action.apply(client, tokens);
        } catch (Exception e) {
@@ -194,12 +194,12 @@ public class OssRestClientImpl {
    Tokens getOrComputeToken(
            String orgId,
            String name,
            String oidcBaseUrl,
            String authUrl,
            String clientId,
            String secret,
            String user,
            String pass) {
        return tokenCache.get(orgId, k -> createToken(name, oidcBaseUrl, clientId, secret, user, pass));
        return tokenCache.get(orgId, k -> createToken(name, authUrl, clientId, secret, user, pass));
    }

    public void removeCachedToken(String organizationId) {
+2 −2
Original line number Diff line number Diff line
@@ -165,7 +165,7 @@ public class PeeringService {
                            ossLifecycleData.getUsername(),
                            ossLifecycleData.getPassword(),
                            ossLifecycleData.getOrganizationId(),
                            ossLifecycleData.getOidcBaseUrl());
                            ossLifecycleData.getAuthUrl());

        } catch (OidcClientException oidcClientException) {
            logger.errorf(
@@ -196,7 +196,7 @@ public class PeeringService {
                                ossLifecycleData.getPassword(),
                                entry.getKey(),
                                ossLifecycleData.getOrganizationId(),
                                ossLifecycleData.getOidcBaseUrl());
                                ossLifecycleData.getAuthUrl());
                serviceSpecificationEntityList.add(serviceSpecificationEntity);
            }

+1 −1
Original line number Diff line number Diff line
@@ -44,7 +44,7 @@ public class HelperFunctions {
                case EXTERNAL_TMF_API_PASSWORD -> ossLifecycleData.setPassword(value);
                case EXTERNAL_TMF_API_OAUTH2_CLIENT_SECRET -> ossLifecycleData.setOauth2ClientSecret(value);
                case EXTERNAL_TMF_API_OAUTH2_SCOPES -> ossLifecycleData.setOauth2Scopes(value);
                case EXTERNAL_TMF_API_OAUTH2_TOKEN_URI -> ossLifecycleData.setOidcBaseUrl(value);
                case EXTERNAL_TMF_API_OAUTH2_TOKEN_URI -> ossLifecycleData.setAuthUrl(value);
                case EXTERNAL_TMF_API_OAUTH2_CLIENT_ID -> ossLifecycleData.setOauth2ClientId(value);
                case EXTERNAL_TMF_API_BASE_URL -> ossLifecycleData.setBaseUrl(value);
                case EXTERNAL_TMF_API_SERVICE_CATALOG_URL -> ossLifecycleData.setCatalogUrl(value);
Loading