protected Subject doCreateSubject(SubjectContext context) { PrincipalCollection principals = context.resolvePrincipals(); UserPrincipal userPrincipal = getUserPrincipal(principals); Subject result; if (userPrincipal == null) { result = getSubjectFactory().createSubject(context); } else { // TODO the different realm names isn't solved yet :) if (principals instanceof MutablePrincipalCollection && ssoPrincipalProvider != null) { ((MutablePrincipalCollection) principals).add(ssoPrincipalProvider.createSSOPrincipal(userPrincipal), DEFAULT_REALM); } if (userPrincipal.needsTwoStepAuthentication()) { result = twoStepSubjectFactory.createSubject(context); } else { result = getSubjectFactory().createSubject(context); } } return result; }