RESTful API を認証するためのさまざまなソリューションに関するさまざまな投稿を見てきましたが、この現在のシナリオを考えると、いくつか質問があります。
私のソフトウェア サービス (私たちは B2B 企業です) のクライアントがプログラムでリソースにアクセスできるようにする REST API を作成しました。API が適切に機能するようになったので、可能な限り標準化された方法で保護したいと考えています。API の呼び出し元に基づいて、特定のリソースへのアクセスを許可する必要があります。つまり、API のすべてのユーザーがすべてのリソースにアクセスできるわけではありません。
次の形式の URL を使用できます。
https://mydomain/api/students
https://mydomain/api/students/s123
https://mydomain/api/students/s123/classes
https://mydomain/api/students/s123/classes/c456
これまでのところ、これらの可能な解決策を考え出しました。
各クライアントに一意のキーを提供します。これを使用して、各 REST 呼び出しの最後に GET パラメーターとして渡される暗号化されたトークンを最終的に生成し、すべての要求を (再) 認証します。このアプローチは高すぎますか
ここに示されているように、HTTP 認証ヘッダーに値を指定します。#1とほぼ同じ?(ブラウザーに URL を貼り付けることはできませんが) 人々はこれらのヘッダーをもう使用していますか?
OAuth 2 を使用します (これについてはまだ少しわかりません)。OAuth 2 は実際にクライアントをログイン ユーザーとして認証しますか? そして、それは REST API がステートレスであるという精神に反するのではないでしょうか? 私は OAuth が私にとって適切な解決策であることを望んでいました (それは公的な標準であるため) が、少し読んだ後ではよくわかりません。REST API 呼び出しには過剰または不適切ですか?
私の目標は、API を使用したいクライアントごとに変更する必要のない API を提供することですが、むしろ、すべてのクライアントが利用できる標準ドキュメントを提供できるようにすることです。
不明な点がありましたら、追加の詳細を投稿していただければ幸いです。