Comment ajouter un paramètre au google oauth2 redirect_uri?
Juste comme ça redirect_uri=http://www.example.com/redirect.html?a=b
.
Le b
de a=b
est aléatoire.
Quelqu'un peut-il aider?
la source
Comment ajouter un paramètre au google oauth2 redirect_uri?
Juste comme ça redirect_uri=http://www.example.com/redirect.html?a=b
.
Le b
de a=b
est aléatoire.
Quelqu'un peut-il aider?
Vous ne pouvez rien ajouter à l'URI de redirection, l'URI de redirection est constant tel que défini dans les paramètres de l'application d'Oauth. par exemple : http://www.example.com/redirect.html
Pour passer plusieurs paramètres à votre uri de redirection, faites-les stocker dans le state
paramètre avant d'appeler l'url Oauth, l'url après autorisation enverra les mêmes paramètres à votre uri de redirection que
state=THE_STATE_PARAMETERS
Donc, pour votre cas, faites ceci:
/1. créer une chaîne json de vos paramètres ->
{ "a" : "b" , "c" : 1 }
/ 2. faire un base64UrlEncode, pour rendre l'URL sûre ->
stateString = base64UrlEncode('{ "a" : "b" , "c" : 1 }');
Voici un exemple PHP de 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, '-_,', '+/='));
}
Alors maintenant, l'état serait quelque chose comme: stateString -> asawerwerwfgsg,
Transmettez cet état dans l'URL d'autorisation OAuth:
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,
Pour le flux côté serveur, il sera accompagné d'un jeton: http://www.example.com/redirect.html?token=sdfwerwqerqwer&state=asdafwswdwefwsdg ,
Pour le flux côté client, il viendra dans le hachage avec le jeton d'accès: http://www.example.com/redirect.html#access_token=portyefghsdfgdfgsdgd&state=asdafwswdwefwsdg ,
Récupérez l'état, base64UrlDecode, json_decode et vous avez vos données.
En savoir plus sur google OAuth 2 ici:
state
param pour passer plusieurs paramètres pour rediriger l'URI et pour empêcher uneCSRF
attaque en même temps ?CSRF
attaques)?Si vous êtes en .NET, vous pouvez enregistrer les paramètres dans la session
et rediriger vers la page d'autorisation sans paramètres
la source
Session
doit être évité.Vous pouvez rediriger le paramètre avec l'url comme ci-dessous,
Lorsque vous obtenez une réponse de google, vous pouvez passer le paramètre avec l'URL,
Voir ci-dessous le code php pour le même,
}
Dans l'exemple ci-dessus r = page / vue est le paramètre sur lequel je veux la réponse avec le paramètre
la source
Puisque la réponse acceptée expose les données réelles et utilise mal le
state
paramètre au lieu de s'en tenir à un nonce pour se protéger contre CSRF, je vais essayer de montrer une méthode appropriée. Plutôt que de transmettre (lire exposer ) des données, elles doivent rester locales. Hydratez-le avant la demande et réhydratez-le après une demande validée . «Validé» signifie ici que l'état-nonce de la demande et de la réponse correspond.Vous avez besoin d'une sorte de stockage temporaire côté client . Par exemple, pour le SPA ou les sites Web généraux, gardez-le en état ou utilisez le stockage local du navigateur, une session (ou un cookie signé ). Pour les applications mobiles, ils doivent utiliser la mémoire ou tout autre stockage local.
Avant d'envoyer la requête, générez un nonce (voir ci-dessous) qui sera utilisé comme
state
paramètre de la requête. Stockez le nonce avec l'état personnalisé (par exemple un json) dans le stockage local.Par exemple, le nonce pourrait être
ih4f984hf
et l'état personnalisé{"role": "customer"}
. Ensuite, vous pouvez stocker des données pour la réhydratation pour cette demande comme ceci:Utilisez ensuite uniquement le nonce comme valeur pour le
state
paramètre de la requête. (Si vous souhaitez absolument combiner le nonce et les données dans lastate
valeur, assurez-vous de le chiffrer et sachez que la longueur de la valeur est limitée!)Lorsque vous recevez une réponse, vous récupérez la valeur du
state
paramètre. Recherchez-le et s'il correspond à la valeur du stockage local, vous pouvez traiter les données en utilisant l'état stocké. Si les nonces ne correspondent pas, la requête provient potentiellement d'un attaquant et ne doit pas être traitée.Générer le nonce
Rappelez-vous que la nature d'un nonce est qu'il n'est utilisé qu'une seule fois et doit être imprévisible! Imprévisible ici signifie idéalement aléatoire, mais pratiquement pseudo-aléatoire est correct si l'entropie est suffisamment élevée - dans les applications Web, vous voudrez peut-être vérifier Web API Crypto qui est assez bien pris en charge .
Pour plus d'informations, cela peut être utile:
la source