2017-02-08 12 views
5

Web APIにトークンベースの認証を作成して、サードパーティアプリケーションがそれらのAPIにアクセスできるようにしたいと考えています。API認証のベストプラクティスは何ですか?

管理者ポータルから、ユーザー操作、委任、ロールおよび接続されたアプリケーションを手動で管理しません。

これらの要件では、jwtトークンを取得するためのベストプラクティスは何ですか?

OpenIDやOAuth2のようなプロトコルが必要ですか、単純にAPIKeyをとるエンドポイントを公開し、APIKeyが有効な場合はセキュリティトークンを返しますか?

+0

最善の方法は、秘密鍵に基づいて自分の側からJWTを構築するために第三者のアプリケーションと第三者のアプリケーションと秘密鍵を共有することです。あなたのAPIはトークンを検証するだけです。 –

+0

@CuongLeあなたはそれを議論する答えとしてあなたのコメントを追加していただけますか? – Homam

+0

コメントは本当にあなたの問題を解決していますか? –

答えて

2

私はあなたの要件がマシン間通信であることを理解しています。 「はい」の場合、最も簡単な方法は、「クライアント認証資格付与のOAuth 2.0のフロー」(documentationを参照)を実装することです。

上記の方法は、データに機密性の高いデータが含まれていない場合にのみ適しています。

その他のオプションは、独自のコードを使用するか、サードパーティのフレームワークを使用していずれかの全体認証サーバを実装し、(:documentationを参照してください)「のOAuth 2.0の認証コードグラント・フロー」に従うことであろう。

このオプションは高価で、最初のものをお勧めします。

+0

許可フローでは、client_credentialsはusername/passwordかclient ID/client secretかapikeyなのでしょうか? – Homam

+0

認可コードのユーザー名/パスワードクライアント資格証明の許可フローとクライアントID /クライアントシークレット許可フロー。私の答えに記載されているRFCの文書リンクでよく説明されています。 –

5

まず、OAuthとOpenIDの違いについて説明します。ユーザーadrianbanksは、このanswerの2つのウェルを対比しています。要約すると、OpenIDはあなたの身元を証明する認証です。 OAuthは承認に関するものですが、機能、データ、アプリケーションにアクセスできますか?今、あなたの質問に戻ってください。

OAuthが必要かどうかに関わらず、OWIN(.NET用Webインターフェイスを開く)ミドルウェアを調べる必要があります。私たちは現在、OWINを使用して、OAuth 2.0 Authorization Serverの機能を持つ独自のオープンAPIを実装しています。ただし、OWINはOAuth認証サーバーの実装に限定されません。間違いなくあなたのニーズに合うかどうかを見てください。

場合によっては、OAuth 2.0を実装する必要はありません。しかし、それは私が推薦しているものです。この問題のために、それは良い、安全な解決策です。この問題を解決するだけでなく、ユーザーがサードパーティの統合を許可できるようにするには、OAuth(より安全なオプション)が既に実装されています。

サードパーティインテグレーションを使用しているユーザーがいない場合は、APIキーを使用できます。 セキュアの方法で実装している限り、これは適切なオプションです。これ以上のものをお探しの場合は、postを読んでAPIキーを使用して、ASP.NET Web APIプロジェクトのサードパーティアプリケーションを安全に認証(および承認)してください。

関連する問題