001: /*
002: * Danet GmbH
003: * Beratung und Software-Entwicklung
004: * Geschäftstelle AN
005: *
006: * $Id: UTLoginContext.java,v 1.4 2007/03/27 21:59:44 mlipp Exp $
007: *
008: * $Log: UTLoginContext.java,v $
009: * Revision 1.4 2007/03/27 21:59:44 mlipp
010: * Fixed lots of checkstyle warnings.
011: *
012: * Revision 1.3 2006/10/13 13:58:32 drmlipp
013: * Adapted to new environment.
014: *
015: * Revision 1.2 2006/06/22 21:57:29 mlipp
016: * Unittest running again.
017: *
018: * Revision 1.1.1.2 2003/08/26 13:23:24 drmlipp
019: * Update to 1.0rc2
020: *
021: * Revision 1.4 2003/08/25 15:18:24 lipp
022: * Fixed changes checked in by mistake.
023: *
024: * Revision 1.3 2003/08/25 14:23:08 lipp
025: * Better support for different application servers in the build process.
026: *
027: * Revision 1.2 2003/05/22 11:36:22 lipp
028: * Cleaned up usage of security domains.
029: *
030: * Revision 1.1 2003/04/26 16:46:55 lipp
031: * Made unittests and systemtests coexist in eclipse.
032: *
033: * Revision 1.2 2003/04/24 20:51:21 lipp
034: * Fixed some warnings.
035: *
036: * Revision 1.1 2003/04/16 19:25:04 lipp
037: * Adapted to jdk 1.4
038: *
039: * Revision 1.2 2002/11/15 15:41:53 montag
040: * New session ejb Util.
041: *
042: * Revision 1.1 2001/12/10 15:27:51 lipp
043: * Adapting to secure beans.
044: *
045: */
046:
047: package common;
048:
049: import java.io.IOException;
050:
051: import javax.security.auth.callback.Callback;
052: import javax.security.auth.callback.UnsupportedCallbackException;
053: import javax.security.auth.callback.CallbackHandler;
054: import javax.security.auth.callback.TextOutputCallback;
055: import javax.security.auth.callback.NameCallback;
056: import javax.security.auth.callback.PasswordCallback;
057: import javax.security.auth.login.LoginContext;
058: import javax.security.auth.login.LoginException;
059:
060: /**
061: * Simple login context for unit tests.
062: */
063: public class UTLoginContext extends LoginContext {
064:
065: public static final String USERNAME = "ML";
066: public static final String PASSWORD = "ML";
067:
068: private static class CBH implements CallbackHandler {
069: public void handle(Callback[] callbacks)
070: throws UnsupportedCallbackException, IOException {
071: for (int i = 0; i < callbacks.length; i++) {
072: if (callbacks[i] instanceof TextOutputCallback) {
073: // display the message according to the specified type
074: TextOutputCallback toc = (TextOutputCallback) callbacks[i];
075: switch (toc.getMessageType()) {
076: case TextOutputCallback.INFORMATION:
077: System.err.println(toc.getMessage());
078: break;
079: case TextOutputCallback.ERROR:
080: System.err
081: .println("ERROR: " + toc.getMessage());
082: break;
083: case TextOutputCallback.WARNING:
084: System.err.println("WARNING: "
085: + toc.getMessage());
086: break;
087: default:
088: throw new IOException(
089: "Unsupported message type: "
090: + toc.getMessageType());
091: }
092: } else if (callbacks[i] instanceof NameCallback) {
093: // prompt the user for a username
094: NameCallback nc = (NameCallback) callbacks[i];
095: nc.setName(USERNAME);
096: } else if (callbacks[i] instanceof PasswordCallback) {
097: // prompt the user for sensitive information
098: PasswordCallback pc = (PasswordCallback) callbacks[i];
099: pc.setPassword(PASSWORD.toCharArray());
100: } else if (callbacks[i].getClass().getName().equals(
101: "weblogic.security.auth.callback.URLCallback")) {
102: } else {
103: throw new UnsupportedCallbackException(
104: callbacks[i], "Unrecognized Callback \""
105: + callbacks[i].getClass().getName()
106: + "\"");
107: }
108: }
109: }
110: }
111:
112: public UTLoginContext() throws LoginException {
113: super ("danetworkflow", new CBH());
114: }
115:
116: }
|