2010-07-14 9 views
7

Ich plane ist ein OpenID-Client in einem Multiplayer-Netzwerk C++ Spiel. Der Hoster hat die Möglichkeit, nur Logins von Personen zuzulassen, die sich über OpenID authentifizieren können. Außerdem möchte ich es ermöglichen, dass nur bestimmte Leute sich einloggen können.OpenID-Authentifizierung in C++ Multiplayer-Netzwerk-Spiel

Wir haben bereits einige einfache HTML-Viewer in unserem Code (und wir planen, auf WebKit zu migrieren), so dass die Anzeige von HTML (für die OpenID-Endpunktanmeldung) kein Problem darstellt.

Wir haben auch Code für HTTP-Anfragen (wir sind bereits nach libcurl migriert).

Ich habe keine C++ - Code für den Rest (der eigentliche OpenID-Endpunkt-Handshake) gefunden. Gibt es einen C++ Code dafür?

Wenn nicht, wo ist ein guter Anfangspunkt? Ich habe nicht wirklich viele Ideen über die OpenID Interna. Ist es kompliziert, das selbst zu programmieren?

Ist es überhaupt möglich so? Ich glaube, ich habe gesehen, dass ich eine Authentifizierungs-Site-URL oder so auf den OpenID-Endpunkt setzen muss, zu der es zurückkehren wird, wenn die Anmeldung erfolgreich ist. In diesem Fall gibt es keine Seite, wo Sie sich über OpenID einloggen, es ist ein Gameserver.

Wenn das wirklich ein Problem ist, dann haben wir auch einen eigenen Webserver (einen für unser Forum und wir haben den SourceForge), also könnten wir dort auch alles machen. Allerdings hat dies den großen Nachteil, dass das Spiel von einigen Webseiten für den OpenID-Login abhängt, was sehr schlecht ist - einer der netten Vorteile von OpenID ist weg.

+0

Ich denke OpenID wird hauptsächlich für Website-Authentifizierung verwendet; Wenn ich mich an das Framework erinnere, muss der Browser des Benutzers zurück zur Website des Anbieters geleitet werden, um die Authentifizierungsanfrage zu bestätigen. – amphetamachine

+0

Soweit ich mich erinnere, ist das Ergebnis Umleitung mit dem Authentifizierungsergebnis. Wenn ein eingebetteter Browser verwendet wird, kann die Umleitung (oder das Navigationsereignis) auf der Clientseite abgefangen werden. –

Antwort