web-dev-qa-db-ja.com

複数のクライアントがASP.NET Web API 2を使用する安全な最良の方法

複数の異なるクライアントを使用する場合にWeb APIを保護する最良の方法は何ですか?各クライアントには、接続する独自のAPIキーが必要です。今ではさまざまなことを読みましたが、まだいくつか質問があります。

私はこれを見つけました: http://bitoftech.net/2014/06/01/token-based-authentication-asp-net-web-api-2-owin-asp-net-identity/#comments でも十分ですか?

だから基本的に:

  1. クライアントは指定されたユーザー名/パスワードで接続します
  2. クライアントは無記名トークンを受け取ります
  3. クライアントは、タイムスタンプが終了するまで、APIへの各投稿でこのトークンを使用します

私はまた、彼が使用できる各クライアントにAPI秘密鍵を与えることについて読みました: http://bitoftech.net/2014/12/15/secure-asp-net-web-api-using-api- key-authentication-hmac-authentication /

最善のアプローチは何ですか?

9
Kaizer

トークンベースの認証を使用することで、順調に進んでいます。ここに実装の詳細を示すリンクがあります-

ユーザーインターフェイスなしのWeb APIでのトークンベースの認証

さらに、SSLを使用してチャネルを保護できます。

http://www.c-sharpcorner.com/UploadFile/55d2ea/creating-and-using-C-Sharp-web-application-over-https-ssl/

4
Souvik Ghosh

OAuth2およびOpenIdentityで使用されるトークンベースのアプローチは非常に広く普及しており、幅広いシナリオ(Webアプリ、モバイル、Deskopアプリ、マイクロサービス)を可能にします。

トークンを提供および消費するための優れたライブラリがいくつかあります。独自のプロトコルを実装するよりも優先する必要があります。後のアプローチはエラーが発生しやすく、他のクライアントが消費するのが難しくなります(将来必要になる場合)。 IdentityServer(オープンソース)を確認することをお勧めします。概要は here にあります。

一般に、トークンベースの認証についてブログをさらに深く掘り下げることをお勧めします。これは大きなトピックですが、それだけの価値はあります。

1
Ralf Bönning

はい、OAuth2はリソースを保護するためのかなり標準的なプロトコルであり、カスタム実装をローリングする代わりに推奨します。各クライアントはclient_id/client_secretペア(ユーザー名、パスワードではない)を受け取り、それらを使用してOAuth Issuerからベアラートークンを取得します。その後、これらのトークンを使用して保護されたWeb APIのリソース。

0
Darin Dimitrov