OidcProviderMetadata.java

/**
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements. See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership. The ASF licenses this file
 * to you 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 org.apache.cxf.rs.security.oidc.idp;

import java.net.URL;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import org.apache.cxf.rs.security.oauth2.services.AuthorizationMetadata;

/**
 * @see <a href="https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata">OpenID Provider
 *      Metadata</a>
 */
public class OidcProviderMetadata extends AuthorizationMetadata {

    public static final String USERINFO_ENDPOINT = "userinfo_endpoint";
    public static final String ACR_VALUES_SUPPORTED = "acr_values_supported";
    public static final String SUBJECT_TYPES_SUPPORTED = "subject_types_supported";
    public static final String ID_TOKEN_SIGNING_ALG_VALUES_SUPPORTED = "id_token_signing_alg_values_supported";
    public static final String ID_TOKEN_ENCRYPTION_ALG_VALUES_SUPPORTED = "id_token_encryption_alg_values_supported";
    public static final String ID_TOKEN_ENCRYPTION_ENC_VALUES_SUPPORTED = "id_token_encryption_enc_values_supported";
    public static final String USERINFO_SIGNING_ALG_VALUES_SUPPORTED = "userinfo_signing_alg_values_supported";
    public static final String USERINFO_ENCRYPTION_ALG_VALUES_SUPPORTED = "userinfo_encryption_alg_values_supported";
    public static final String USERINFO_ENCRYPTION_ENC_VALUES_SUPPORTED = "userinfo_encryption_enc_values_supported";
    public static final String REQUEST_OBJECT_SIGNING_ALG_VALUES_SUPPORTED =
        "request_object_signing_alg_values_supported";
    public static final String REQUEST_OBJECT_ENCRYPTION_ALG_VALUES_SUPPORTED =
        "request_object_encryption_alg_values_supported";
    public static final String REQUEST_OBJECT_ENCRYPTION_ENC_VALUES_SUPPORTED =
        "request_object_encryption_enc_values_supported";
    public static final String DISPLAY_VALUES_SUPPORTED = "display_values_supported";
    public static final String CLAIM_TYPES_SUPPORTED = "claim_types_supported";
    public static final String CLAIMS_SUPPORTED = "claims_supported";
    public static final String CLAIM_LOCALES_SUPPORTED = "claims_locales_supported";
    public static final String CLAIMS_PARAMETER_SUPPORTED = "claims_parameter_supported";
    public static final String REQUEST_PARAMETER_SUPPORTED = "request_parameter_supported";
    public static final String REQUEST_URI_PARAMETER_SUPPORTED = "request_uri_parameter_supported";
    public static final String REQUIRE_REQUEST_URI_REGISTRATION = "require_request_uri_registration";

    // https://openid.net/specs/openid-connect-session-1_0.html#OPMetadata
    public static final String CHECK_SESSION_IFRAME = "check_session_iframe";
    public static final String END_SESSION_ENDPOINT = "end_session_endpoint";

    public OidcProviderMetadata() {
    }

    public OidcProviderMetadata(Map<String, Object> props) {
        super(new LinkedHashMap<String, Object>(props));
    }

    public URL getUserinfoEndpoint() {
        return getURLProperty(USERINFO_ENDPOINT);
    }

    public void setUserinfoEndpoint(URL userinfoEndpoint) {
        setURLProperty(USERINFO_ENDPOINT, userinfoEndpoint);
    }

    public List<String> getAcrValuesSupported() {
        return getListStringProperty(ACR_VALUES_SUPPORTED);
    }

    public void setAcrValuesSupported(List<String> acrValuesSupported) {
        setProperty(ACR_VALUES_SUPPORTED, acrValuesSupported);
    }

    public List<String> getSubjectTypesSupported() {
        return getListStringProperty(SUBJECT_TYPES_SUPPORTED);
    }

    public void setSubjectTypesSupported(List<String> subjectTypesSupported) {
        setProperty(SUBJECT_TYPES_SUPPORTED, subjectTypesSupported);
    }

    public List<String> getIdTokenSigningAlgValuesSupported() {
        return getListStringProperty(ID_TOKEN_SIGNING_ALG_VALUES_SUPPORTED);
    }

    public void setIdTokenSigningAlgValuesSupported(List<String> idTokenSigningAlgValuesSupported) {
        setProperty(ID_TOKEN_SIGNING_ALG_VALUES_SUPPORTED, idTokenSigningAlgValuesSupported);
    }

    public List<String> getIdTokenEncryptionAlgValuesSupported() {
        return getListStringProperty(ID_TOKEN_ENCRYPTION_ALG_VALUES_SUPPORTED);
    }

    public void setIdTokenEncryptionAlgValuesSupported(List<String> idTokenEncryptionAlgValuesSupported) {
        setProperty(ID_TOKEN_ENCRYPTION_ALG_VALUES_SUPPORTED, idTokenEncryptionAlgValuesSupported);
    }

    public List<String> getIdTokenEncryptionEncValuesSupported() {
        return getListStringProperty(ID_TOKEN_ENCRYPTION_ENC_VALUES_SUPPORTED);
    }

    public void setIdTokenEncryptionEncValuesSupported(List<String> idTokenEncryptionEncValuesSupported) {
        setProperty(ID_TOKEN_ENCRYPTION_ENC_VALUES_SUPPORTED, idTokenEncryptionEncValuesSupported);
    }

    public List<String> getUserinfoSigningAlgValuesSupported() {
        return getListStringProperty(USERINFO_SIGNING_ALG_VALUES_SUPPORTED);
    }

