Search in sources :

Example 11 with ReadOperation

use of org.springframework.boot.actuate.endpoint.annotation.ReadOperation in project cas by apereo.

the class DuoSecurityPingEndpoint method pingDuo.

/**
 * Ping duo and return availability result.
 *
 * @param providerId the provider id, if any.
 * @return the map
 */
@ReadOperation(produces = MediaType.APPLICATION_JSON_VALUE)
@Operation(summary = "Ping Duo Security given the provider id", parameters = { @Parameter(name = "providerId") })
public Map<?, ?> pingDuo(@Nullable final String providerId) {
    val resolver = SpringExpressionLanguageValueResolver.getInstance();
    val results = new LinkedHashMap<>();
    val providers = applicationContext.getBeansOfType(DuoSecurityMultifactorAuthenticationProvider.class).values();
    providers.stream().filter(Objects::nonNull).map(DuoSecurityMultifactorAuthenticationProvider.class::cast).filter(provider -> StringUtils.isBlank(providerId) || provider.matches(providerId)).forEach(p -> {
        val duoService = p.getDuoAuthenticationService();
        val available = duoService.ping();
        results.put(p.getId(), CollectionUtils.wrap("duoApiHost", resolver.resolve(duoService.getProperties().getDuoApiHost()), "name", p.getFriendlyName(), "availability", available));
    });
    return results;
}
Also used : lombok.val(lombok.val) DuoSecurityMultifactorAuthenticationProvider(org.apereo.cas.adaptors.duo.authn.DuoSecurityMultifactorAuthenticationProvider) CasConfigurationProperties(org.apereo.cas.configuration.CasConfigurationProperties) ReadOperation(org.springframework.boot.actuate.endpoint.annotation.ReadOperation) Endpoint(org.springframework.boot.actuate.endpoint.annotation.Endpoint) MediaType(org.springframework.http.MediaType) lombok.val(lombok.val) StringUtils(org.apache.commons.lang3.StringUtils) ApplicationContext(org.springframework.context.ApplicationContext) DuoSecurityMultifactorAuthenticationProvider(org.apereo.cas.adaptors.duo.authn.DuoSecurityMultifactorAuthenticationProvider) BaseCasActuatorEndpoint(org.apereo.cas.web.BaseCasActuatorEndpoint) Parameter(io.swagger.v3.oas.annotations.Parameter) LinkedHashMap(java.util.LinkedHashMap) Objects(java.util.Objects) Operation(io.swagger.v3.oas.annotations.Operation) SpringExpressionLanguageValueResolver(org.apereo.cas.util.spring.SpringExpressionLanguageValueResolver) Map(java.util.Map) CollectionUtils(org.apereo.cas.util.CollectionUtils) Nullable(org.springframework.lang.Nullable) LinkedHashMap(java.util.LinkedHashMap) ReadOperation(org.springframework.boot.actuate.endpoint.annotation.ReadOperation) ReadOperation(org.springframework.boot.actuate.endpoint.annotation.ReadOperation) Operation(io.swagger.v3.oas.annotations.Operation)

Example 12 with ReadOperation

use of org.springframework.boot.actuate.endpoint.annotation.ReadOperation in project cas by apereo.

the class DuoSecurityUserAccountStatusEndpoint method fetchAccountStatus.

/**
 * Fetch account status map.
 *
 * @param username   the username
 * @param providerId the provider id
 * @return the map
 */
