2017-05-12 1 views
0

VB.net、Java、C#、C++、Node.jsなどの現代の言語で作成されたアプリケーションからサーバーにデータをプッシュする必要があります。これらのアプリケーションは小売店で実行されており、当社のサービスは3者サービスです。データをプッシュするためにREST APIを提供する予定ですが、懸念事項はどのようにして1つのストアを認証するかです。アクセスキーと秘密鍵のアプローチは、ここで概説:: - >だから何がより良いアプローチとなります http://docs.aws.amazon.com/AmazonS3/latest/dev/S3_Authentication2.htmlクライアント側のデスクトップ上で実行されているアプリケーション用のREST APIの認証

各ストアは、複数の課金機/コンピュータを持つことができ、私はAWSの方法を使用していたと思った通りの

ワン私たちのインターフェイスからローカルマシンの設定にKeysを貼り付ける必要があるため、AWSによる認証が必要です(現時点では、私たちのサービスはバックエンドサーバではなくフロントエンドアプリケーションから直接呼び出されると仮定しています)。

私は混乱していますこの問題に近づく方法 - フロントエンドサービスまたはバックエンドサービスからREST API呼び出しを行う必要がある場合そのフロントエンドはどのようにストアを認証するのですか?最初の答えに

+1

OAuth2、OpenID Connect、IdentityServerなどを見てみましょう。あなたの人生を少し楽にしたいと思って、あなた自身の認証/認証のホストを控えるなら、[this](https://auth0.com/)のようなクラウドソリューションがあります。 –

+0

ありがとう@WimOmbelets。私はOAuth2とさまざまな助成金について読んでいます。ユーザー名とパスワードをインタラクティブな方法で取ることができるパスワード認可を使うことをお勧めします。リフレッシュトークンもサポートしています。私は最初にオープンソースライブラリを使ってプロトタイプを作成しています。私の場合、認可サーバーとリソースサーバーは同じ会社によってホストされます。パスワードの許可は、他の許可タイプとのURIリダイレクトの問題を避けるのにも役立ちます。 Node.jsにnode-oauth2-serverが見つかりました。 Node.jsのバックエンドとしての推奨事項はありますか? – j10

+0

申し訳ありませんが、私はあなたに合理的なアドバイスを与えるために十分なノードについて知りません。 –

答えて

1

私はこの問題に近づいて行くためにどのように混乱しています - REST APIコールは、フロントエンドから作られたか、バックエンドサービスをすべきかと そのフロントエンドの方法であれば私は店を認証するつもりですか?

あなたは

を言うので、私は、当社のサーバーにVB.net、Javaの、C#、C++、 のNode.jsや他の近代的な言語で作られたアプリケーションからデータをプッシュする必要があります。

私には、サーバー(顧客) - >サーバー(REST API)の通信が必要なようです。

セキュリティオプションに入る前に、セキュリティと時間/リソースについて考える必要があります。

セキュリティから始めて、HIPAA、PIIまたはその他の機密データを扱う場合は、間違いなくより多くの調査を行います。

次に、時間/リソース。 AuthRocketまたはOktaのようなSaaSサービスは、生活をはるかに簡単にしますが、毎月の費用です。あなたはオープンソースライブラリをあなたのAPIにロールインすることができます。開発、テスト、および管理(そしてユーザー登録、PWの損失など)に時間を費やすだけで済みます。

これで認証が行われました。 AmazonのようなID /トークン認証が最も一般的な方法です。顧客が発行するすべてのRESTリクエストには、IDとトークン(例:ID=customer-123, Token=laksdjflaksjdf)が含まれます。複数のマシンを持つ顧客を処理するために、マシンごとに1つ、n個のトークンを発行することができます。顧客は、各マシンに資格を設定する責任があります。繰り返しますが、これは最も一般的な方法です。

OAuthを使用することもできますが、個人ではなく企業(通常はOAuthは開発者向けAPIのため)であるため、これはユースケースにはあまり意味がありません。

その他のさまざまなトークンベースの認証手法もありますが、通常はクライアント - > API要求(ウェブサイト - > API)に適しています。

+0

私はアマゾンの方が良いと同意します。 AccessKeyIdとSecretKeyのシンプルなバージョンを使用して、顧客がシステムにログインするたびに覚えて入力することができます。このようなシナリオでは、どのようにして顧客(店主)がAccessKeyIdとSecretKeyをリセットするのですか - 何度もコンピュータが請求アプリケーションのみにアクセスできることを意味します - 資格をリセットするためのポータルを用意しています。彼らがポータルにアクセスする一般的なマシン - 資格情報をリセットし、それらを使用しますか? – j10

+0

このようなコンテキストでAWSのような権限の展開を見たことがありますか。初めてAPIを作成しています。 – j10

+0

AWS API Gatewayは、生成されたAccessKey、SecretKey(username、passwd)を許可できるこのタイプのメカニズムをサポートしています。また、API呼び出しを認証し、拡張オプションをサポートします。 – j10

関連する問題