1

問題を説明しようと思います。

サイト パートナー向けに完全に JS (ajax/json) で API が組み込まれているサービスがあります。サイトパートナーとは、何らかのサービス契約を結んでいる人です。そのため、API へのアクセスには、特定の人 (サイト パートナー) のみが含まれます。私がしなければならないことは、サービスが実際にサイトパートナーからのリクエストであることを確認するための認証方法を作成することです。

複雑なのは、API が完全に JS で記述されていることです。そのため、HTTP 認証、秘密 API キー、RSA キー交換のいずれも、このタイプの API には適していません。これは、サービスが受信するためにいくつかの認証パラメーターが必要であり、それを行う唯一の方法は、JSON を使用して AJAX 経由でそれらを渡すことであるためです。フォーマット。そのため、ページのソース コードを調べる方法を知っている人なら誰でも、これらのパラメーターをコピーして、好きなように使用することができます。

少なくともサイトパートナーは共有ホスティングでホストできるため、IP 制限のあるバリアントも適切ではありません。

不明確なハッシュ(サービスに対してのみクリア)+タイムスタンプを持つAPIキーを使用することを考えました。しかし、この方法は遅かれ早かれ明らかになるでしょう。

とにかく、頭に浮かぶすべてが完全に適しているわけではありません。多分誰かがその問題に直面したことがありますか?どんな答えでも感謝します。

4

1 に答える 1

0

サービスは受信するためにいくつかの認証パラメーターを必要とし、それを行う唯一の方法は、JSON 形式を使用して AJAX 経由でそれらを渡すことです。

JSON と JavaScript の違いを誤解していると思います。 JSONは、XML や SOAP のようなデータ形式です。読むのに JavaScript を使う必要はありません。PHP、Ruby、Java、Python などでは、JSON が強力にサポートされています。通常、JSON は HTTP 経由で渡されます。

そのため、ページのソース コードを調べる方法を知っている人なら誰でも、これらのパラメーターをコピーして、好きなように使用することができます。

サービス プロバイダーが何らかのキーの使用を要求している場合、ブラウザー内でそれを行うことを望んでいるとは思えません。Cross Origin の制約により、リクエストを行うことさえ許可されない可能性があります (ほとんどのブラウザーでは、リクエスト (特に POST) で、リクエスト元ではないドメインを実行することはできません)。

私の推測では、サーバー側でプロバイダーを使用して処理を行う必要があると思います。プロバイダーにドキュメントがある場合は、それを参照します。それ以外の場合は、開発者の 1 人に助けを求めることができるかどうかを確認してください。

于 2012-04-30T00:08:02.493 に答える