Wie am besten eine Authentifzierung einbauen?

Spitfire777

Bekanntes Mitglied
Hallo,

ich nutze einen JBoss Applikationsserver und bin dabei, mir einen RESTful Web Service zu basteln (ich benutze EJB3).
Als Grundlage habe ich z.B. eine User-Tabelle auf meinem Datenbankserver mit einem SHA1-gehashtem Passwort und einem Salt-Wert.

Jetzt möchte ich z.B. dass nur ein eingeloggter Nutzer Operationen am System durchführen kann (z.B. das Auslesen von Daten).

Wie stelle ich das am besten an? Per HTTP anmelden? Wie mach ich das am besten? Wie kann ich in meiner REST-Ressource-Klasse das am besten absichern?

Danke!
 

Spitfire777

Bekanntes Mitglied

Ja, das habe ich schon gesehen. Nur nutze ich EJB für Präsentationsschicht und Anwendungskern.
Für die Präsentationsschicht habe ich z.B. ein solches Interface:

Java:
@Produces({ MediaType.APPLICATION_XML, MediaType.TEXT_XML, MediaType.APPLICATION_JSON })
@Consumes
@Path("/users")
public interface IUserResource {
	
	@GET
	@Path("{id:[0-9]+}")
	@Formatted
	public User findUserById(@PathParam("id") Long id, @Context UriInfo uriInfo);
...

Und dazu eine (stark vereinfachte) Implementierung, welche dann den Anwendungskern aufruft.
Java:
@Stateless
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public class UserResource implements IUserResource {
	
	@Inject
	private UserService us;

	@Override
	public User findUserById(Long id, UriInfo uriInfo) {
		final User user = us.findUserById(id);
		return user;
	}
...

Nun gibt es im Tutorial folgende Bemerkung:
NOTE!!! Do not turn on this switch if you are using EJBs. The EJB container will provide this functionality instead of Resteasy.

Macht das nun Probleme?
 

Spitfire777

Bekanntes Mitglied
Okay jetzt habe ich noch ein paar Fragen: Wie soll das ganze jetzt benutzerseitig ablaufen?

Ich hab mir sowas überlegt: Benutzer loggt sich mittels Benutzername und Passwort per GET /sometokengenerator?u=username&pw=password123 ein und erhält einen zufälligen Hash, der er für seine künftigen Aktionen immer mitübergibt.
Wer jedoch den Hashwert abfängt, kann eben Sessionriding betreiben. Ich dachte daran, den Hashwert an eine IP-Adresse oder so zu binden. Aber so ganz sicher bin ich mir dabei nicht.

Oder für jede Aktion müssen eben immer Username und Passwort übergeben werden, aber bei jedem Tastendruck z.B. in einer Mobil-App Username und Passwort im Klartext zu senden, ist mir auch zu unsicher.
 

F.S.WhiTeY

Bekanntes Mitglied
hey,

wenn du unbedingt tokens speichern willst nimm cokies die sind sicherer als die reine get methode. das ganze zu hashen ist dabei eine gute idee.

an eine ip-adresse binden hat nur im intranet sinn, es sei denn deine user haben alle eine statisch adresse bei ihrem isp.

zum klartext senden: dafür gibt es ssl bzw. https.das ist zwar auch nicht 100%ig aber sicherer als http, denn da werden alle pakete im klartext gesendet. wenn du bei den apps allerdings "keylogger" meinst, da wüsste ich nicht wie man das verhindern sollte, da ist eh alles zu spät.

lg

david
 

Spitfire777

Bekanntes Mitglied
Ja, danke, werde mir das weiter anschauen.

Ich meinte keinen Keylogger, sondern, dass es unsicherer ist, wenn Benutzerdaten im Klartext sehr oft über das Netzwerk geschickt werden. (Was durch häufige Benutzeraktionen in einer App ja zwangsläufig passiert)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R (JSF) Wie am besten einzelne Seiten schützen? Allgemeines EE 13
F Wie am besten Parameter transportieren? Allgemeines EE 2
P Wie Log4J in JSP's, Beans und Servlets am besten einbinden Allgemeines EE 2
B Java mail API - möchte nur eine gewisse Anzahl von Emails in die Liste holen Allgemeines EE 3
B eine vom Admin hochgeladene csv -Datei in der Datatable auch von jedem User sichtbar Allgemeines EE 0
OnDemand Programm starten, wenn eine Aufgabe erledigt Allgemeines EE 1
X Konsolenausgabe einer java klasse in eine jsp umleiten Allgemeines EE 7
T Wie kann ich eine große Datenmenge vorhalten, damit ich seitens Frontend darauf zugreifen kann? Allgemeines EE 17
R Wie eine stateful session bean erneut "aufgreifen" Allgemeines EE 22
D JSF h:panelgrid - eine reihe mit zusätzlicher spalte Allgemeines EE 6
B Problem beim einbinden einer CSS in eine JSP Allgemeines EE 8
slawaweis CMS Unterbau für eine Web 2.0 Anwendung Allgemeines EE 4
M Wie erhällt eine MessageDrivenBean Nachrichten aus einer Queue ? Wer Pollt da gegen die DB? Allgemeines EE 3
MQue include einer jsp in eine andere Allgemeines EE 4
D Wann genau eine Middleware Allgemeines EE 8
2 JSTL Tags für eine Bean? Allgemeines EE 4
S Session in eine andere Anwendung übergeben Allgemeines EE 2
D Frage zum Verlassen eine JSF-Eingabefeldes Allgemeines EE 6
S Struts: zwei JSP's nutzen eine Action Allgemeines EE 5
J Rechnername auf dem eine J2EE läuft Allgemeines EE 10
P Eine Frage zum Thema Applikationsaufbau Allgemeines EE 3
H Eine Datenbank - 1 Datenmodell - 2 Anwendungsumgebungen Allgemeines EE 2
E HTTP-GET// -->Eine URL aufrufen, aber nicht dahin navigie Allgemeines EE 2
H Eine kurze Verständnisfrage zum Tomcat Allgemeines EE 2
W Eine Form an einen fremden Server schicken. Allgemeines EE 3
G WebApp (mit Tomcat) Wie kann meine Klasse eine Datei laden? Allgemeines EE 7
E Eine Art Thread.sleep() in JSTL? Allgemeines EE 4
M wie sieht eine ejb-jar.xml aus ? Allgemeines EE 8
T eine web anwendung bereitstellen ? Allgemeines EE 5
N Einbindung einer Bean in eine JSP (Tomcat-Server 5.5.x) Allgemeines EE 2
G StackTrace in eine TEXTAREA bringen Allgemeines EE 4
W Woraus baut man eine Super-Business-Anwendung? Allgemeines EE 5
B Besondere Ländereinstellungen für eine TomcatApp Allgemeines EE 2
TRunKX Werteübergabe von einer *.jsp in eine *.java ohne struts Allgemeines EE 4
G Application Server! Gibt es eine grundsätzliche Architektur? Allgemeines EE 9
B EJB --- Eine Modeerscheinung? Allgemeines EE 14
X Mit JSP eine Datenbankabfrage durch führen. Allgemeines EE 13
Y Eine neue Seite mit Servlet öfnnen Allgemeines EE 9
A mit JavaMail eine html mail versenden? Allgemeines EE 4
D Standard für Authentifzierung und Autorisierung Allgemeines EE 5

Ähnliche Java Themen

Neue Themen


Oben