/* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * * Copyright (c) 2009 Sun Microsystems Inc. All Rights Reserved * * The contents of this file are subject to the terms * of the Common Development and Distribution License * (the License). You may not use this file except in * compliance with the License. * * You can obtain a copy of the License at * https://opensso.dev.java.net/public/CDDLv1.0.html or * opensso/legal/CDDLv1.0.txt * See the License for the specific language governing * permission and limitations under the License. * * When distributing Covered Code, include this CDDL * Header Notice in each file and include the License file * at opensso/legal/CDDLv1.0.txt. * If applicable, add the following below the CDDL Header, * with the fields enclosed by brackets [] replaced by * your own identifying information: * "Portions Copyrighted [year] [name of copyright owner]" * * $Id: AuthUtils.java,v 1.1 2009/11/12 18:37:36 veiming Exp $ * * Portions Copyright 2015 ForgeRock AS. */ package com.sun.identity.entitlement.util; import com.iplanet.sso.SSOToken; import com.sun.identity.authentication.AuthContext; import com.sun.identity.rest.AuthSPrincipal; import java.security.Principal; import java.util.HashSet; import java.util.Set; import javax.security.auth.Subject; import javax.security.auth.callback.Callback; import javax.security.auth.callback.NameCallback; import javax.security.auth.callback.PasswordCallback; public class AuthUtils { private AuthUtils() { } public static SSOToken authenticate( String realm, String userName, String password ) throws Exception { AuthContext lc = new AuthContext(realm); lc.login(); while (lc.hasMoreRequirements()) { Callback[] callbacks = lc.getRequirements(); for (int i = 0; i < callbacks.length; i++) { if (callbacks[i] instanceof NameCallback) { NameCallback nc = (NameCallback) callbacks[i]; nc.setName(userName); } else if (callbacks[i] instanceof PasswordCallback) { PasswordCallback pc = (PasswordCallback) callbacks[i]; pc.setPassword(password.toCharArray()); } else { throw new Exception("No callback"); } } lc.submitRequirements(callbacks); } return (lc.getStatus() != AuthContext.Status.SUCCESS) ? null : lc.getSSOToken(); } public static Subject createSubject(String uuid) { Set userPrincipals = new HashSet(2); userPrincipals.add(new AuthSPrincipal(uuid)); return new Subject(false, userPrincipals, new HashSet(), new HashSet()); } }