シングルページアプリで認証を実行する最も安全な方法は何ですか?特定のクライアント側またはサーバー側のフレームワークについて話しているのではなく、一般的なガイドラインまたはベストプラクティスについて話しているだけです。すべての通信は主にsockJSを介して転送されます。
また、OAuthは問題外です。
ここに2つの出発点があると思います。
単一のWebアプリと同じサーバー上のWebサービス/ RESTサービス
そうすることは珍しいことではなく、必ずしも悪いことでもありませんし、明らかに最も簡単な方法でもあります。選択した認証(基本、ダイジェスト、フォームなど)に関係なく、APIとアプリはサーバー上の同じユーザーセッションを共有します。つまり、いくつかのことを意味します。
このアプローチは、単純なWebサイトをすばやく起動する場合や、他のサービスからアクセスする必要がないAPIに完全に適していると思います。そして、そのアプローチから始めたとしても(プログラミングに関してはすべてが可能であることはわかっていますよね?)いつでも、分割されたAPI /アプリモデルに切り替えることができます。
1つのサーバー上のWebサービス/ RESTサービスと別のサーバー上のアプリ
「外部」APIにリンクされたSPA、またはサーバーの別のインスタンスに保存されているAPIに対してユーザーを認証するための今日のベストプラクティスは、OAuthを模倣することです。キーは...キー、またはメインサーバーから取得したトークンを使用します。基本的なフローは次のとおりです。
このアプローチにより、次のことが可能になります。
結論として、決定する前にKISSおよびYAGNIの原則を適用します。また、いつでも1つのモデルから別のモデルに移動できることを覚えておいてください。
この投稿をチェックしてください HTML5 WebアプリでのOAuth2の使用 。 @jandersenの回答は、単一ページアプリケーションでの リソース所有者のパスワード資格情報 フローの使用についての適切な説明を提供します。いずれの場合でも、このアプリの推奨フローは Implicit Grant です。実際、参照されている投稿に対する@jandersenの応答は、暗黙の付与に近いものとして機能するようにリソース所有者のパスワード資格情報を微調整することに関するものです。