public SubjectUserInfo createSubjectUserInfo(Collection<Principal> remotingPrincipals) throws IOException { final Subject subject = new Subject(); Collection<Principal> allPrincipals = subject.getPrincipals(); for (Principal userPrincipal : remotingPrincipals) { allPrincipals.add(userPrincipal); if (userPrincipal instanceof UserPrincipal) { allPrincipals.add(new RealmUser(userPrincipal.getName())); } } final String userName = subject.getPrincipals(RealmUser.class).iterator().next().getName(); return new SubjectUserInfo() { public String getUserName() { return userName; } public Subject getSubject() { return subject; } public Collection<Principal> getPrincipals() { return subject.getPrincipals(); } }; } });
public UserInfo createUserInfo(Collection<Principal> remotingPrincipals) throws IOException { Collection<Principal> converted = new ArrayList<Principal>(remotingPrincipals.size()); for (Principal current : remotingPrincipals) { // Just convert the Remoting UserPrincipal to a RealmUser. // The remaining principals will be added to the Subject later. if (current instanceof UserPrincipal) { if (realm != null) { converted.add(new RealmUser(realm.getName(), current.getName())); } else { converted.add(new RealmUser(current.getName())); } } } SubjectUserInfo sui = innerHandler.createSubjectUserInfo(converted); Subject subject = sui.getSubject(); subject.getPrincipals().addAll(remotingPrincipals); return new RealmSubjectUserInfo(sui); } }
@Override protected Group[] getRoleSets() throws LoginException { Collection<Principal> principalCol = new HashSet<Principal>(); principalCol.add(new RealmUser(getUsername())); try { AuthorizingCallbackHandler callbackHandler = getCallbackHandler(); SubjectUserInfo sui = callbackHandler.createSubjectUserInfo(principalCol); SimpleGroup sg = new SimpleGroup("Roles"); Set<RealmRole> roles = sui.getSubject().getPrincipals(RealmRole.class); for (RealmRole current : roles) { sg.addMember(createIdentity(current.getName())); } return new Group[]{sg}; } catch (Exception e) { throw SecurityMessages.MESSAGES.failureCallingSecurityRealm(e.getMessage()); } }
@Override protected Group[] getRoleSets() throws LoginException { Collection<Principal> principalCol = new HashSet<Principal>(); principalCol.add(new RealmUser(getUsername())); try { AuthorizingCallbackHandler callbackHandler = getCallbackHandler(); SubjectUserInfo sui = callbackHandler.createSubjectUserInfo(principalCol); SimpleGroup sg = new SimpleGroup("Roles"); Set<RealmRole> roles = sui.getSubject().getPrincipals(RealmRole.class); for (RealmRole current : roles) { sg.addMember(createIdentity(current.getName())); } return new Group[]{sg}; } catch (Exception e) { throw SecurityMessages.MESSAGES.failureCallingSecurityRealm(e.getMessage()); } }