[J2EE] Vanuit login object returnen (JAAS)

Pagina: 1
Acties:

  • DoDo
  • Registratie: Juli 2001
  • Laatst online: 10:39
Ik heb een login gemaakt mbv JAAS.

Java:
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
public class MyLoginModule implements LoginModule
//Properties e.d
 public boolean login() throws LoginException 
 {
        // prompt for a user name and password
        Callback[] callbacks = new Callback[2];
        callbacks[0] = new NameCallback("Username: ");
        callbacks[1] = new PasswordCallback("Password: ", false);
     
        String username ="";
        String password = "";
        try 
        {
            callbackHandler.handle(callbacks);
            username = ((NameCallback)callbacks[0]).getName();
            password = String.valueOf(((PasswordCallback)callbacks[1]).getPassword());
            ((PasswordCallback)callbacks[1]).clearPassword();
        } 
        catch (java.io.IOException ioe) 
        {
            throw new LoginException(ioe.toString());
        } 
        catch (UnsupportedCallbackException uce) 
        {
            throw new LoginException("Error: " + uce.getCallback().toString());
        }
        try
        {
            String salt = String.valueOf(System.currentTimeMillis());
            String passwordHash = abc.bank.MD5.encode(abc.bank.MD5.hash(password + salt));
            //Dit object wil ik verder gebruiken in mijn servlets
            abc.bank.AccountOffice ao = new abc.bank.AccountOffice(username,passwordHash,salt);
            roles = new MyGroup("Roles");
            if (username.equals("beheerder"))
            {
                roles.addMember(new MyPrincipal("beheerder"));
            }
            else
            {
                roles.addMember(new MyPrincipal("rekeninghouder"));
            }
            callerPrincipal = new MyGroup("CallerPrincipal");
            callerPrincipal.addMember(new MyPrincipal(username));
            System.out.println("(LOGIN)Login success with username: [" + username + "] and password: [" + password + "]");
            succeeded = true;
            return true;
        }
        catch (Exception ex)
        {
            System.out.println("(LOGIN)Login failed with username: [" + username + "] and password: [" + password + "] #Reason: " + ex.getMessage());
            return false;
        }
    }

Dit is de loginmodule, en ik wil het object dat op regel 35 word aangemaakt gebruiken in verdere servlets.
Nu kan ik nergens een methode vinden om dit door te geven, mijn servlets hebben geen kennis van de loginmodule. Tevens heeft JAAS geen HTTPContext waardoor ik ook de Session objecten niet kan gebruiken.

De benodige login word dmv securitycontraints aangeroepen vanuit de web.xml
XML:
1
2
3
4
5
6
7
8
9
10
   <!-- Servlet security -->
  <security-constraint>
    <web-resource-collection>
      <web-resource-name>IndexControl</web-resource-name>
      <url-pattern>/index</url-pattern>
    </web-resource-collection>
    <auth-constraint>
      <role-name>rekeninghouder</role-name>
    </auth-constraint>
  </security-constraint>


Wat heb ik al geprobeerd?

- Gekeken of ik sessions kan gebruiken
- Heel google afgespit
- Documentatie van jaas doorgelezen

De vraag
Weet iemand een manier hoe ik dit toch door kan geven aan mijn servlets? Helaas moet ik het op deze manier doen, maar ik ben er al 3 uur mee bezig en tot nu toe geen oplossing gevonden

  • coenbijlsma
  • Registratie: Augustus 2004
  • Niet online
ff snel want ik moet aan het werk: volgsn mij heb ik 'm (toen ik zoiets moest doen) in de Principal gestopt...

  • Turiya
  • Registratie: Maart 2006
  • Laatst online: 07-11-2025
Wat je moet doen is het object wat je wilt doorgeven in je eigen implementatie van Principal opslaan.
Vervolgens kan je vanuit je servlets iets als het volgende doen:

MyPrincipal principal = (MyPrincipal) request.getUserPrincipal();
principal.getAccountOffice();

dit klinkt trouwens nogal als hu project 6... als dat zo is mag ik je natuurlijk ook weer niet te veel helpen, zijnde je concurrent :)

  • DoDo
  • Registratie: Juli 2001
  • Laatst online: 10:39
Super, eindelijk de oplossing gevonden! Bedankt