有点天真的问题。我正在使用grant type = Authorization code grant实现OAuth服务器2.0。这就是我所做的事情
1)创建2个端点为 / login 和 / token
2)创建一个html为
的登录页面<html>
<form action=\"/login\" method=\"post\">
<div class=\"textcontainer\">
<label><b>Sign in</b></label>
</div>
<div class=\"emailcontainer\">
<input type=\"text\" placeholder=\"Enter email\"
name=\"uname\" required>
</div>
<div class=\"passwordcontainer\">
<input type=\"text\" placeholder=\"Enter Password\"
name=\"psw\" required>
</div>
<div class=\"signincontainer\">
<button type=\"submit\">Sign in</button>
<input type=\"checkbox\" checked=\"checked\"> Remember me
</div>
<div class=\"container\" style=\"background-color:#f1f1f1\">
<span class=\"psw\">Forgot <a href=\"#\">password?</a></span>
</div>
</form>
3)客户端发送
时将显示上述页面GET /登录CLIENT_ID = CLIENT_ID&安培; REDIRECT_URI = REDIRECT_URI&安培;状态= STATE_STRING&安培;范围= REQUESTED_SCOPES&安培; RESPONSE_TYPE =代码
4)我将保存状态并重定向URI,并显示html页面。
5)当用户输入电子邮件和密码并单击提交按钮时,POST将以 POST / login 的形式发送到我的服务器,我将从请求中获取电子邮件和密码并进行验证。
现在的问题是,我无法找到一种方法来了解此POST是否来自同一个已调用上一个GET的客户端。
我可以在提交按钮帖子中再次重新发送 状态吗?保存客户端IP是唯一的方法吗?
我理解 POST /令牌,以便该部分清晰。
由于 森美
答案 0 :(得分:0)
您可以在发送表单之前在服务器上生成唯一标识符(GUID)。 然后将其放入隐藏输入内的表单中:
<form>
... your code
<input type="hidden" value= "<%= <your identifier> %>">
</form>
然后,这个唯一值将在POST
。
插入标识符的方式取决于您的编程语言,我使用C#作为上述示例。