18

私は REST API にかなり慣れていませんが、すでにかなりの数の質問が投稿されていることに気付きました。ただし、これらを熟読すると、実際には、これを処理する方法についてさらに混乱しました。

データを転送するために単純に使用しているSlim Frameworkを使用して REST API を作成しました。ユーザーのログインや認証は使用しないので、これを保護するには、公開鍵と秘密鍵を使用するシステムが必要だと思いますが、よくわかりません。

これを行うための正しい/最も安全な方法、または素晴らしいチュートリアル/リソースについて誰かが洞察を持っている場合。どんな助けでも大歓迎です。

4

1 に答える 1

17

SSL を使用して、転送中のデータを暗号化できます。

しかし、SSL は単なる暗号化です。サーバー側の SSL は、クライアントの認証も承認も行いません。承認とは、発信者が求めていることを行うことが許可されているかという質問に答えるものと考えることができます。. 呼び出し元の ID を確立する認証または認証は、通常、承認を行うために必要な最初のステップです。「アイデンティティ全体」が必要ない場合もあります。特定の側面を確認する必要があるだけです。たとえば、自動化された洗面所のゲートは、誰が誰であるかを知る必要はありませんあなたはそうでしたが、身元を確認するためにあなたが男性または女性であった場合に限ります. 同じように、あなたが誰であるかを気にしないサービスもあります。特定のネットワーク (ip ホワイトリスト) から呼び出している場合、または特別なトークンを持っている場合は、アクセスが許可されます。

サーバーが許可された呼び出しと許可されていない呼び出しを区別できるようにするには、いくつかのオプションがあります。

  • IP ホワイトリスト。サービスを呼び出すアプリまたはエージェントの IP アドレスがわかっている場合は、サービスの実装でそれを指定できます。このサービスは、着信要求の IP をチェックし、ホワイトリストにないものを拒否できます。これは、発信者のアドレスに基づく一種の「暗黙の」承認です。

  • 各呼び出しでアプリが提供するシークレット トークン。認証を行いたくないとおっしゃいましたが、これは一種の認証です。「ベアラー トークン」と呼ぶこともできます。このトークンを持つ人は誰でも承認を取得します。サーバーでトークンの値を確認し、既知の値と一致しない呼び出しを拒否します。これは、トークンが明示的に渡され、ネットワーク アドレスとは関係がないことを除いて、IP ホワイトリストとほぼ同じように機能します。

  • トークン + キー ペア。これはユーザー名/パスワードのようなものですが、アプリの認証に使用できます。これを使用して、アプリ自体の ID を提供します。上記のようにサービス側で確認してください。

  • ユーザー名/パスワード。アプリのユーザーを認証するため。

これらを組み合わせて、必要なソリューションを作成することができます。つまり、クライアント要求は正しい I アドレスからのものである必要があり、「承認済み」と見なされるには、アプリのトークン/キーと、ユーザーのユーザー名/パスワードが必要です。

于 2012-10-30T19:33:57.863 に答える