Commit 842b3524 authored by Labros Papadopoulos's avatar Labros Papadopoulos
Browse files

feat: use oidc provider url to obtain access token

parent b65cae6a
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",
    "oauth2TokenUri",
    "authUrl",
    "username",
    "password"
})
@@ -38,7 +38,7 @@ public class OssLifecycleData {

    private String oauth2Scopes;

    private String oauth2TokenUri;
    private String authUrl;

    private String username;

+14 −13
Original line number Diff line number Diff line
package org.etsi.osl.hypo.clients.oss.oss.external;

import io.quarkus.oidc.client.OidcClient;
import io.quarkus.oidc.client.OidcClientConfig;
import io.quarkus.oidc.client.OidcClientConfig.Grant.Type;
import io.quarkus.oidc.client.OidcClientConfigBuilder;
import io.quarkus.oidc.client.OidcClients;
import io.quarkus.oidc.client.runtime.OidcClientConfig;
import io.smallrye.mutiny.Uni;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
import java.util.Map;
import org.etsi.osl.hypo.clients.oss.util.OssConstants;

@ApplicationScoped
public class OidcClientCreator {

    private final OidcClients oidcClients;
    private static final String OIDC_TOKEN_PATH = "/protocol/openid-connect/token";

    @Inject
    public OidcClientCreator(OidcClients oidcClients) {
@@ -22,20 +22,21 @@ public class OidcClientCreator {

    public Uni<OidcClient> createOidcClient(
            String name,
            String url,
            String clientId,
            String secret,
            String username,
            String password,
            String tokenPath) {
        OidcClientConfig cfg = new OidcClientConfig();
        cfg.setId(name);
        cfg.setAuthServerUrl(url + OssConstants.OPEN_SLICE_REALM);
        cfg.setClientId(clientId);
        cfg.getCredentials().setSecret(secret);
        cfg.getGrant().setType(Type.PASSWORD);
        cfg.setGrantOptions(Map.of("password", Map.of("username", username, "password", password)));
        cfg.setTokenPath(tokenPath);
            String authUrl) {
        OidcClientConfig cfg =
                new OidcClientConfigBuilder()
                        .id(name)
                        .authServerUrl(authUrl)
                        .clientId(clientId)
                        .credentials(secret)
                        .grant(OidcClientConfig.Grant.Type.PASSWORD)
                        .grantOptions(Map.of("password", Map.of("username", username, "password", password)))
                        .tokenPath(authUrl + OIDC_TOKEN_PATH)
                        .build();
        return oidcClients.newClient(cfg);
    }
}
+1 −2
Original line number Diff line number Diff line
@@ -369,12 +369,11 @@ public class OpenSliceRestClientImpl {
        return oidcClientCreator
                .createOidcClient(
                        ossLifecycleData.getName(),
                        ossLifecycleData.getBaseUrl(),
                        ossLifecycleData.getOauth2ClientId(),
                        ossLifecycleData.getOauth2ClientSecret(),
                        ossLifecycleData.getUsername(),
                        ossLifecycleData.getPassword(),
                        ossLifecycleData.getOauth2TokenUri())
                        ossLifecycleData.getAuthUrl())
                .chain(tokenHelper::getTokens)
                .map(tokens -> "Bearer " + tokens.getAccessToken());
    }
+1 −1
Original line number Diff line number Diff line
@@ -957,7 +957,7 @@ public class OrderingService {
        if (StringUtils.isBlank(data.getOauth2Scopes())) {
            errorMessages.add("oauth2Scopes is required");
        }
        if (StringUtils.isBlank(data.getOauth2TokenUri())) {
        if (StringUtils.isBlank(data.getAuthUrl())) {
            errorMessages.add("oauth2TokenUri is required");
        }
        if (StringUtils.isBlank(data.getUsername())) {
+1 −1
Original line number Diff line number Diff line
@@ -59,7 +59,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.setOauth2TokenUri(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