2016-10-31 18 views
2

jwtやその他の方法でapiレスポンスを保護する方法はありますか?認証なし(ログインページ)なので、オーナーサイトだけがAPIにアクセスできるようにします。 Googleで見たすべての方法とチュートリアルは、jwtのログインシステムに基づいていました。認証なしのjwtでセキュリティで保護されたapiキー

例として、私は次のように残りのAPIを持っている場合、:example.com

router.get('/api/posts', (req, res) => { 
var body = ... // get some via database 
res.json(body); 
}) 

それから私は私のサイトでこれを消費します。最も重要なのは認証なし(ログインシステム)

+0

はあなたに見えるの経路である可能性があります。 – James

+0

私は理解していません –

+0

httpリクエストのヘッダーとして何らかの識別子を渡してからAPIで確認してください。 –

答えて

1

まず、すべてのAPIリクエストはhttpsを経由する必要があります。

次に、各ユーザーに毎回送信する必要がある一意のトークンを与えることで、ユーザー固有のAPIを「保護」することができます。 APIを要求したユーザーのホストまたはユーザーエージェントを確認し、特定のカスタムユーザーエージェントのみを許可することもできます(必要に応じて)。

以外: ユーザーが同じサーバーにログインしているときにJSON応答が必要な場合は、特定のCookieまたはセッションが設定されているかどうかを確認して、特定の1人のユーザーに関連付けることができます。

このAPIのサーバーからサーバーへの要求を行う場合は、サーバーのホスト名が有効で、アクセスが許可されているサーバーのホスト名と一致するかどうかを確認できます。

また、暗号化を使用してAPIレスポンスを保護することもできます(必要に応じてここでも同様)。これが当てはまる場合は、GPG/PGPに類似した秘密/公開鍵の暗号化を使用できます。もちろん、APIにアクセスする必要があるユーザーだけが応答を解読できるようにする必要があります。

GUID(Globally Unique Identifier)は、誰かがあなたのAPIへのパスを見つけることができないかどうか気にしない場合、オプションになる可能性があります。 GUIDのURLは次のようになります。URLパラメータとしてGUIDを使用して

example.com/api/v1/c9a646d3-9c61-4cb7-bfcd-ee2522c8f633

+0

私はユーザーのログインなしでjson apiを消費するサイトを持っています。 –

+0

次に、ページへのアクセスが許可されているすべてのユーザーに対してCookieを設定します。どうにかして、ユーザーがログインせずにAPIレスポンスを表示するかどうかを知る必要があります。おそらくIPアドレスまたはホスト名をチェックすることによってですか? – wigi

+0

この投稿はIPアドレスに依存していません:http://billpatrianakos.me/blog/2013/09/12/securing-api-keys-in-a-client-side-javascript-app/ –

関連する問題