/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* @test
* @bug 4391445
* @summary JAAS KeyStoreLoginModule logout doesn't
* handle read-only subjects correctly
*
* XXX Note this test relies on the KeyStore used by OptionTest
*/
public class ReadOnly {
private static final char[] STORE_PASS = new char[]
{ 's', 't', 'o', 'r', 'e', 'P', 'a', 's', 's' }; // sync with file
private static final char[] KEY_PASS =
{ 'k', 'e', 'y', 'P', 'a', 's', 's' }; // sync with file
init();
testReadOnly();
}
TEST +
".keystore");
TEST +
".storePass");
TEST +
".keyPass");
}
// setup
KeyStoreLoginModule m = new KeyStoreLoginModule();
// login first
m.login();
m.commit();
// test regular logout
m.logout();
throw new SecurityException("expected no principals");
}
throw new SecurityException("expected no public creds");
}
throw new SecurityException("expected no private creds");
}
// login again
m.login();
m.commit();
// set subject to read-only
s.setReadOnly();
// try to logout
try {
m.logout();
throw new SecurityException("expected login exception");
} catch (LoginException le) {
// good
}
}
}