1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package fr.paris.lutece.plugins.mylutece.modules.persona.web;
35
36 import fr.paris.lutece.plugins.mylutece.modules.persona.service.PersonaService;
37 import fr.paris.lutece.portal.service.util.AppLogService;
38 import fr.paris.lutece.util.httpaccess.HttpAccess;
39 import fr.paris.lutece.util.httpaccess.HttpAccessException;
40
41 import java.io.IOException;
42 import java.io.Writer;
43
44 import java.util.HashMap;
45 import java.util.Map;
46
47 import javax.servlet.ServletException;
48 import javax.servlet.http.HttpServlet;
49 import javax.servlet.http.HttpServletRequest;
50 import javax.servlet.http.HttpServletResponse;
51
52
53
54
55
56 public class AuthLoginServlet extends HttpServlet
57 {
58 private static final String PARAMETER_ASSERTION = "assertion";
59 private static final String PARAMETER_AUDIENCE = "audience";
60 private static final String URL_VERIFIER = "https://verifier.login.persona.org/verify";
61
62 @Override
63 protected void service( HttpServletRequest request, HttpServletResponse response )
64 throws ServletException, IOException
65 {
66 String strAssertion = request.getParameter( PARAMETER_ASSERTION );
67 Map<String, String> mapParams = new HashMap<String, String>( );
68 mapParams.put( PARAMETER_ASSERTION, strAssertion );
69 mapParams.put( PARAMETER_AUDIENCE,
70 request.getScheme( ) + "://" + request.getServerName( ) + ":" +
71 ( ( request.getServerPort( ) == 80 ) ? "" : request.getServerPort( ) ) );
72
73 HttpAccess httpClient = new HttpAccess( );
74
75 response.setStatus( HttpServletResponse.SC_OK );
76 response.setContentType( "text/html" );
77
78 Writer out = response.getWriter( );
79
80 try
81 {
82 String strResponse = httpClient.doPost( URL_VERIFIER, mapParams );
83 PersonaService.processAuthentication( request, strResponse );
84 out.write( "Authentication successful" );
85 }
86 catch ( HttpAccessException ex )
87 {
88 AppLogService.error( "Error processing Persona authentication : " + ex.getMessage( ), ex );
89 out.write( "Authentication failed : " + ex.getMessage( ) );
90 }
91
92 out.flush( );
93 out.close( );
94 }
95 }