2017-12-04 1 views
0

ちょっとした質問。 OAuthサーバ2.0を認可タイプ=認可コード付与で実装しています。ここで私は/ログイン/トークン HTMLでのログインページを作成し承認コード付きOauthサーバーの実装grant

2)

として
<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)として

1)作成した2つのエンドポイントをやっていることですクライアントが送信すると、上記のページが表示されます

/ログインをGET!のclient_id = CLIENT_ID & REDIRECT_URI = REDIRECT_URI &状態= STATE_STRING &範囲= REQUESTED_SCOPES & response_type =コード

4)私は、状態を保存し、URIをリダイレクトし、HTMLページが表示されます。

5)ユーザーが電子メールとパスワードを入力して[送信]ボタンをクリックすると、私のサーバーにPOST/loginというPOSTが発行され、要求から電子メールとパスワードを取得して確認します。

ここで問題は、このPOSTが以前のGETを呼び出した同じクライアントから来たものかどうかを知る方法を見つけることができないことです。

私は送信ボタンのポストに再び再送状態に行うことができます任意の方法/ htmlのトリックはありますか?クライアントIPを保存するだけですか?

私はPOST/tokenを理解していますので、その部分はクリアです。

おかげ サミー

+0

あなたは自分のサーバーを絶対に実装する必要がありますか? –

+0

はい自分のサーバーを実装する必要があります。 – Sammy

答えて

0

フォームを送信する前に、サーバー上で一意識別子(GUID)を生成することができます。 はその後、非表示の入力フォーム内にそれを置く:

<form> 
    ... your code 

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

を次に、このユニークな値がPOSTにあなたに返されます。

識別子を挿入する方法はプログラミング言語によって異なりますが、上記の例ではC#を使用しました。

+0

Alexさん、ありがとうございました。このような状態そのものを隠しパラメータとして使用できます。 – Sammy

関連する問題