# Double Opt In



## DarkGuardian (30. Aug 2010)

Hi

Ich hoffe, dass ich hier im richtigen Unterforum dafür bin. Für mein aktuelles Projekt brauche ich ein "Double Opt In"-Verfahren, um eine Anmeldung durchzuführen. Am liebsten wäre es mir, wenn das Ganz algorithmisch gelöst wird. Dann brauche ich keine zusätzlichen IDs o.Ä. irgendwo speichern. 

Kennt jemand dafür ein bestehendes Paket oder wie läst sich sowas leicht und elegant lösen?
Achja, und ist es sinnvoll, dieses direkt im Webtier zu lösen oder sollte sowas sicherheitstechnisch besser woanders erfolgen (dann wo?)?

DG


----------



## Tobias (30. Aug 2010)

Mir ist zwar nicht klar, was du genau meinst mit "algorithmisch lösen", aber üblicherweise wird der Datensatz zunächst einmal gespeichert und dabei mit einem Flag versehen, dass das Double-Opt-In noch nicht erfolgt ist. Dann wird eine Email o. ä. verschickt, welche einen Link enthält, den der Benutzer anklicken soll, um seine Registrierung zu bestätigen. Dieser Link enthält als Parameter die Id des gerade gespeicherten Datensatz.
Wenn der Link also angeklickt wird, wird der Datensatz dahingehend aktualisiert, dass das Double-Opt-In-Flag auf "durchgeführt" umgelegt wird.


----------



## DarkGuardian (31. Aug 2010)

Hallo Tobias

Vielen Dank für deine Erklärung. Aber ansich weiß ich, wie dieses Verfahren funktioniert. Daher muss ich meine Frage wohl genauer stellen. Der Schwerpunkt meiner Frage liegt nämlich im algorithmischen Teil, zu den du eh gefragt hast.

Eine eindeutige ID habe ich eh für jeden Account. Nun möchte ich diese aber nicht direkt im Link als Aktivierungsparameter hinterlegen, denn das halte ich für zu unsicher. Daher suche ich eine Möglichkeit, einen Link mit Parametern zu generieren, aus dem ich auf die zu aktivierende ID schließen kann. Aber wahrscheinlich ist es am einfachsten, diesen zu verschlüsseln bzw. einen Hashwert dazu zu übermitteln. Daraus kann ich dann wieder auf meine ID schließen, die sich dann leicht als freigeschaltet markieren lässt.

Also liege ich auch richtig in der Annahme, dass dieser Anteil im Webtier umgesetzt werden sollte? Die Freischaltung leite ich natürlich an einen Dienst weiter. Aber der Abgleich des aufgerufenen Links ermittelt man dort?


----------



## Tobias (31. Aug 2010)

Naja, ich würde den eigentlichen Abgleich der Ids und das Umsetzen des Flags in eine Methode in der Service-Layer hinter der eigentlichen Präsentationsschicht auslagern. Schon allein, weil da Sachen passieren müssen wie Datenbankzugriffe etc.

Die Id des Datensatzes kann man IMHO ruhig im Klartext übertragen, um ein bißchen zusätzliche Sicherheit zu generieren, kann man ja Benutzername und irgendein anderes Merkmal in einem String zusammenpacken und darüber einen Hash bilden, den man zwecks Authentifizierung ebenfalls mit verschickt.


----------



## DarkGuardian (31. Aug 2010)

Hi Tobias

OK, welche Daten ich als Parameter mitgebe und ob ich dazu einen Hashwert o.Ä. ermitteln werde, schau ich noch mal. Ansich will ich nur das Ermitteln der ID (und evtl. weitere Parameter) im Webtier erledigen. Der Zugriff auf die Datenbank sowie ein Abgleich der Daten und damit die eigentliche Freischaltung erfolgt natürlich in einer tieferen Ebene.

Vielen Dank für deine Rückmeldungen, denn so konnte ich mir ein besseres Bild des Problems machen.


----------

