Search in sources :

Example 1 with BasicIdentifiableCredential

use of org.apereo.cas.authentication.credential.BasicIdentifiableCredential in project cas by apereo.

the class OAuth20DefaultCasAuthenticationBuilder method build.

@Override
public Authentication build(final UserProfile profile, final OAuthRegisteredService registeredService, final WebContext context, final Service service) {
    val attrs = new HashMap<>(profile.getAttributes());
    val profileAttributes = CoreAuthenticationUtils.convertAttributeValuesToMultiValuedObjects(attrs);
    val newPrincipal = principalFactory.createPrincipal(profile.getId(), profileAttributes);
    LOGGER.debug("Created final principal [{}] after filtering attributes based on [{}]", newPrincipal, registeredService);
    val authenticator = profile.getClass().getCanonicalName();
    val metadata = new BasicCredentialMetaData(new BasicIdentifiableCredential(profile.getId()));
    val handlerResult = new DefaultAuthenticationHandlerExecutionResult(authenticator, metadata, newPrincipal, new ArrayList<>(0));
    val scopes = OAuth20Utils.getRequestedScopes(context);
    val state = context.getRequestParameter(OAuth20Constants.STATE).map(String::valueOf).or(() -> OAuth20Utils.getRequestParameter(context, OAuth20Constants.STATE)).orElse(StringUtils.EMPTY);
    val nonce = context.getRequestParameter(OAuth20Constants.NONCE).map(String::valueOf).or(() -> OAuth20Utils.getRequestParameter(context, OAuth20Constants.NONCE)).orElse(StringUtils.EMPTY);
    LOGGER.debug("OAuth [{}] is [{}], and [{}] is [{}]", OAuth20Constants.STATE, state, OAuth20Constants.NONCE, nonce);
    val builder = DefaultAuthenticationBuilder.newInstance();
    if (profile instanceof BasicUserProfile) {
        val authenticationAttributes = ((BasicUserProfile) profile).getAuthenticationAttributes();
        builder.addAttributes(authenticationAttributes);
    }
    builder.addAttribute("permissions", new LinkedHashSet<>(profile.getPermissions())).addAttribute("roles", new LinkedHashSet<>(profile.getRoles())).addAttribute("scopes", scopes).addAttribute(OAuth20Constants.STATE, state).addAttribute(OAuth20Constants.NONCE, nonce).addAttribute(OAuth20Constants.CLIENT_ID, registeredService.getClientId()).addCredential(metadata).setPrincipal(newPrincipal).setAuthenticationDate(ZonedDateTime.now(ZoneOffset.UTC)).addSuccess(profile.getClass().getCanonicalName(), handlerResult);
    context.getRequestParameter(OAuth20Constants.ACR_VALUES).ifPresent(value -> builder.addAttribute(OAuth20Constants.ACR_VALUES, value));
    return builder.build();
}
Also used : lombok.val(lombok.val) LinkedHashSet(java.util.LinkedHashSet) HashMap(java.util.HashMap) BasicIdentifiableCredential(org.apereo.cas.authentication.credential.BasicIdentifiableCredential) BasicUserProfile(org.pac4j.core.profile.BasicUserProfile) DefaultAuthenticationHandlerExecutionResult(org.apereo.cas.authentication.DefaultAuthenticationHandlerExecutionResult) BasicCredentialMetaData(org.apereo.cas.authentication.metadata.BasicCredentialMetaData)

Example 2 with BasicIdentifiableCredential

use of org.apereo.cas.authentication.credential.BasicIdentifiableCredential in project cas by apereo.

the class CasResolveAttributesReportEndpoint method resolvePrincipalAttributes.

/**
 * Resolve principal attributes map.
 *
 * @param uid the uid
 * @return the map
 */
