まず第一に、私の英語が下手でごめんなさい、そしてこの質問をクリックしてくれてありがとう。
別のWebサーバーのAPIを使用するGUIサービス(単純なhtml)だけを作成したいと思います。
私のサービスは、他のAPIに要求する「htmlボタン」のみを提供します。
そこで、APIkeyとSecretKeyを転送するPOSTメソッドフォームをhtmlにコーディングしました。
'uuid'、 'jsonwebtoken'モジュールを使用してAPIkeyとSecretkeyを処理しました。(APIプロバイダーはこれを必要としていました)
また、「request」モジュールを使用してAPIをリクエストしました。
これが私のコードの一部です。
...
const request = require('request');
const { v4: uuidv4 } = require('uuid');
const sign = require('jsonwebtoken').sign
...
,(req, res)=>{
const access_key = req.keydata.apikey;
const secret_key = req.keydata.secret;
const server_url = "https://api.url.com";
const payload = {
access_key: access_key,
nonce: uuidv4(),
};
const token = sign(payload, secret_key);
const options = {
method: "GET",
url: server_url + "/v1/foo",
headers: {Authorization: `Bearer ${token}`},
}
request(options, (error, response, body) => {
if (error) throw new Error(error);
res.send(body);
})
...
しかし、この方法では、クライアントではありませんが、他のAPIにリクエストします。
リクエスターをクライアントに設定したい。私のサーバーの方法ではありませんリクエストを行います。
サーバーがAPIkeyとsecKeyを使用して作成した「トークン」をクライアントに送信できますか?
その後、クライアントはトークンを含むカスタムヘッダーを使用してXHR toAPIを実行します。
この方法でセキュリティの問題はありますか?
またはリクエスターを変更する他の方法はありますか?
サーバーがAPIkeyとsecKeyを使用して作成した「トークン」をクライアントに送信できますか?
はい。実際、これはかなり一般的であり、通常行うことです。(たとえば、AWS S3のユーザーはURLに署名し、それらをクライアントに送信します。クライアントは実際にS3に直接リクエストを行います。)
JSONを使用するだけで、クライアントが使用する必要のあるURLとヘッダーを返すことができます。
その後、クライアントはトークンを含むカスタムヘッダーを使用してXHR toAPIを実行します。
あなたがしたい場合はXHRを使用していますが、チェックアウトすることができます取得APIを。作業が簡単で、ブラウザで十分にサポートされています。
この方法でセキュリティの問題はありますか?
あんまり。署名されたURLが他人に傍受されて使用されないように、どこでもHTTPSを使用していることを確認してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加