Kann ich OAuth 2.0 ohne Umleitungsserver verwenden?
P粉710478990
P粉710478990 2023-08-22 22:18:09
0
2
536
<p>Ich versuche, einen nativen Java-basierten Client zu erstellen, der mit der SurveyMonkey-API interagiert. </p> <p>SurveyMonkey erfordert die Generierung eines langlebigen Zugriffstokens mit OAuth 2.0, mit dem ich nicht sehr vertraut bin. </p> <p>Ich habe stundenlang gegoogelt und glaube, die Antwort lautet „Nein“, aber ich wollte nur sichergehen: </p> <p>Kann ich einen einfachen Java-Client schreiben, um mit SurveyMonkey zu interagieren,<strong>ohne meinen eigenen Weiterleitungsserver</strong> einrichten zu müssen? </p> <p>Ich halte es für notwendig, über einen eigenen Onlinedienst zu verfügen, um von OAuth 2.0 generierte Token empfangen zu können. Kann ich SurveyMonkey das Token nicht einfach direkt an meinen Kunden senden lassen? </p> <p>Wenn ich irgendwo mein eigenes benutzerdefiniertes Servlet einrichte und es als Redirect_uri verwende, sollte der korrekte Ablauf wie folgt aussehen: </p> <ol> <li>Der Java-Client fordert ein Token von SurveyMonkey an, wobei „redirect_uri“ die URL meines benutzerdefinierten Servlets ist. </li> <li>SurveyMonkey sendet das Token an die URL meines benutzerdefinierten Servlets. </li> <li>Der Java-Client fragt die URL des benutzerdefinierten Servlets ab, bis er ein Token erhält. </li> </ol> <p>Ist das richtig? </p>
P粉710478990
P粉710478990

Antworte allen(2)
P粉949190972

是的,可以在没有回调URL的情况下使用OAuth2。 RFC6749介绍了几种流程。隐式流程(现已弃用[1])和授权码流程(Authorization Code)需要重定向URI。然而,资源所有者密码凭证流程(也已弃用[1])不需要。

自RFC6749发布以来,还发布了其他规范,这些规范不需要任何重定向URI:

此外,使用OpenID Connect时,响应模式不一定是重定向到redirect_uri参数,而可以是对该端点的POST请求。有关详细信息,请参阅OAuth 2.0表单POST响应模式规范。

无论如何,如果上述授权类型不适合您的需求,您可以创建一个自定义授权类型


[1]:OAuth 2.1规范(草案07)

P粉713866425

并不完全准确,OAuth流程的整个重点在于用户(你代表其访问数据的客户端)需要给予你访问他们数据的权限。

请参阅身份验证说明。你需要将用户发送到OAuth授权页面:

https://api.surveymonkey.net/oauth/authorize?api_key<your_key>&client_id=<your_client_id>&response_type=code&redirect_uri=<your_redirect_uri>

这将向用户显示一个页面,告诉他们你正在请求访问他们账户的哪些部分(例如查看他们的调查、查看他们的回答等)。一旦用户通过在该页面上点击“授权”来批准,SurveyMonkey将自动跳转到你设置为重定向URI的页面(确保上述URL中的重定向URI与你应用程序设置中设置的相匹配)并返回授权码。

因此,如果你的重定向URL是https://example.com/surveymonkey/oauth,SurveyMonkey将使用授权码将用户重定向到该URL:

https://example.com/surveymonkey/oauth?code=<auth_code>

然后,你需要使用该授权码通过向https://api.surveymonkey.net/oauth/token?api_key=<your_api_key>发送POST请求来交换访问令牌,并提供以下POST参数:

client_secret=<your_secret>
code=<auth_code_you_just_got>
redirect_uri=<same_redirect_uri_as_before>
grant_type=authorization_code

这将返回一个访问令牌,然后你可以使用该访问令牌来访问用户账户上的数据。你不需要将访问令牌提供给用户,它是供你使用以访问用户账户的。无需轮询或其他操作。

如果你只是访问自己的账户,可以使用应用程序设置页面提供的访问令牌。否则,除非设置自己的重定向服务器,否则无法为用户获取访问令牌(除非所有用户都属于同一组,即同一账户下的多个用户;但我不会深入讨论这个)。SurveyMonkey需要一个地方来发送授权码给你,你不能只是请求一个。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!