使用授权代码授权实现Oauth服务器

时间:2017-12-04 12:11:06

标签: web oauth oauth-2.0

有点天真的问题。我正在使用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 /令牌,以便该部分清晰。

由于 森美

1 个答案:

答案 0 :(得分:0)

您可以在发送表单之前在服务器上生成唯一标识符(GUID)。 然后将其放入隐藏输入内的表单中:

<form>
    ... your code

    <input type="hidden" value= "<%= <your identifier> %>">
</form>

然后,这个唯一值将在POST

中返回给您

插入标识符的方式取决于您的编程语言,我使用C#作为上述示例。