@ReadOperation
@Operation(summary = "Resolve principal attributes for user", parameters = { @Parameter(name = "uid", required = true) })
public Map<String, Object> resolvePrincipalAttributes(@Selector final String uid) {
    val p = defaultPrincipalResolver.getObject().resolve(new BasicIdentifiableCredential(uid));
    val map = new HashMap<String, Object>();
    map.put("uid", p.getId());
    map.put("attributes", p.getAttributes());
    return map;
}
Also used : lombok.val(lombok.val) HashMap(java.util.HashMap) BasicIdentifiableCredential(org.apereo.cas.authentication.credential.BasicIdentifiableCredential) ReadOperation(org.springframework.boot.actuate.endpoint.annotation.ReadOperation) ReadOperation(org.springframework.boot.actuate.endpoint.annotation.ReadOperation) Operation(io.swagger.v3.oas.annotations.Operation)

Example 3 with BasicIdentifiableCredential

use of org.apereo.cas.authentication.credential.BasicIdentifiableCredential in project cas by apereo.

the class SendPasswordResetInstructionsAction method sendPasswordResetEmailToAccount.

/**
 * Send password reset email to account.
 *
 * @param username       the username
 * @param to             the to
 * @param url            the url
 * @param requestContext the request context
 * @return true /false
 */
protected boolean sendPasswordResetEmailToAccount(final String username, final String to, final String url, final RequestContext requestContext) {
    if (StringUtils.isNotBlank(to)) {
        val reset = casProperties.getAuthn().getPm().getReset().getMail();
        val parameters = CollectionUtils.<String, Object>wrap("url", url);
        val credential = new BasicIdentifiableCredential();
        credential.setId(username);
        val person = principalResolver.resolve(credential);
        FunctionUtils.doIfNotNull(person, principal -> parameters.put("principal", principal));
        val request = WebUtils.getHttpServletRequestFromExternalWebflowContext(requestContext);
        val text = EmailMessageBodyBuilder.builder().properties(reset).parameters(parameters).locale(Optional.ofNullable(request.getLocale())).build().produce();
        LOGGER.debug("Sending password reset URL [{}] via email to [{}] for username [{}]", url, to, username);
        return this.communicationsManager.email(reset, to, text);
    }
    return false;
}
Also used : lombok.val(lombok.val) BasicIdentifiableCredential(org.apereo.cas.authentication.credential.BasicIdentifiableCredential)

Example 4 with BasicIdentifiableCredential

use of org.apereo.cas.authentication.credential.BasicIdentifiableCredential in project cas by apereo.

the class SendForgotUsernameInstructionsAction method sendForgotUsernameEmailToAccount.

/**
 * Send forgot username email to account.
 *
 * @param query          the query
 * @param requestContext the request context
 * @return the boolean
 */
protected boolean sendForgotUsernameEmailToAccount(final PasswordManagementQuery query, final RequestContext requestContext) {
    val parameters = CollectionUtils.<String, Object>wrap("email", query.getEmail());
    val credential = new BasicIdentifiableCredential();
    credential.setId(query.getUsername());
    val person = principalResolver.resolve(credential);
    FunctionUtils.doIf(person != null && !person.getClass().equals(NullPrincipal.class), principal -> {
        parameters.put("principal", principal);
        requestContext.getFlashScope().put(Principal.class.getName(), person);
    }).accept(person);
    val reset = casProperties.getAuthn().getPm().getForgotUsername().getMail();
    val request = WebUtils.getHttpServletRequestFromExternalWebflowContext(requestContext);
    val body = EmailMessageBodyBuilder.builder().properties(reset).locale(Optional.ofNullable(request.getLocale())).parameters(parameters).build().produce();
    return this.communicationsManager.email(reset, query.getEmail(), body);
}
Also used : lombok.val(lombok.val) CasConfigurationProperties(org.apereo.cas.configuration.CasConfigurationProperties) AuditPrincipalResolvers(org.apereo.cas.audit.AuditPrincipalResolvers) RequiredArgsConstructor(lombok.RequiredArgsConstructor) EmailValidator(org.apache.commons.validator.routines.EmailValidator) StringUtils(org.apache.commons.lang3.StringUtils) RequestContext(org.springframework.webflow.execution.RequestContext) AuditActionResolvers(org.apereo.cas.audit.AuditActionResolvers) CommunicationsManager(org.apereo.cas.notifications.CommunicationsManager) BasicIdentifiableCredential(org.apereo.cas.authentication.credential.BasicIdentifiableCredential) FunctionUtils(org.apereo.cas.util.function.FunctionUtils) CasWebflowConstants(org.apereo.cas.web.flow.CasWebflowConstants) CollectionUtils(org.apereo.cas.util.CollectionUtils) NullPrincipal(org.apereo.cas.authentication.principal.NullPrincipal) Audit(org.apereo.inspektr.audit.annotation.Audit) PrincipalResolver(org.apereo.cas.authentication.principal.PrincipalResolver) lombok.val(lombok.val) EventFactorySupport(org.springframework.webflow.action.EventFactorySupport) Slf4j(lombok.extern.slf4j.Slf4j) PasswordManagementService(org.apereo.cas.pm.PasswordManagementService) EmailMessageBodyBuilder(org.apereo.cas.notifications.mail.EmailMessageBodyBuilder) AuditResourceResolvers(org.apereo.cas.audit.AuditResourceResolvers) AuditableActions(org.apereo.cas.audit.AuditableActions) Optional(java.util.Optional) PasswordManagementQuery(org.apereo.cas.pm.PasswordManagementQuery) Principal(org.apereo.cas.authentication.principal.Principal) WebUtils(org.apereo.cas.web.support.WebUtils) BaseCasWebflowAction(org.apereo.cas.web.flow.actions.BaseCasWebflowAction) Event(org.springframework.webflow.execution.Event) BasicIdentifiableCredential(org.apereo.cas.authentication.credential.BasicIdentifiableCredential)

