google-api scopes - google oauth2 redirect_uri mit mehreren Parametern




key secret (4)

Wie fügt man dem Google oauth2 redirect_uri Parameter hinzu?

Genau wie dies redirect_uri=http://www.example.com/redirect.html?a=b .

Das b von a=b ist zufällig.

Jeder kann helfen?


Answers

Wenn Sie in .NET sind, können Sie die Parameter in der Sitzung speichern

HttpContext.Current.Session[{varname}]

und umleiten auf die Autorisierungsseite ohne Parameter

Response.Redirect(your_uri_approved_with_no_querystring_parameters);

  1. Du kannst nichts zum Weiterleitungs-URI hinzufügen, die Weiterleitung von URI ist konstant wie in den App-Einstellungen von Oauth festgelegt. zB: http://www.example.com/redirect.html

  2. Um mehrere Parameter an Ihr Weiterleitungs-URI zu übergeben, lassen Sie sie im state vor dem Aufruf von Oauth url speichern. Die URL nach der Autorisierung sendet die gleichen Parameter an Ihr Weiterleitungs-URI wie state=THE_STATE_PARAMETERS

Also für Ihren Fall, tun Sie das:

/ 1. Erstellen Sie eine JSON-Zeichenfolge Ihrer Parameter ->

{ "a" : "b" , "c" : 1 }

/ 2. Mach einen base64UrlEncode, um es URL-sicher zu machen ->

stateString = base64UrlEncode('{ "a" : "b" , "c" : 1 }');

