2012-04-03 8 views
0

I Facebook als Authentifizierungsquelle für meine Anwendung (eine Website) Benutzer verwenden möchten, beschränken. Ich möchte nicht, dass meine Anwendung über grundlegende Berechtigungen und E-Mail-Berechtigungen verfügt. Daher muss meine Anwendung beispielsweise nicht in der Lage sein, auf einer Benutzerwand zu veröffentlichen. Mit anderen Worten, ich möchte die zulässige Menge von Werten für den Bereichsparameter einschränken, und ich möchte diese Einschränkung auf den Konfigurationsseiten der Anwendung (auf der Facebook-Website selbst) auftreten.Wie die zulässige Erlaubnis-Set für den OAuth ‚Umfang‘ Parameter (Einschränkung scope)

Normalerweise wäre dies einfach, geben Sie einfach die E-Mail "für den Bereich Parameter des OAuth URL/Anruf.

jedoch in diesem Fall gibt es einen weiteren Faktor, und das ist: ein Hacker Zugriff auf die App gewinnen kann und das OAuth-Aufruf ändern, um mehr Berechtigungen festlegen. Dann wird ein ahnungsloser Benutzer normalerweise (oder zumindest möglicherweise) diese Berechtigungen gewähren und der Hacker wird in der Lage sein, das OAuth-Token zu greifen und Aktionen im Namen dieses Benutzers auszuführen.

Ich bin das Warum dieses Thema in der Diskussion, nur bei der Suche nach der es nicht interessiert ist, eine Möglichkeit zu geben, dass meine Bewerbung nur einen bestimmten Satz von Werten für den Geltungsbereich Parameter verwenden kann. Idealerweise sollte diese Einschränkung des Gültigkeitsbereichs auf der Anwendungskonfigurationsseite auf Facebook selbst vorgenommen werden.

Aber ich bin interessiert an alternativen Lösungen, die unter Verwendung von SAML, OpenID oder einen anderen Authentifizierung nur Mechanismus beinhalten (auch wenn ich nicht die Benutzer E-Mail-Adresse erhalten kann). Ich bin nicht daran interessiert, RPX zu verwenden.

Bitte beachten Sie: Dies ist eine komplexe Frage, nicht eine einfache Frage. Ich habe weit und breit nach einer Antwort gesucht und gerade herausgefunden, was genau das Gegenteil von dieser Frage ist.

Antwort

0

Ich bin mir ziemlich sicher, dass es nicht möglich ist, den Umfang auf Anwendungskonfigurationsebene zu beschränken.

Ich würde sagen, die sauberste Problemumgehung wäre, die Berechtigungen eines Benutzers bei der Anmeldung abzufragen, zu überprüfen, dass sie den erlaubten Berechtigungen entsprechen, und abonnieren Sie die (Berechtigungen Echtzeit-Updates) [http://developers.facebook.com/docs/Referenz/api/Echtzeit /]. Ihre App wird über Änderungen an Berechtigungen informiert, die Benutzern erteilt wurden.

Dies sollte Ihnen erlauben, alle serverseitigen API-Aufrufe über Anwendungslogik zu blockieren, oder (ban) [https://developers.facebook.com/docs/reference/api/application/#banned] einen Benutzer, der Berechtigungen eskaliert .

+0

Interessante Idee. Wenn man sich das Echtzeit-Dokument anschaut, sieht es so aus, als würde es Anfragen nach Änderungen senden, aber nicht zum allerersten Mal, wenn ein Benutzer die Anwendung autorisiert. –

+0

Sie können das erstmal mit/me/permissions überprüfen. Also, bestätigen Sie, dass sie korrekt sind, und die Echtzeit wird sicherstellen, dass sie * korrekt * bleiben. –

Verwandte Themen