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

com.okta.sdk.impl.resource.DefaultOIDCApplicationBuilder Maven / Gradle / Ivy

/*
 * Copyright 2020-Present Okta, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.okta.sdk.impl.resource;

import com.okta.commons.lang.Strings;
import com.okta.sdk.resource.application.OIDCApplicationBuilder;
import com.okta.sdk.resource.client.ApiException;
import com.okta.sdk.resource.api.ApplicationApi;
import com.okta.sdk.resource.model.AutoLoginApplicationSettingsSignOn;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

public class DefaultOIDCApplicationBuilder extends DefaultApplicationBuilder implements OIDCApplicationBuilder {
    private com.okta.sdk.resource.model.OpenIdConnectApplicationType applicationType;
    private String clientUri;
    private com.okta.sdk.resource.model.OpenIdConnectApplicationConsentMethod consentMethod;
    private List grantTypes = new ArrayList<>();
    private String logoUri;
    private String policyUri;
    private String loginUrl;
    private String redirectUrl;
    private List postLogoutRedirectUris = new ArrayList<>();
    private List redirectUris = new ArrayList<>();
    private List responseTypes = new ArrayList<>();
    private String tosUri;
    private String clientId;
    private String clientSecret;
    private Boolean autoKeyRotation;
    private com.okta.sdk.resource.model.OAuthEndpointAuthenticationMethod tokenEndpointAuthMethod;
    private List schemasJsonWebKeys = new ArrayList<>();
    private Boolean isImplicitAssignment;
    private String inlineHookId;

    @Override
    public OIDCApplicationBuilder setApplicationType(com.okta.sdk.resource.model.OpenIdConnectApplicationType applicationType) {
        this.applicationType = applicationType;
        return this;
    }

    @Override
    public OIDCApplicationBuilder setClientUri(String clientUri) {
        this.clientUri = clientUri;
        return this;
    }

    @Override
    public OIDCApplicationBuilder setConsentMethod(com.okta.sdk.resource.model.OpenIdConnectApplicationConsentMethod consentMethod) {
        this.consentMethod = consentMethod;
        return this;
    }

    @Override
    public OIDCApplicationBuilder setGrantTypes(List grantTypes) {
        this.grantTypes = grantTypes;
        return this;
    }

    @Override
    public OIDCApplicationBuilder addGrantTypes(com.okta.sdk.resource.model.OAuthGrantType grantType) {
        this.grantTypes.add(grantType);
        return this;
    }

    @Override
    public OIDCApplicationBuilder setLogoUri(String logoUri) {
        this.logoUri = logoUri;
        return this;
    }

    @Override
    public OIDCApplicationBuilder setPolicyUri(String policyUri) {
        this.policyUri = policyUri;
        return this;
    }

    @Override
    public OIDCApplicationBuilder setPostLogoutRedirectUris(List postLogoutRedirectUris) {
        this.postLogoutRedirectUris = postLogoutRedirectUris;
        return this;
    }

    @Override
    public OIDCApplicationBuilder setRedirectUris(List redirectUris) {
        this.redirectUris = redirectUris;
        return this;
    }

    @Override
    public OIDCApplicationBuilder addRedirectUris(String redirectUri) {
        this.redirectUris.add(redirectUri);
        return this;
    }

    @Override
    public OIDCApplicationBuilder setResponseTypes(List responseTypes) {
        this.responseTypes = responseTypes;
        return this;
    }

    @Override
    public OIDCApplicationBuilder addResponseTypes(com.okta.sdk.resource.model.OAuthResponseType responseType) {
        this.responseTypes.add(responseType);
        return this;
    }

    @Override
    public OIDCApplicationBuilder setTosUri(String tosUri) {
        this.tosUri = tosUri;
        return this;
    }

    @Override
    public OIDCApplicationBuilder setClientId(String clientId) {
        this.clientId = clientId;
        return this;
    }

    @Override
    public OIDCApplicationBuilder setLoginUrl(String loginUrl) {
        this.loginUrl = loginUrl;
        return this;
    }

    @Override
    public OIDCApplicationBuilder setRedirectUrl(String redirectUrl) {
        this.redirectUrl = redirectUrl;
        return this;
    }

    @Override
    public OIDCApplicationBuilder setClientSecret(String clientSecret) {
        this.clientSecret = clientSecret;
        return this;
    }

    @Override
    public OIDCApplicationBuilder setAutoKeyRotation(Boolean autoKeyRotation) {
        this.autoKeyRotation = autoKeyRotation;
        return this;
    }

    @Override
    public OIDCApplicationBuilder setTokenEndpointAuthMethod(com.okta.sdk.resource.model.OAuthEndpointAuthenticationMethod tokenEndpointAuthMethod) {
        this.tokenEndpointAuthMethod = tokenEndpointAuthMethod;
        return this;
    }

    @Override
    public OIDCApplicationBuilder setJwks(List schemasJsonWebKeys) {
        this.schemasJsonWebKeys = schemasJsonWebKeys;
        return this;
    }

    @Override
    public OIDCApplicationBuilder setImplicitAssignment(Boolean isImplicitAssignment) {
        this.isImplicitAssignment = isImplicitAssignment;
        return this;
    }

    @Override
    public OIDCApplicationBuilder setInlineHookId(String inlineHookId) {
        this.inlineHookId = inlineHookId;
        return this;
    }

    @Override
    public com.okta.sdk.resource.model.OpenIdConnectApplication buildAndCreate(ApplicationApi client) throws ApiException {
        return (com.okta.sdk.resource.model.OpenIdConnectApplication) new ApplicationApi(client.getApiClient())
                .createApplication(build(), false, null);
    }

    private com.okta.sdk.resource.model.OpenIdConnectApplication build() {
        com.okta.sdk.resource.model.OpenIdConnectApplication application = new com.okta.sdk.resource.model.OpenIdConnectApplication();

        if (Strings.hasText(label)) application.setLabel(label);

        if (Strings.hasText(name)) application.setName(name);

        application.setSignOnMode(com.okta.sdk.resource.model.ApplicationSignOnMode.OPENID_CONNECT);

        // Accessibility
        com.okta.sdk.resource.model.ApplicationAccessibility applicationAccessibility = new com.okta.sdk.resource.model.ApplicationAccessibility();

        if (Strings.hasText(errorRedirectUrl))
            applicationAccessibility.setErrorRedirectUrl(errorRedirectUrl);

        if (Objects.nonNull(selfService))
            applicationAccessibility.setSelfService(selfService);

        application.setAccessibility(applicationAccessibility);

        // Visibility
        com.okta.sdk.resource.model.ApplicationVisibility applicationVisibility = new com.okta.sdk.resource.model.ApplicationVisibility();

        com.okta.sdk.resource.model.ApplicationVisibilityHide applicationVisibilityHide = new com.okta.sdk.resource.model.ApplicationVisibilityHide();

        if (Objects.nonNull(iOS))
            applicationVisibilityHide.setiOS(iOS);

        if (Objects.nonNull(web))
           applicationVisibilityHide.setWeb(web);

        applicationVisibility.setHide(applicationVisibilityHide);

        application.setVisibility(applicationVisibility);

        // Settings
        com.okta.sdk.resource.model.OpenIdConnectApplicationSettings openIdConnectApplicationSettings = new com.okta.sdk.resource.model.OpenIdConnectApplicationSettings();

        com.okta.sdk.resource.model.OpenIdConnectApplicationSettingsClient openIdConnectApplicationSettingsClient = new com.okta.sdk.resource.model.OpenIdConnectApplicationSettingsClient();

        if (Strings.hasText(clientUri))
            openIdConnectApplicationSettingsClient.setClientUri(clientUri);

        if (Strings.hasText(logoUri))
            openIdConnectApplicationSettingsClient.setLogoUri(logoUri);

        if (Strings.hasText(policyUri))
            openIdConnectApplicationSettingsClient.setPolicyUri(policyUri);

        if (Strings.hasText(tosUri))
            openIdConnectApplicationSettingsClient.setTosUri(tosUri);

        if (Objects.nonNull(postLogoutRedirectUris) && !postLogoutRedirectUris.isEmpty())
            openIdConnectApplicationSettingsClient.setPostLogoutRedirectUris(postLogoutRedirectUris);

        if (Objects.nonNull(redirectUris))
            openIdConnectApplicationSettingsClient.setRedirectUris(redirectUris);

        if (Objects.nonNull(responseTypes) && !responseTypes.isEmpty())
            openIdConnectApplicationSettingsClient.setResponseTypes(responseTypes);
        else
            throw new IllegalArgumentException("Response Type cannot be null, value should be of type OAuthResponseType");

        if (Objects.nonNull(grantTypes) && !grantTypes.isEmpty())
            openIdConnectApplicationSettingsClient.setGrantTypes(grantTypes);
        else
            throw new IllegalArgumentException("Grant Type cannot be null, value should be of type OAuthGrantType");

        if (Objects.nonNull(consentMethod))
            openIdConnectApplicationSettingsClient.setConsentMethod(consentMethod);

        if (Objects.nonNull(applicationType))
            openIdConnectApplicationSettingsClient.setApplicationType(applicationType);
        else
            throw new IllegalArgumentException("Application Type cannot be null, value should be of type OpenIdConnectApplicationType");

        if (Objects.nonNull(isImplicitAssignment))
            openIdConnectApplicationSettings.setImplicitAssignment(isImplicitAssignment);

        if (Objects.nonNull(inlineHookId))
            openIdConnectApplicationSettings.setInlineHookId(inlineHookId);

        // Credentials
        com.okta.sdk.resource.model.OAuthApplicationCredentials oAuthApplicationCredentials = new com.okta.sdk.resource.model.OAuthApplicationCredentials();
        com.okta.sdk.resource.model.ApplicationCredentialsOAuthClient applicationCredentialsOAuthClient = new com.okta.sdk.resource.model.ApplicationCredentialsOAuthClient();

        if (Strings.hasText(clientId))
            applicationCredentialsOAuthClient.setClientId(clientId);

        if (Strings.hasText(clientSecret))
            applicationCredentialsOAuthClient.setClientSecret(clientSecret);

        if (Objects.nonNull(autoKeyRotation))
            applicationCredentialsOAuthClient.setAutoKeyRotation(autoKeyRotation);

        if (Objects.nonNull(tokenEndpointAuthMethod))
            applicationCredentialsOAuthClient.setTokenEndpointAuthMethod(tokenEndpointAuthMethod);
        else
            throw new IllegalArgumentException("Token Endpoint Auth Method cannot be null, value should be of type OAuthEndpointAuthenticationMethod");

        oAuthApplicationCredentials.setOauthClient(applicationCredentialsOAuthClient);

        application.setCredentials(oAuthApplicationCredentials);

        openIdConnectApplicationSettings.setOauthClient(openIdConnectApplicationSettingsClient);

        AutoLoginApplicationSettingsSignOn autoLoginApplicationSettingsSignOn = new AutoLoginApplicationSettingsSignOn();
        if (Strings.hasText(loginUrl))
            autoLoginApplicationSettingsSignOn.setLoginUrl(loginUrl);

        if (Strings.hasText(redirectUrl))
            autoLoginApplicationSettingsSignOn.setRedirectUrl(redirectUrl);

        if (Strings.hasText(autoLoginApplicationSettingsSignOn.getLoginUrl()))
            openIdConnectApplicationSettings.setSignOn(autoLoginApplicationSettingsSignOn);

        if (!schemasJsonWebKeys.isEmpty()) {
            com.okta.sdk.resource.model.OpenIdConnectApplicationSettingsClientKeys openIdConnectApplicationSettingsClientKeys = new com.okta.sdk.resource.model.OpenIdConnectApplicationSettingsClientKeys();
            openIdConnectApplicationSettingsClientKeys.setKeys(schemasJsonWebKeys);
            openIdConnectApplicationSettings.getOauthClient().setJwks(openIdConnectApplicationSettingsClientKeys);
        }

        application.setSettings(openIdConnectApplicationSettings);
        return application;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy