/** {@inheritDoc} */ @Override @Nonnull protected Subject populateSubject(@Nonnull final Subject subject) { // Override supplied Subject with our own, after transferring over any custom Principals. extContext.getSubject().getPrincipals().addAll(subject.getPrincipals()); return extContext.getSubject(); }
if (extContext == null) { throw new ExternalAuthenticationException("No ExternalAuthenticationContext found"); } else if (extContext.getFlowExecutionUrl() == null) { throw new ExternalAuthenticationException("No flow execution URL found to return control"); extContext.setSubject((Subject) attr); } else { attr = request.getAttribute(PRINCIPAL_KEY); if (attr != null && attr instanceof Principal) { extContext.setPrincipal((Principal) attr); } else { attr = request.getAttribute(PRINCIPAL_NAME_KEY); if (attr != null && attr instanceof String) { extContext.setPrincipalName((String) attr); extContext.setAuthnInstant((DateTime) attr); extContext.getAuthenticatingAuthorities().addAll((Collection<String>) attr); extContext.setAuthnError((String) attr); extContext.setAuthnException((Exception) attr); extContext.setDoNotCache((Boolean) attr); extContext.setPreviousResult((Boolean) attr); response.sendRedirect(extContext.getFlowExecutionUrl());
if (extContext.getAuthnException() != null) { log.info("{} External authentication produced exception", getLogPrefix(), extContext.getAuthnException()); handleError(profileRequestContext, authenticationContext, extContext.getAuthnException(), AuthnEventIds.AUTHN_EXCEPTION); recordFailure(); return; } else if (extContext.getAuthnError() != null) { log.info("{} External authentication produced error message: {}", getLogPrefix(), extContext.getAuthnError()); handleError(profileRequestContext, authenticationContext, extContext.getAuthnError(), AuthnEventIds.AUTHN_EXCEPTION); recordFailure(); if (extContext.getSubject() != null) { log.info("{} External authentication succeeded for Subject: {}", getLogPrefix(), extContext.getSubject().getPrincipals()); } else if (extContext.getPrincipal() != null) { log.info("{} External authentication succeeded for Principal: {}", getLogPrefix(), extContext.getPrincipal()); extContext.setSubject(new Subject(false, Collections.singleton(extContext.getPrincipal()), Collections.emptySet(), Collections.emptySet())); } else if (extContext.getPrincipalName() != null) { log.info("{} External authentication succeeded for user: {}", getLogPrefix(), extContext.getPrincipalName()); extContext.setSubject(new Subject(false, Collections.singleton(new UsernamePrincipal(extContext.getPrincipalName())), Collections.emptySet(), Collections.emptySet())); } else {