3

C# で記述され、Azure でホストされている Web API があり、Azure API Management (AAM) がその API の前にあり、要求を調整しています。

API を呼び出すクライアントは JavaScript ベースであり、匿名のエンド ユーザーに代わって呼び出します。たとえば、Web サイトのホームページは、javascript を介して API を呼び出し、エンド ユーザーにログインを要求せずに情報を表示する場合があります。

AAM は、API の呼び出し元が有効な API キーを持っていることを確認します。公開されているソースから誰かが取得した場合でも、このキーがコピーされて悪用される可能性があります。

OAuth2 を使用して、人間の介入なしに JWT アクセス トークンを取得し、これをクライアントで公開することは可能ですか?

OAuth2 は、期限切れの JSON Web トークンを発行して、トークンの盗難のリスクを下げることができますが、人間の介入なしでこれを行うのに苦労しています。

OAuth2 は主にエンド ユーザーが開始する承認に関するものですが、IdentityServer3 にはハイブリッド アプローチがあるようです。このハイブリッド アプローチを使用して、最初にサーバーからサーバーに API キーを送信し、クライアント側のスクリプトで使用するために Web ページに JWT を出力することで、リモート Web サーバーにトークンを要求させることはできますか?

これにより、API キーが非表示になり、数分間使用される JWT のみが表示されます。

AAM は OAuth2 と統合して JWT アクセス トークンを検査できますが、このハイブリッド フローを理解していないと思います (ユーザー ログインを要求しないため、理解する必要はないかもしれません)。

それとも、あきらめてリクエストのみをレート制限する必要がありますか?

4

1 に答える 1