Puis-je utiliser OAuth 2.0 sans serveur de redirection ?
P粉710478990
2023-08-22 22:18:09
<p>J'essaie de créer un client Java natif qui interagit avec l'API SurveyMonkey. </p>
<p>SurveyMonkey nécessite de générer un jeton d'accès de longue durée à l'aide d'OAuth 2.0, que je ne connais pas très bien. </p>
<p>Je cherche sur Google depuis des heures et je pense que la réponse est non, mais je voulais juste m'assurer : </p>
<p>Puis-je écrire un client Java simple pour interagir avec SurveyMonkey,<strong>sans avoir à configurer mon propre serveur de redirection</strong> </p>
<p>Je pense qu'il est nécessaire d'avoir mon propre service en ligne pour pouvoir recevoir les tokens générés par OAuth 2.0. Ne puis-je pas demander à SurveyMonkey d'envoyer le jeton directement à mon client ? </p>
<p>Si je configure mon propre servlet personnalisé quelque part et que je l'utilise comme redirect_uri, le flux correct devrait être le suivant : </p>
<ol>
<li>Le client Java demande un jeton à SurveyMonkey, où redirect_uri est l'URL de mon servlet personnalisé. ≪/li>
<li>SurveyMonkey envoie le jeton à l'URL de mon servlet personnalisé. ≪/li>
<li>Le client Java interroge l'URL du servlet personnalisé jusqu'à ce qu'il obtienne un jeton. ≪/li>
</ol>
<p>Est-ce exact ? </p>
Oui, il est possible d'utiliser OAuth2 sans URL de rappel. RFC6749 introduit plusieurs processus. Le flux implicite (maintenant obsolète[1]) et le flux de code d'autorisation(Authorization Code) nécessitent un URI de redirection. Cependant, le flux d'informations d'identification du mot de passe du propriétaire de la ressource (également obsolète[1]) n'est pas requis.
Depuis la publication de la RFC6749, d'autres spécifications ont été publiées qui ne nécessitent aucun URI de redirection :
De plus, lors de l'utilisation d'OpenID Connect, le modèle de réponse ne doit pas nécessairement être une redirection vers un paramètre
redirect_uri
, mais peut être une requête POST vers ce point de terminaison. Consultez la spécification OAuth 2.0 Form POST Response Pattern pour plus de détails.Quoi qu'il en soit, si le type d'autorisation ci-dessus ne répond pas à vos besoins, vous pouvez créer un type d'autorisation personnalisé.
[1] : Spécification OAuth 2.1 (projet 07)
Pas tout à fait exact, l'intérêt du processus OAuth est que l'utilisateur (le client au nom duquel vous accédez aux données) doit vous donner la permission d'accéder à ses données.
Voir Instructions d'authentification. Vous devez envoyer l'utilisateur vers la page d'autorisation OAuth :
Cela montrera à l'utilisateur une page lui indiquant à quelles parties de son compte vous demandez l'accès (par exemple, consulter ses enquêtes, consulter ses réponses, etc.). Une fois que l'utilisateur a approuvé en cliquant sur « Autoriser » sur cette page, SurveyMonkey accédera automatiquement à la page que vous avez définie comme URI de redirection (assurez-vous que l'URI de redirection dans l'URL ci-dessus correspond à celui défini dans les paramètres de votre application) et reviendra au code d'autorisation.
Donc, si votre URL de redirection est
https://example.com/surveymonkey/oauth
, SurveyMonkey redirigera l'utilisateur vers cette URL en utilisant le code d'autorisation :https://example.com/surveymonkey/oauth?code=<auth_code>
Vous devrez ensuite utiliser ce code d'autorisation pour échanger le jeton d'accès en envoyant une requête POST à
https://api.surveymonkey.net/oauth/token?api_key=<your_api_key>
, en fournissant les paramètres POST suivants :Cela renverra un jeton d'accès que vous pourrez ensuite utiliser pour accéder aux données du compte utilisateur. Vous n'avez pas besoin de donner le jeton d'accès à l'utilisateur, il vous appartient de l'utiliser pour accéder au compte utilisateur. Aucune interrogation ou autre opération requise.
Si vous accédez uniquement à votre propre compte, vous pouvez utiliser le jeton d'accès fourni dans la page des paramètres de l'application. Sinon, il n'y a aucun moyen d'obtenir des jetons d'accès pour les utilisateurs à moins que vous ne configuriez votre propre serveur de redirection (sauf si tous les utilisateurs appartiennent au même groupe, c'est-à-dire plusieurs utilisateurs sous le même compte ; mais je n'entrerai pas dans les détails). SurveyMonkey a besoin d'un endroit pour vous envoyer des codes d'autorisation, vous ne pouvez pas simplement en demander un.