私はサービス指向アーキテクチャーを設計していますが、クライアントを認識してリソースにアクセスできるようにするために、認証サービスも必要です。
実際、私は2つの可能な解決策を見つけました。
- pubkeyとprivatekeyを使用して各リクエストに署名します
- pubkeyとprivatekeyを使用したトークンベースの認証
私はoauth2サービスを想定していません。それは、私のニーズに合わせてシステムを設計するためのオーバーヘッドが多すぎるためです。代わりに、より単純な(しかし強力な)認証ソリューションを採用することを好みます。
したがって、ここにAuthenticationService
、APIリクエストを行うクライアント(リクエストと一緒に渡すトークンを取得する)によってクエリされるか、リクエストに署名したHMACの逆チェックを実行するために各単一のAPIエンドポイントによってクエリされることができます。一致するかどうかを確認します(HMACの生成に使用された秘密鍵が有効かどうかを確認します)。
最終的な開発者がいくつかの操作を実行する場合、最新のものの方が簡単であることがわかりますが、トークンを検証してその有効期限を処理するには、さらに多くのチェックが必要になります...
トークンソリューションは、単一要求HMACでは発生しない潜在的なセキュリティ問題を発生させる可能性がありますか?あなたは何を好みますか、そしておそらく、なぜですか?