Dies ist ein PHP-Beispiel für base64UrlEncoding & decoding ( http://en.wikipedia.org/wiki/Base64#URL_applications ):

function base64UrlEncode($inputStr)
{
    return strtr(base64_encode($inputStr), '+/=', '-_,');
}

function base64UrlDecode($inputStr)
{
    return base64_decode(strtr($inputStr, '-_,', '+/='));
}

Also wäre der Zustand nun wie folgt: stateString -> asawerwerwfgsg,

Übergeben Sie diesen Status in der OAuth-Autorisierungs-URL:

https://accounts.google.com/o/oauth2/auth?
  client_id=21302922996.apps.googleusercontent.com&
  redirect_uri=https://www.example.com/back&
  scope=https://www.google.com/m8/feeds/&
  response_type=token&
  state=asdafwswdwefwsdg,

Für serverseitigen Fluss wird es mit Token kommen: http://www.example.com/redirect.html?token=sdfwerwqerqwer&state=asdafwswdwefwsdg ,

Für den clientseitigen Fluss wird es zusammen mit dem Zugriffstoken in den Hash eingegeben: http://www.example.com/redirect.html#access_token=portyefghsdfgdfgsdgd&state=asdafwswdwefwsdg ,

Rufen Sie den Status ab, base64UrlDecodieren Sie ihn, json_decodieren Sie ihn und Sie haben Ihre Daten.

Sehen Sie mehr über Google OAuth 2 hier:

http://code.google.com/apis/accounts/docs/OAuth2.html


Sie können Parameter mit URL wie folgt umleiten,

Wenn Sie eine Antwort von Google erhalten, können Sie Parameter mit URL übergeben.

Siehe unten PHP- Code für das gleiche,

if (isset($_GET['code'])) {
   $client->authenticate();
   $_SESSION['token'] = $client->getAccessToken();
   $redirect = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
   header('Location: ' . filter_var($redirect, FILTER_SANITIZE_URL) . '?r=page/view');

}

Im obigen Beispiel ist r = page / view ein Parameter, für den ich die Antwort mit dem Parameter haben möchte


Die Erklärung des Unterschieds zwischen OpenID, OAuth, OpenID Connect:

OpenID ist ein Protokoll zur Authentifizierung, während OAuth zur Autorisierung dient. Bei der Authentifizierung geht es darum sicherzustellen, dass der Typ, mit dem Sie sprechen, tatsächlich der ist, für den er sich ausgibt. Bei der Autorisierung geht es darum zu entscheiden, was dieser Typ tun darf.

In OpenID wird die Authentifizierung delegiert: Server A möchte den Benutzer U authentifizieren, aber die Anmeldeinformationen von U (z. B. der Name und das Kennwort von U) werden an einen anderen Server B gesendet, dem A vertraut (vertraut zumindest für die Authentifizierung von Benutzern). Tatsächlich stellt Server B sicher, dass U tatsächlich U ist, und sagt dann zu A: "Ok, das ist das echte U".

In OAuth wird die Autorisierung delegiert: Entität A erhält von Entität B ein "Zugriffsrecht", das A dem Server S anzeigen kann, um Zugriff zu erhalten; B kann somit temporäre, spezifische Zugriffsschlüssel an A liefern, ohne ihnen zu viel Energie zu geben. Sie können sich einen OAuth-Server als Schlüssel-Master in einem großen Hotel vorstellen. er gibt den Mitarbeitern Schlüssel, die die Türen der Räume öffnen, in die sie eintreten sollen, aber jeder Schlüssel ist begrenzt (er gibt keinen Zugang zu allen Räumen); Außerdem zerstören sich die Schlüssel nach einigen Stunden.

Bis zu einem gewissen Grad kann die Autorisierung in eine Pseudoauthentifizierung missbraucht werden, auf der Grundlage, dass, wenn Entität A von B einen Zugriffsschlüssel durch OAuth erhält und es dem Server S zeigt, Server S ableiten kann, dass B A authentifiziert hat, bevor er den Zugriff gewährt hat Schlüssel. Manche Leute benutzen OAuth, wo sie OpenID benutzen sollten. Dieses Schema kann oder kann nicht erleuchtend sein; aber ich denke, dass diese Pseudo-Authentifizierung mehr als alles andere verwirrend ist. OpenID Connect macht genau das: Es missbraucht OAuth in ein Authentifizierungsprotokoll. In der Hotelanalogie: Wenn ich einen angeblichen Angestellten treffe und dieser mir zeigt, dass er einen Schlüssel hat, der mein Zimmer öffnet, dann nehme ich an, dass dies ein echter Angestellter ist, auf der Basis, dass der Schlüsselmeister ihm keinen Schlüssel gegeben hätte was öffnet mein Zimmer, wenn er nicht war.

(source)

Wie unterscheidet sich OpenID Connect von OpenID 2.0?

OpenID Connect führt viele der gleichen Aufgaben wie OpenID 2.0 aus, jedoch in einer Weise, die API-freundlich ist und von nativen und mobilen Anwendungen verwendet werden kann. OpenID Connect definiert optionale Mechanismen für robustes Signieren und Verschlüsseln. Während die Integration von OAuth 1.0a und OpenID 2.0 eine Erweiterung erforderte, sind OAuth 2.0-Funktionen in OpenID Connect in das Protokoll selbst integriert.

(source)

OpenID Connect wird Ihnen ein Zugriffs-Token plus ein ID-Token geben. Das ID-Token ist ein JWT und enthält Informationen über den authentifizierten Benutzer. Es ist vom Identity-Provider signiert und kann ohne Zugriff auf den Identity-Provider gelesen und verifiziert werden.

Darüber hinaus standardisiert OpenID Connect einige Dinge, die oauth2 der Auswahl überlassen kann. B. Bereiche, Endpunkterkennung und dynamische Registrierung von Clients.

Dies erleichtert das Schreiben von Code, mit dem der Benutzer zwischen mehreren Identitätsanbietern wählen kann.

(source)

Google OAuth 2.0

Die OAuth 2.0-APIs von Google können sowohl für die Authentifizierung als auch für die Autorisierung verwendet werden. In diesem Dokument wird unsere OAuth 2.0-Implementierung für die Authentifizierung beschrieben, die der OpenID Connect-Spezifikation entspricht und OpenID-zertifiziert ist. Die Dokumentation unter Verwenden von OAuth 2.0 für den Zugriff auf Google APIs gilt auch für diesen Dienst. Wenn Sie dieses Protokoll interaktiv erkunden möchten, empfehlen wir den Google OAuth 2.0 Playground .

(source)





oauth google-api