2017-12-21 3 views
0

REST経由でリモートJavaサービスと通信するモバイルアプリケーションを作成しています。私は自分の(SpringBoot)Webサービスをhttps保護で保護しています(データの性質上、安全である必要があります)が、私の質問はhttps呼び出しを保護するために使用するユーザー/パスワードです。サービスユーザーまたはパブリックユーザーとのセキュアなRESTエンドポイント

httpsヘッダーで使用するユーザー名とパスワードは、クライアント(モバイルアプリ)とJavaサービスが知っているサービスアカウントか、パブリックユーザーのユーザー名とパスワードである必要がありますか?最も簡単なオプションはサービスアカウントを使用することだけですが、モバイルアプリにはそのような詳細が組み込まれており、(コンパイルされた形式ではあるが)一般に配布されることを意味します。

他の方法でユーザーのユーザー名とパスワードを使用するということは、ログオンRESTエンドポイントを開いて非セキュアにする必要があることを意味しますが、それはちょっと気になることです。

答えて

0

良い質問です。トークンベースの認証と承認の仕組みを使用すると思います。まず、ログインページで、ユーザー名とパスワードを入力します。ユーザー名とパスワードは、独自のユーザーストアを管理するリモートログインサービスを呼び出して認証されます。存在する場合は、既存のユーザーストアを使用できます。認証に成功すると、認証サービスはクライアントに有効なトークンを提供し、時折更新する必要があります。モバイルまたはウェブクライアントは、要求が送信されたときにトークンを下流のマイクロサービスに渡す必要があり、このトークンはAuthorization HTTPヘッダー内に送信する必要があります。

通常、ネットワーク上でユーザー名とパスワードを公開している間に、適切な解決策とは考えられないトークンが公開されています。トークンは、休憩のエンドポイントを確保するために人々が使用する通常の手順です。 Yous restエンドポイントは、すべての要求を傍受し、トークンを認証プロバイダに渡し、それを検証します。トークンが有効であればそれを許可し、それ以外の場合はトークンを拒否する必要があります。

セキュリティははるかに大きなトピックであり、httpsなどで送信されたデータを暗号化するトークン以外のX.509証明書があります。私は春のセキュリティdocumentationを見てみることをお勧めします、それは良い出発点になるでしょう。 Spring Securityは、開発者にとって多くのフックを提供しています。 JWTスタイルトークン、Oauthトークン、スプリングセキュリティを使用すると、これらの異なるフォームもサポートされます。

+0

お返事ありがとうございます。私が本当に理解しようとしているのは、会話中にサービスが完全に暗号化されたときです。 – user1387735

関連する問題