KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sslexplorer > agent > DefaultAgentCallback


1 package com.sslexplorer.agent;
2
3 import java.net.InetAddress JavaDoc;
4
5 import com.sslexplorer.boot.RequestHandlerRequest;
6 import com.sslexplorer.security.LogonControllerFactory;
7 import com.sslexplorer.security.SessionInfo;
8 import com.sslexplorer.security.User;
9 import com.sslexplorer.util.TicketGenerator;
10
11 public class DefaultAgentCallback extends BasicAuthenticatorAgentCallback {
12
13     public static final String JavaDoc DEFAULT_AGENT_TYPE = "sslexplorerAgent";
14
15     public AgentTunnel createAgent(String JavaDoc remoteHost, User user, String JavaDoc type,
16             RequestHandlerRequest connectionParameters) throws AgentException {
17
18         if (type.equals(DEFAULT_AGENT_TYPE)) {
19
20             String JavaDoc ticket = (String JavaDoc) connectionParameters.getParameters().get("ticket");
21
22             if (ticket == null) {
23                 
24                 ticket = (String JavaDoc)connectionParameters.getAttribute("directAgentTicket");
25                 
26                 if(ticket==null)
27                     throw new AgentException("");
28             }
29
30             SessionInfo session = DefaultAgentManager.getInstance()
31                     .getSessionByAgentId(ticket);
32
33             if (session == null)
34                 throw new AgentException("");
35
36             AgentTunnel t = new AgentTunnel(ticket, session, user,
37                     DEFAULT_AGENT_TYPE, new DefaultAgentChannelFactory());
38             DefaultAgentManager.getInstance().registerAgent(ticket, session, t);
39             AgentUnregisterHook.register(session);
40             return t;
41
42         } else {
43             throw new AgentException("");
44         }
45     }
46
47     public User authenticate(RequestHandlerRequest request) {
48         /**
49          * Perform an authentication based on the ticket provided in the request
50          */

51         if (request.getField("Authorization") != null) {
52             User user = super.authenticate(request);
53
54             if (user != null) {
55
56                 try {
57
58                     SessionInfo session = SessionInfo.nextSession(null,
59                             TicketGenerator.getInstance().generateUniqueTicket(
60                                     "DAGENT"), user, InetAddress
61                                     .getByName(request.getRemoteAddr()),
62                             SessionInfo.AGENT, request.getField("User-Agent")
63                                     .toString());
64                     LogonControllerFactory.getInstance().getActiveSessions()
65                             .put(session.getLogonTicket(), session);
66                     request.setAttribute("directAgentTicket", DefaultAgentManager.getInstance().registerPendingAgent(
67                             session));
68                     
69                     AgentUnregisterHook.register(session);
70                     return user;
71                 } catch (Exception JavaDoc e) {
72                     log.error("Failed to configure session.", e);
73                 }
74
75             }
76             return null;
77         } else {
78             String JavaDoc ticket = (String JavaDoc) request.getParameters().get("ticket");
79             if(ticket != null) {
80                 SessionInfo session = DefaultAgentManager.getInstance()
81                         .getSessionByAgentId(
82                                 ticket);
83     
84                 // Make sure only one agent is registered at any one time
85
if (session != null
86                         && DefaultAgentManager.getInstance().getAgentBySession(
87                                 session) == null)
88                     return session.getUser();
89             }
90
91             return null;
92         }
93
94     }
95
96 }
97
Popular Tags