package org.apereo.cas.oidc.discovery; import org.apereo.cas.configuration.CasConfigurationProperties; import org.apereo.cas.configuration.model.support.oidc.OidcProperties; import org.apereo.cas.support.oauth.OAuth20GrantTypes; import org.apereo.cas.support.oauth.OAuth20ResponseTypes; import org.springframework.beans.factory.FactoryBean; import java.util.Arrays; import java.util.Collections; /** * This is {@link OidcServerDiscoverySettingsFactory}. * * @author Misagh Moayyed * @since 5.1.0 */ public class OidcServerDiscoverySettingsFactory implements FactoryBean<OidcServerDiscoverySettings> { private final CasConfigurationProperties casProperties; public OidcServerDiscoverySettingsFactory(final CasConfigurationProperties casProperties) { this.casProperties = casProperties; } @Override public OidcServerDiscoverySettings getObject() throws Exception { final OidcProperties oidc = casProperties.getAuthn().getOidc(); final OidcServerDiscoverySettings discoveryProperties = new OidcServerDiscoverySettings(casProperties, oidc.getIssuer()); discoveryProperties.setClaimsSupported(oidc.getClaims()); discoveryProperties.setScopesSupported(oidc.getScopes()); discoveryProperties.setResponseTypesSupported( Arrays.asList(OAuth20ResponseTypes.CODE.getType(), OAuth20ResponseTypes.TOKEN.getType(), OAuth20ResponseTypes.IDTOKEN_TOKEN.getType())); discoveryProperties.setSubjectTypesSupported(oidc.getSubjectTypes()); discoveryProperties.setClaimTypesSupported(Collections.singletonList("normal")); discoveryProperties.setGrantTypesSupported( Arrays.asList(OAuth20GrantTypes.AUTHORIZATION_CODE.getType(), OAuth20GrantTypes.PASSWORD.getType(), OAuth20GrantTypes.REFRESH_TOKEN.getType())); discoveryProperties.setIdTokenSigningAlgValuesSupported(Arrays.asList("none", "RS256")); return discoveryProperties; } @Override public Class<?> getObjectType() { return OidcServerDiscoverySettings.class; } @Override public boolean isSingleton() { return true; } }