    public void setUserinfoSigningAlgValuesSupported(List<String> userinfoSigningAlgValuesSupported) {
        setProperty(USERINFO_SIGNING_ALG_VALUES_SUPPORTED, userinfoSigningAlgValuesSupported);
    }

    public List<String> getUserinfoEncryptionAlgValuesSupported() {
        return getListStringProperty(USERINFO_ENCRYPTION_ALG_VALUES_SUPPORTED);
    }

    public void setUserinfoEncryptionAlgValuesSupported(List<String> userinfoEncryptionAlgValuesSupported) {
        setProperty(USERINFO_ENCRYPTION_ALG_VALUES_SUPPORTED, userinfoEncryptionAlgValuesSupported);
    }

    public List<String> getUserinfoEncryptionEncValuesSupported() {
        return getListStringProperty(USERINFO_ENCRYPTION_ENC_VALUES_SUPPORTED);
    }

    public void setUserinfoEncryptionEncValuesSupported(List<String> userinfoEncryptionEncValuesSupported) {
        setProperty(USERINFO_ENCRYPTION_ENC_VALUES_SUPPORTED, userinfoEncryptionEncValuesSupported);
    }

    public List<String> getRequestObjectSigningAlgValuesSupported() {
        return getListStringProperty(REQUEST_OBJECT_SIGNING_ALG_VALUES_SUPPORTED);
    }

    public void setRequestObjectSigningAlgValuesSupported(List<String> requestObjectSigningAlgValuesSupported) {
        setProperty(REQUEST_OBJECT_SIGNING_ALG_VALUES_SUPPORTED, requestObjectSigningAlgValuesSupported);
    }

    public List<String> getRequestObjectEncryptionAlgValuesSupported() {
        return getListStringProperty(REQUEST_OBJECT_ENCRYPTION_ALG_VALUES_SUPPORTED);
    }

    public void setRequestObjectEncryptionAlgValuesSupported(List<String> requestObjectEncryptionAlgValuesSupported) {
        setProperty(REQUEST_OBJECT_ENCRYPTION_ALG_VALUES_SUPPORTED, requestObjectEncryptionAlgValuesSupported);
    }

    public List<String> getRequestObjectEncryptionEncValuesSupported() {
        return getListStringProperty(REQUEST_OBJECT_ENCRYPTION_ENC_VALUES_SUPPORTED);
    }

    public void setRequestObjectEncryptionEncValuesSupported(List<String> requestObjectEncryptionEncValuesSupported) {
        setProperty(REQUEST_OBJECT_ENCRYPTION_ENC_VALUES_SUPPORTED, requestObjectEncryptionEncValuesSupported);
    }

    public List<String> getDisplayValuesSupported() {
        return getListStringProperty(DISPLAY_VALUES_SUPPORTED);
    }

    public void setDisplayValuesSupported(List<String> displayValuesSupported) {
        setProperty(DISPLAY_VALUES_SUPPORTED, displayValuesSupported);
    }

    public List<String> getClaimTypesSupported() {
        return getListStringProperty(CLAIM_TYPES_SUPPORTED);
    }

    public void setClaimTypesSupported(List<String> claimTypesSupported) {
        setProperty(CLAIM_TYPES_SUPPORTED, claimTypesSupported);
    }

    public List<String> getClaimsSupported() {
        return getListStringProperty(CLAIMS_SUPPORTED);
    }

    public void setClaimsSupported(List<String> claimsSupported) {
        setProperty(CLAIMS_SUPPORTED, claimsSupported);
    }

    public List<String> getClaimsLocalesSupported() {
        return getListStringProperty(CLAIM_LOCALES_SUPPORTED);
    }

    public void setClaimsLocalesSupported(List<String> claimsLocalesSupported) {
        setProperty(CLAIM_LOCALES_SUPPORTED, claimsLocalesSupported);
    }

    public Boolean getClaimsParameterSupported() {
        return getBooleanProperty(CLAIMS_PARAMETER_SUPPORTED);
    }

    public void setClaimsParameterSupported(Boolean claimsParameterSupported) {
        setProperty(CLAIMS_PARAMETER_SUPPORTED, claimsParameterSupported);
    }

    public Boolean getRequestParameterSupported() {
        return getBooleanProperty(REQUEST_PARAMETER_SUPPORTED);
    }

    public void setRequestParameterSupported(Boolean requestParameterSupported) {
        setProperty(REQUEST_PARAMETER_SUPPORTED, requestParameterSupported);
    }

    public Boolean getRequestURIParameterSupported() {
        return getBooleanProperty(REQUEST_URI_PARAMETER_SUPPORTED);
    }

    public void setRequestURIParameterSupported(Boolean requestURIParameterSupported) {
        setProperty(REQUEST_URI_PARAMETER_SUPPORTED, requestURIParameterSupported);
    }

    public Boolean getRequireRequestURIRegistration() {
        return getBooleanProperty(REQUIRE_REQUEST_URI_REGISTRATION);
    }

    public void setRequireRequestURIRegistration(Boolean requireRequestURIRegistration) {
        setProperty(REQUIRE_REQUEST_URI_REGISTRATION, requireRequestURIRegistration);
    }

    public URL getCheckSessionIframe() {
        return getURLProperty(CHECK_SESSION_IFRAME);
    }

    public void setCheckSessionIframe(URL checkSessionIframe) {
        setURLProperty(CHECK_SESSION_IFRAME, checkSessionIframe);
    }

    public URL getEndSessionEndpoint() {
        return getURLProperty(END_SESSION_ENDPOINT);
    }

    public void setEndSessionEndpoint(URL endSessionEndpoint) {
        setURLProperty(END_SESSION_ENDPOINT, endSessionEndpoint);
    }

}