JSF JSF2 und JAAS

G

Gast2

Gast
Hallo zusammen,

ich habe in JSF eine einfache login.xhtml seite mit benutzername und pwd.
Wie kann ich jetzt hier eine JAAS Authenzifierung machen? Brauch ich unbedingt ein Bean mit name und pwd, welches ich in einem Service benutze? z.B.
Java:
public class LoginServiceImpl implements LoginService{

	@Inject
	private Bean bean;
	
	@Override
	public void login() {
		SecurityClient client;
		try {
			client = SecurityClientFactory.getSecurityClient();
			client.setSimple(bean.getName(), bean.getPwd());
			client.login();
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		
	}

Oder geht es besser?
 
G

Gast2

Gast
Okay irgendwie bekomme ich immer die nachricht invalid user:

Also ich benutze genau das gleiche DatabaseServerLoginModule:
Chapter 10. JBoss Login Modules

Das habe ich auch auch genauso in der login-config.xml eingetragen:

Und hab ein user "test" pwd ="12345"
und rolle test hinzugefügt:

Java:
	@Override
	public String login() {

		CallbackHandler callbackHandler = new UsernamePasswordHandler("test", "12345".toCharArray());
		
		try {
			LoginContext context = new LoginContext("mydomain",callbackHandler);
			context.login();
		} catch (LoginException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

und im web-inf eine jboss.xml
[XML]
<jboss>
<security-domain>ProjektarbeitDB</security-domain>
</jboss>
[/XML]

was könnte nicht stimmen?
 
G

Gast2

Gast
Also der Login klappt aber sobald ich auf einen 2ten Service zugreife ist immer alles null im LoginModul. warum?
Java:
public abstract class UsernamePasswordLoginModule extends AbstractServerLoginModule
   protected String getUsername()
   {
      String username = null;
      if( getIdentity() != null )
         username = getIdentity().getName();
      return username;
   }

Mhm ich verstehe es nicht?!????:L
 
Zuletzt bearbeitet von einem Moderator:
G

Gast2

Gast
Wenn ich die WebAuthentication wird mein LoginModul ausgeführt.
Aber wie bekomme ich nun mein Principal wieder ausgelesen?
Wenn ich den SessionContext injecten will ist dieser immer null.

Java:
@Statless
public class MyService{

@Resource
private SessionContext sessionContext;
}

Weiß jemand was falsch ist?:bahnhof:
 
G

Gast2

Gast
Oder kann man den SessioNContext nur mit Remote verwenden?
Java How To ...: 4 Ways to Get EJBContext in EJB 3

Außerdem funktioniert @RolesAllowed auch nicht. Liegt das an der WebAuthentification? Ich kann nur über den FacesContext darauf zugreifen.

Vielleicht hier mal alle Files vielleicht sieht jemand den Fehler:

login.config.xml
[XML]
<application-policy name="test">
<authentication>
<login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule"
flag="required">
<module-option name="dsJndiName">java:/TestDS
</module-option>
<module-option name="principalsQuery">
select passwd from Users username
where username=?</module-option>
<module-option name="rolesQuery">
select userRoles, 'Roles' from
UserRoles where username=?
</module-option>
</login-module>
</authentication>
</application-policy>
[/XML]

jboss-web.xml
[XML]
<jboss-web>
<security-domain>test</security-domain>
</jboss-web>
[/XML]

und dann halt z.b.

Java:
	public String login(){
		boolean b = webAuthentication.login("gast", "gast");

Java:
@Stateless
public class MyServiceImpl implements MyService{


	@Resource
	SessionContext context;

	@RolesAllowed({"admin"})
	public void delete(Long id) {
		System.out.println(context);
		
	}
 
Zuletzt bearbeitet von einem Moderator:

Ähnliche Java Themen

Neue Themen


Oben