我试图找出授权码授权是否允许服务器使用POST调用redirect_uri。根据我的经验,大多数授权服务器都使用GET,但我偶然发现了一个使用POST调用redirect_uri的案例(Acuity Scheduling API)。这是违反规范还是预期的?我查阅了OAuth2规范和几个在线来源。我找不到一个明确的来源来证实这一点。
vxqlmq5t1#
正如Tore所描述的,这是规范中的一个有效选项。要实现此行为,您应该使用参数response_mode=form_post启动授权流。这将指示授权服务器返回Tore描述的HTML表单。此行为包含在两个规范中:
response_mode=form_post
response_mode
form_post
ryoqjall2#
这是完全好的,通常是首选的方式发布授权代码到客户端。它是如何完成的,是授权服务器返回一个HTML页面与隐藏的HTML表单。然后使用JavaScript自动提交给客户端。该表单可能看起来像这样:
HTTP/1.1 200 OK Content-Type: text/html;charset=UTF-8 set-cookie: session=s%3A99AF5HUWVOclLXJjEWxKIxUSu-XES_Im.Yr39g9QIZ%2FSnmZ84NsYAxNc... <html><head><title>Submit This Form</title></head> <body onload="javascript:document.forms[0].submit()"> <form method="post" action="https://example.com/Account/LoggedIn"> <input type="hidden" name="access_token" value="bMJgE4X4FuL6PNRxxdByKJfruEA..."/> <input type="hidden" name="expires_in" value=“3600"/> <input type="hidden" name="token_type" value="Bearer"/> <input type="hidden" name="state" value="36819"/> <input type="hidden" name="id_token" value="eyJ0eXAiOiJKV...XXX...eEA_ZCF4"/> </form> </body></html>
字符串重要的是要认识到,这是浏览器做实际的POST,而不是授权服务器。
2条答案
按热度按时间vxqlmq5t1#
正如Tore所描述的,这是规范中的一个有效选项。要实现此行为,您应该使用参数
response_mode=form_post
启动授权流。这将指示授权服务器返回Tore描述的HTML表单。此行为包含在两个规范中:
response_mode
授权请求参数form_post
响应模式。ryoqjall2#
这是完全好的,通常是首选的方式发布授权代码到客户端。它是如何完成的,是授权服务器返回一个HTML页面与隐藏的HTML表单。然后使用JavaScript自动提交给客户端。
该表单可能看起来像这样:
字符串
重要的是要认识到,这是浏览器做实际的POST,而不是授权服务器。