@ReadOperation(produces = MediaType.APPLICATION_JSON_VALUE)
@Operation(summary = "Fetch Duo Security user account status", parameters = { @Parameter(name = "username", required = true), @Parameter(name = "providerId") })
public Map<?, ?> fetchAccountStatus(@Selector final String username, @Nullable final String providerId) {
    val resolver = SpringExpressionLanguageValueResolver.getInstance();
    val results = new LinkedHashMap<>();
    val providers = applicationContext.getBeansOfType(DuoSecurityMultifactorAuthenticationProvider.class).values();
    providers.stream().filter(Objects::nonNull).map(DuoSecurityMultifactorAuthenticationProvider.class::cast).filter(provider -> StringUtils.isBlank(providerId) || provider.matches(providerId)).forEach(p -> {
        val duoService = p.getDuoAuthenticationService();
        val accountStatus = duoService.getUserAccount(username);
        results.put(p.getId(), CollectionUtils.wrap("duoApiHost", resolver.resolve(duoService.getProperties().getDuoApiHost()), "name", p.getFriendlyName(), "accountStatus", accountStatus));
    });
    return results;
}
Also used : lombok.val(lombok.val) DuoSecurityMultifactorAuthenticationProvider(org.apereo.cas.adaptors.duo.authn.DuoSecurityMultifactorAuthenticationProvider) CasConfigurationProperties(org.apereo.cas.configuration.CasConfigurationProperties) ReadOperation(org.springframework.boot.actuate.endpoint.annotation.ReadOperation) Endpoint(org.springframework.boot.actuate.endpoint.annotation.Endpoint) MediaType(org.springframework.http.MediaType) lombok.val(lombok.val) StringUtils(org.apache.commons.lang3.StringUtils) ApplicationContext(org.springframework.context.ApplicationContext) DuoSecurityMultifactorAuthenticationProvider(org.apereo.cas.adaptors.duo.authn.DuoSecurityMultifactorAuthenticationProvider) BaseCasActuatorEndpoint(org.apereo.cas.web.BaseCasActuatorEndpoint) Parameter(io.swagger.v3.oas.annotations.Parameter) LinkedHashMap(java.util.LinkedHashMap) Objects(java.util.Objects) Operation(io.swagger.v3.oas.annotations.Operation) SpringExpressionLanguageValueResolver(org.apereo.cas.util.spring.SpringExpressionLanguageValueResolver) Map(java.util.Map) CollectionUtils(org.apereo.cas.util.CollectionUtils) Nullable(org.springframework.lang.Nullable) Selector(org.springframework.boot.actuate.endpoint.annotation.Selector) LinkedHashMap(java.util.LinkedHashMap) ReadOperation(org.springframework.boot.actuate.endpoint.annotation.ReadOperation) ReadOperation(org.springframework.boot.actuate.endpoint.annotation.ReadOperation) Operation(io.swagger.v3.oas.annotations.Operation)

Example 13 with ReadOperation

use of org.springframework.boot.actuate.endpoint.annotation.ReadOperation in project spring-cloud-stream by spring-cloud.

the class ChannelsEndpoint method channels.

@ReadOperation
public Map<String, Object> channels() {
    ChannelsMetaData map = new ChannelsMetaData();
    Map<String, BindingProperties> inputs = map.getInputs();
    Map<String, BindingProperties> outputs = map.getOutputs();
    for (Bindable factory : this.adapters) {
        for (String name : factory.getInputs()) {
            inputs.put(name, this.properties.getBindingProperties(name));
        }
        for (String name : factory.getOutputs()) {
            outputs.put(name, this.properties.getBindingProperties(name));
        }
    }
    return new ObjectMapper().convertValue(map, new TypeReference<Map<String, Object>>() {
    });
}
Also used : BindingProperties(org.springframework.cloud.stream.config.BindingProperties) Bindable(org.springframework.cloud.stream.binding.Bindable) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) ReadOperation(org.springframework.boot.actuate.endpoint.annotation.ReadOperation)

Example 14 with ReadOperation

use of org.springframework.boot.actuate.endpoint.annotation.ReadOperation in project cas by apereo.

the class SamlValidateEndpoint method handle.

/**
 * Handle validation request and produce saml1 payload.
 *
 * @param username the username
 * @param password the password
 * @param service  the service
 * @return the map
 */