Example 5 with BasicIdentifiableCredential

use of org.apereo.cas.authentication.credential.BasicIdentifiableCredential in project cas by apereo.

the class OAuth20UserProfileEndpointControllerTests method getAuthentication.

protected static Authentication getAuthentication(final Principal principal) {
    val metadata = new BasicCredentialMetaData(new BasicIdentifiableCredential(principal.getId()));
    val handlerResult = new DefaultAuthenticationHandlerExecutionResult(principal.getClass().getCanonicalName(), metadata, principal, new ArrayList<>());
    return DefaultAuthenticationBuilder.newInstance().setPrincipal(principal).addCredential(metadata).setAuthenticationDate(ZonedDateTime.now(ZoneId.systemDefault())).addSuccess(principal.getClass().getCanonicalName(), handlerResult).build();
}
Also used : lombok.val(lombok.val) BasicIdentifiableCredential(org.apereo.cas.authentication.credential.BasicIdentifiableCredential) DefaultAuthenticationHandlerExecutionResult(org.apereo.cas.authentication.DefaultAuthenticationHandlerExecutionResult) BasicCredentialMetaData(org.apereo.cas.authentication.metadata.BasicCredentialMetaData)

Aggregations

lombok.val (lombok.val)7 BasicIdentifiableCredential (org.apereo.cas.authentication.credential.BasicIdentifiableCredential)7 DefaultAuthenticationHandlerExecutionResult (org.apereo.cas.authentication.DefaultAuthenticationHandlerExecutionResult)3 BasicCredentialMetaData (org.apereo.cas.authentication.metadata.BasicCredentialMetaData)3 HashMap (java.util.HashMap)2 Operation (io.swagger.v3.oas.annotations.Operation)1 LinkedHashSet (java.util.LinkedHashSet)1 Optional (java.util.Optional)1 RequiredArgsConstructor (lombok.RequiredArgsConstructor)1 Slf4j (lombok.extern.slf4j.Slf4j)1 StringUtils (org.apache.commons.lang3.StringUtils)1 EmailValidator (org.apache.commons.validator.routines.EmailValidator)1 AuditActionResolvers (org.apereo.cas.audit.AuditActionResolvers)1 AuditPrincipalResolvers (org.apereo.cas.audit.AuditPrincipalResolvers)1 AuditResourceResolvers (org.apereo.cas.audit.AuditResourceResolvers)1 AuditableActions (org.apereo.cas.audit.AuditableActions)1 NullPrincipal (org.apereo.cas.authentication.principal.NullPrincipal)1 Principal (org.apereo.cas.authentication.principal.Principal)1 PrincipalResolver (org.apereo.cas.authentication.principal.PrincipalResolver)1 CasConfigurationProperties (org.apereo.cas.configuration.CasConfigurationProperties)1