IPB Login in einem vB Programm integrieren?

10/05/2014 16:51 4Just#1
Hi,

ich habe nen Invision Power Board Forum und würde gerne wissen, wie man den Login des Forums in einem vB Programm einbinden kann.
d.h. Man würde den Usernamen und das PW eingeben und soll nur, wenn beides richtig ist, das Programm nutzen können (falls falsch irgendeine Art von Fehlermeldung anzeigen). Wenn´s geht sollte das Programm danach noch die Usergruppe (ist in Nummern gespeichert) abgleichen und nur, wenn die Usergruppe z.B. 4, oder 7 ist den Zugang erlauben.

Gespeichert ist alles in einer MySQL:

Username: Tabelle: members, Spalte: name
Passwort ist so gespeichert (blicke da net ganz durch): [Only registered and activated users can see links. Click Here To Register...]
User-Gruppe: Tabelle: members, Spalte: member_group_id

Ich hoffe, ich habe mich nicht zu unverständlich ausgedrückt xD

Bye,
4Just
10/05/2014 18:59 tolio#2
webrequests nutzen, anmelden und das ergebnis wieder zurückliefern
10/06/2014 01:02 Terreox#3
Eigentlich ist das Ganze nicht allzu schwer.

Ich gehe mal davon aus, dass du direkten Zugriff auf die Datenbank des betroffenen Forums hast.

Sollte dies nicht der Fall sein, so kannst du dich auf jedenfall schonmal über die Methode von tolio mit WebRequests ins Forum einloggen.
Wie man allerdings dann die GruppenId bekommt, kann ich dir aus dem Stegreif nicht sagen.

Wenn du Zugriff auf die Datenbank hast, dann macht es die Sache noch einfacher.
Das Passwort kannst du anhand der in der angegebenen Dokumentation von IPB verifizieren.
Dazu brauchst du einfach das eingegebene Passwort nach der in der Dokumentation beschriebenen Methode hashen und mit dem Wert in der Datenbank vergleichen.
Wenn das Passwort mit der Datenbank übereinstimmt, so gibt es mit Sicherheit auch in einer anderen Datenbank noch Informationen über die zugeteilten Benutzergruppen, die du anschließend überprüfen kannst.

Die Bildung des Passwort-Hashes ist recht simpel laut Dokumentation:
Hänge die Md5-Summe des Klartext-Passworts an die Md5-Summe des Passwort-Salts und bilde davon wieder die Md5-Summe.

Den Passwort-Salt bekommst du aus der Datenbank (in Spalte members_pass_salt gespeichert) und das Klartext-Passwort bekommst du vom Benutzer selbst.

Kleiner Tipp noch am Rande:
Benutze am besten ein PHP Skript o.ä., was dann zur Verifikation von deinem Programm aufgerufen werden kann. Somit vermeidest du vorallem, dass du keine Datenbankzugangsdaten im Programmcode hinterlegen musst, die potenziell anderen in die Hand gelangen könnten (.NET Code ist ja bekanntlich recht leicht dekompilierbar).
Zusätzlich kann man dann auch noch einen Schutz gegen zu viele Anfragen von einem Benutzer einbauen, damit du dich gegen Bruteforce schützen kannst.
Das sind allerdings nur Anregungen, da ich kein Spezialist auf diesem Gebiet bin^^
10/06/2014 23:25 4Just#4
Danke für deine wirklich hilfreiche Antwort :)

Hab's jetzt soweit am laufen, nur bekommch bei Passwörtern mit Sonderzeichen (&,?,!,...) ne Fehlermeldung "Falsches PW".
10/06/2014 23:54 Terreox#5
Freut mich, dass es soweit funktioniert.

Ich bin kein Webentwickler, daher kann ich nichts genaues zu deinem Sonderzeichenproblem sagen, aber mir fällt da momentan nur eine Sache zu ein:
Soweit ich weiß werden im Web Sonderzeichen meistens encodiert, evtl hast du sowas schonmal in URLs gesehen.
Die Encodierung nennt sich URL-Encoding oder Prozentkodierung, dabei wird z.B. ein ! zu %21.
Percent-encoding - Wikipedia, the free encyclopedia

Probier mal deine Passwort mit der System.Web.HttpUtility Klasse zu encodieren.
-> [Only registered and activated users can see links. Click Here To Register...]
(System.Web muss vorher als Referenz hinzugefügt werden)
10/07/2014 05:44 Ammy'#6
Quote:
Originally Posted by 4Just View Post
Danke für deine wirklich hilfreiche Antwort :)

Hab's jetzt soweit am laufen, nur bekommch bei Passwörtern mit Sonderzeichen (&,?,!,...) ne Fehlermeldung "Falsches PW".
passwort vorher encoden.