APIのセキュリティメソッドを探しています。ユーザー/パスワードを使用したクライアントログイン後にJWTアクセストークンを使用すると、独自のAPIを使用する内部Webアプリでうまく機能します。ただし、他のシステム/クライアントがデータを消費するために使用できる外部APIをどのように保護するかを検討しています。
通常、client_idとclient_secretを提供するAPIサービスが表示されます。ただし、これはOAuth2で使用されることになります。このような大きな仕様の成功した安全な実装に自信がなく、auth0に依存したくないので、実装する必要はありません。
アプリケーションが使用する外部APIに単純なJWTを使用する場合、ユーザー/パスワードとは異なるIDタイプを使用する必要があると思います。 IDやセキュアキーなど。何が一番いいですか?
はい、単純なトークンでパブリックAPIを安全に使用できます。
このトークンの構造:
トークンを持っている人だけがAPIにアクセスできます。 APIへのリクエストごとに、それとともにトークンを送信します。 APIはトークンを検証し、有効な場合はデータを返します。
しかし、トリッキーな質問は、どのようにしてこのトークンを取得するのですか?
どこかに認証ページが必要になります。ユーザーが認証されたら、ユーザーにAPIトークンの作成/ダウンロードを許可できます。その後、このトークンを任意のユーザーまたは任意のアプリケーションに与えることができ、ユーザーは自分のデータにアクセスできます。
OAuth2は主にこのトークンを取得するプロセスを自動化するため、ユーザーはコピーと貼り付けなどの手動の手順を実行してトークンを共有する必要がありません。
注
過去にプレイしたゲームは、このスキームを使用してパブリックAPI:ギルドウォーズ2を作成しました。ユーザーは、ウェブサイトで自分のアカウントにアクセスするときに、トークンを作成してコピーし、アカウント情報を分析する他のアプリケーションにそれを与えることができます。