@ReadOperation
@Operation(summary = "Handle validation request and produce saml1 payload.", parameters = { @Parameter(name = "username", required = true), @Parameter(name = "password", required = true), @Parameter(name = "service", required = true) })
public Map<String, Object> handle(final String username, final String password, final String service) {
    val credential = new UsernamePasswordCredential(username, password);
    val selectedService = this.serviceFactory.createService(service);
    val result = this.authenticationSystemSupport.finalizeAuthenticationTransaction(selectedService, credential);
    val authentication = result.getAuthentication();
    val registeredService = this.servicesManager.findServiceBy(selectedService);
    val audit = AuditableContext.builder().service(selectedService).authentication(authentication).registeredService(registeredService).build();
    val accessResult = registeredServiceAccessStrategyEnforcer.execute(audit);
    accessResult.throwExceptionIfNeeded();
    val principal = authentication.getPrincipal();
    val context = RegisteredServiceAttributeReleasePolicyContext.builder().registeredService(registeredService).service(selectedService).principal(principal).build();
    val attributesToRelease = registeredService.getAttributeReleasePolicy().getAttributes(context);
    val principalId = registeredService.getUsernameAttributeProvider().resolveUsername(principal, selectedService, registeredService);
    val modifiedPrincipal = this.principalFactory.createPrincipal(principalId, attributesToRelease);
    val builder = DefaultAuthenticationBuilder.newInstance(authentication);
    builder.setPrincipal(modifiedPrincipal);
    val finalAuthentication = builder.build();
    val samlResponse = this.samlResponseBuilder.createResponse(selectedService.getId(), selectedService);
    samlResponseBuilder.prepareSuccessfulResponse(samlResponse, selectedService, finalAuthentication, principal, finalAuthentication.getAttributes(), principal.getAttributes());
    val resValidation = new LinkedHashMap<String, Object>();
    val encoded = SamlUtils.transformSamlObject(this.openSamlConfigBean, samlResponse).toString();
    resValidation.put(CasViewConstants.MODEL_ATTRIBUTE_NAME_ASSERTION, encoded);
    resValidation.put(CasViewConstants.MODEL_ATTRIBUTE_NAME_SERVICE, selectedService);
    resValidation.put("registeredService", registeredService);
    return resValidation;
}
Also used : lombok.val(lombok.val) UsernamePasswordCredential(org.apereo.cas.authentication.credential.UsernamePasswordCredential) LinkedHashMap(java.util.LinkedHashMap) ReadOperation(org.springframework.boot.actuate.endpoint.annotation.ReadOperation) ReadOperation(org.springframework.boot.actuate.endpoint.annotation.ReadOperation) Operation(io.swagger.v3.oas.annotations.Operation)

Example 15 with ReadOperation

use of org.springframework.boot.actuate.endpoint.annotation.ReadOperation in project cas by apereo.

the class TicketExpirationPoliciesEndpoint method handle.

/**
 * Produce expiration policies.
 *
 * @param serviceId the service
 * @return the map
 * @throws Exception the exception
 */
