2017-02-14 13 views
0

私はnodeのSaaSアプリケーション用のExpressサーバーを持っています。 node/expressアプリケーションは、会社のランディングページ、登録またはユーザー、認証、ユーザーおよびパスワードの変更を処理します。これはすべてnode/expr e ssで構築されます。認証はpassportを使用して行われます。アプリケーションとAPIマイクロサービスの両方のサービスを認証します

ユーザがログインすると、彼はReact,react-routeおよびReduxで構築されたダッシュボードアプリケーション(SaaSアプリケーション自体)にリダイレクトされます。 Reduxは、現在node/express APIにコールする必要があります(現在は同じnode/expressサービスにあります)。

APIはReact Nativeを使用して開発するモバイルアプリでも使用されます。

サービスをSaaSアプリケーションと会社ページの処理、登録など、異なるノードモジュールに分割したいと考えています。マイクロサービスアーキテクチャへの動き。

私たちの疑問は、ユーザー認証をどう扱うかです。ユーザーにReact SaaSアプリを使用できるようにする単一の認証メカニズムが必要で、モバイルアプリにも対応します。

ユーザーがウェブからログインしている場合、彼はAPIと共にSaaSアプリケーションを使用できます。彼がモバイルからログに記録されている場合、彼はモバイルからAPIを使用することができます。

これは、サーバーを分割する最初の方法であり、認証の問題を解決するための推奨される方法を知りたいと考えています。当然、認証サービスを別のマイクロサービスとして分割することができれば、それは非常に興味深いものです。

ご協力いただきありがとうございます。

+0

JWTの使用を検討しましたか? – patrick

+0

まだ認識していません。ご意見をお聞かせください。 – Mendes

答えて

2

生計のためにこの種のことを行う認証プロバイダを見てください。 auth0Stormpathは2つの例ですが、さらに多くの例があります。

APIを使用してアプリをセットアップし、明示的に接続します。このプロセスを経て、必要な機能や、APIを使用するために実装する必要がある機能がわかります。

レビューの最後に、いずれかのサービスを使用するか、必要な機能の縮小バージョンをPassport.jsで実装してください。

+0

Auth0がすべての認証の問題を解決するのを見ていますが、複数のシステムで一度認証を行う方法を見つけることができませんでした。SaaSアプリケーションのようにavailanleアプリケーションを呼び出すときにJWTを保存して渡す必要がありますか? – Mendes

1

この特定の問題を解決する方法の1つは、Auth0とJWTを使用することです。

ユーザーはAuth0 Lockを使用してログインし、その後私のWebアプリケーションはローカルストレージにJWTを保存します。これは、各Ajaxリクエストのヘッダーでサーバーに渡されます。サーバーは、各要求に対してJWTを検証する責任があります。これをReact Nativeアプリで公開するには、react-native-lockでも同じアプローチを使用できます。

特にPassportに関しては、JWT libsがあると思われるので、Auth0のようなものに頼る必要はありません。

関連する問題