複数の異なるクライアントを使用する場合にWeb APIを保護する最良の方法は何ですか?各クライアントには、接続する独自のAPIキーが必要です。今ではさまざまなことを読みましたが、まだいくつか質問があります。
私はこれを見つけました: http://bitoftech.net/2014/06/01/token-based-authentication-asp-net-web-api-2-owin-asp-net-identity/#comments でも十分ですか?
だから基本的に:
私はまた、彼が使用できる各クライアントにAPI秘密鍵を与えることについて読みました: http://bitoftech.net/2014/12/15/secure-asp-net-web-api-using-api- key-authentication-hmac-authentication /
最善のアプローチは何ですか?
トークンベースの認証を使用することで、順調に進んでいます。ここに実装の詳細を示すリンクがあります-
ユーザーインターフェイスなしのWeb APIでのトークンベースの認証
さらに、SSLを使用してチャネルを保護できます。
OAuth2およびOpenIdentityで使用されるトークンベースのアプローチは非常に広く普及しており、幅広いシナリオ(Webアプリ、モバイル、Deskopアプリ、マイクロサービス)を可能にします。
トークンを提供および消費するための優れたライブラリがいくつかあります。独自のプロトコルを実装するよりも優先する必要があります。後のアプローチはエラーが発生しやすく、他のクライアントが消費するのが難しくなります(将来必要になる場合)。 IdentityServer(オープンソース)を確認することをお勧めします。概要は here にあります。
一般に、トークンベースの認証についてブログをさらに深く掘り下げることをお勧めします。これは大きなトピックですが、それだけの価値はあります。
はい、OAuth2はリソースを保護するためのかなり標準的なプロトコルであり、カスタム実装をローリングする代わりに推奨します。各クライアントはclient_id/client_secretペア(ユーザー名、パスワードではない)を受け取り、それらを使用してOAuth Issuerからベアラートークンを取得します。その後、これらのトークンを使用して保護されたWeb APIのリソース。