@ReadOperation
@Operation(summary = "Produce expiration policies given an optional service id", parameters = { @Parameter(name = "serviceId") })
public Map<String, String> handle(@Nullable final String serviceId) throws Exception {
    val model = new HashMap<String, String>();
    expirationPolicyBuilders.forEach(Unchecked.consumer(builder -> {
        val policy = builder.buildTicketExpirationPolicy();
        val details = getTicketExpirationPolicyDetails(policy);
        model.put(builder.getTicketType().getName(), details);
    }));
    val registeredService = StringUtils.isNotBlank(serviceId) ? NumberUtils.isCreatable(serviceId) ? servicesManager.findServiceBy(Long.parseLong(serviceId)) : servicesManager.findServiceBy(webApplicationServiceFactory.createService(serviceId)) : null;
    Optional.ofNullable(registeredService).map(RegisteredService::getTicketGrantingTicketExpirationPolicy).map(RegisteredServiceTicketGrantingTicketExpirationPolicy::toExpirationPolicy).filter(Optional::isPresent).map(Optional::get).ifPresent(Unchecked.consumer(policy -> {
        val details = getTicketExpirationPolicyDetails(policy);
        model.put(TicketGrantingTicket.class.getName().concat(registeredService.getName()), details);
    }));
    Optional.ofNullable(registeredService).map(RegisteredService::getServiceTicketExpirationPolicy).ifPresent(Unchecked.consumer(policy -> {
        val details = getTicketExpirationPolicyDetails(policy);
        model.put(ServiceTicket.class.getName().concat(registeredService.getName()), details);
    }));
    Optional.ofNullable(registeredService).map(RegisteredService::getProxyGrantingTicketExpirationPolicy).ifPresent(Unchecked.consumer(policy -> {
        val details = getTicketExpirationPolicyDetails(policy);
        model.put(ProxyGrantingTicket.class.getName().concat(registeredService.getName()), details);
    }));
    Optional.ofNullable(registeredService).map(RegisteredService::getProxyTicketExpirationPolicy).ifPresent(Unchecked.consumer(policy -> {
        val details = getTicketExpirationPolicyDetails(policy);
        model.put(ProxyTicket.class.getName().concat(registeredService.getName()), details);
    }));
    return model;
}
Also used : lombok.val(lombok.val) CasConfigurationProperties(org.apereo.cas.configuration.CasConfigurationProperties) Getter(lombok.Getter) ReadOperation(org.springframework.boot.actuate.endpoint.annotation.ReadOperation) HashMap(java.util.HashMap) StringUtils(org.apache.commons.lang3.StringUtils) ExpirationPolicyBuilder(org.apereo.cas.ticket.ExpirationPolicyBuilder) RegisteredServiceTicketGrantingTicketExpirationPolicy(org.apereo.cas.services.RegisteredServiceTicketGrantingTicketExpirationPolicy) WebApplicationService(org.apereo.cas.authentication.principal.WebApplicationService) Operation(io.swagger.v3.oas.annotations.Operation) Map(java.util.Map) Nullable(org.springframework.lang.Nullable) TicketGrantingTicket(org.apereo.cas.ticket.TicketGrantingTicket) ServiceFactory(org.apereo.cas.authentication.principal.ServiceFactory) ServicesManager(org.apereo.cas.services.ServicesManager) Unchecked(org.jooq.lambda.Unchecked) Endpoint(org.springframework.boot.actuate.endpoint.annotation.Endpoint) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) lombok.val(lombok.val) ProxyGrantingTicket(org.apereo.cas.ticket.proxy.ProxyGrantingTicket) RegisteredService(org.apereo.cas.services.RegisteredService) BaseCasActuatorEndpoint(org.apereo.cas.web.BaseCasActuatorEndpoint) Serializable(java.io.Serializable) Parameter(io.swagger.v3.oas.annotations.Parameter) List(java.util.List) ProxyTicket(org.apereo.cas.ticket.proxy.ProxyTicket) JacksonObjectMapperFactory(org.apereo.cas.util.serialization.JacksonObjectMapperFactory) NumberUtils(org.apache.commons.lang3.math.NumberUtils) Optional(java.util.Optional) ServiceTicket(org.apereo.cas.ticket.ServiceTicket) RegisteredService(org.apereo.cas.services.RegisteredService) Optional(java.util.Optional) HashMap(java.util.HashMap) TicketGrantingTicket(org.apereo.cas.ticket.TicketGrantingTicket) ServiceTicket(org.apereo.cas.ticket.ServiceTicket) ProxyGrantingTicket(org.apereo.cas.ticket.proxy.ProxyGrantingTicket) ProxyTicket(org.apereo.cas.ticket.proxy.ProxyTicket) ReadOperation(org.springframework.boot.actuate.endpoint.annotation.ReadOperation) ReadOperation(org.springframework.boot.actuate.endpoint.annotation.ReadOperation) Operation(io.swagger.v3.oas.annotations.Operation)

Aggregations

ReadOperation (org.springframework.boot.actuate.endpoint.annotation.ReadOperation)27 Operation (io.swagger.v3.oas.annotations.Operation)14 lombok.val (lombok.val)14 HashMap (java.util.HashMap)10 LinkedHashMap (java.util.LinkedHashMap)10 Map (java.util.Map)9 CasConfigurationProperties (org.apereo.cas.configuration.CasConfigurationProperties)9 BaseCasActuatorEndpoint (org.apereo.cas.web.BaseCasActuatorEndpoint)9 Endpoint (org.springframework.boot.actuate.endpoint.annotation.Endpoint)9 Parameter (io.swagger.v3.oas.annotations.Parameter)8 StringUtils (org.apache.commons.lang3.StringUtils)8 Nullable (org.springframework.lang.Nullable)6 ApplicationContext (org.springframework.context.ApplicationContext)5 Collectors (java.util.stream.Collectors)4 ArrayList (java.util.ArrayList)3 List (java.util.List)3 Objects (java.util.Objects)3 StreamSupport (java.util.stream.StreamSupport)3 Slf4j (lombok.extern.slf4j.Slf4j)3 CollectionUtils (org.apereo.cas.util.CollectionUtils)3