2017-12-29 62 views
0

私はRESTのセキュリティが新しく、RESTful Webサービスをバックエンドとして統合するAngularJS(Angular 1)アプリケーションを構築しようとしています。このWebサービスは、アプリケーション(フロントエンド)がすべてのデータをフェッチして書き込む方法です。JWTまたはOAuthv2でREST + AngularJSを確保する

最初にアプリケーションはRESTサービスの唯一のクライアントになりますが、最終的にはAngularアプリで使用/使用されるのではなく公開された公開APIとしてサービスを開設したいと考えています。

私はRESTサービス用の認証/認証ソリューションを構築する方法を理解しようとしていますが、私が不明な点がいくつかあります。私はAngularアプリケーションとそのバッキングRESTサービスの両方で独自の認証/認可モデルを使用したいと思っています(私はこれを話すことができます)。

  • Angularアプリには、RESTサービスと統合するための独自の「サービスユーザー」と資格情報が付属していますか?ユーザー名はmyapp-client、パスワードは? または
  • 角度アプリはRESTサービスにユーザーの資格情報を転送しますか?

Angularアプリは、RESTサービスとの統合と接続(例:username:myapp-client、password:12345)のために、ハードコードされた資格情報とともに出荷される可能性があります。私はこれが最も単純だと思うが、ブラウザ/フロントエンドのコードでこれらのハードコードされた資格情報を公開し、太陽の下のスクリプトの子供が自分のREST API全体にアクセスするためのユーザー名+パスワードを持っていると思う。後者の場合

、私は角度アプリは、ユーザ仲介のいくつかの種類として機能することがあると思う:

  1. は匿名で、
  2. ログイン画面にルーティングされますが、自分の資格情報(ユーザー名を入力:smeeb、パスワード:23456)
  3. を認証は、(何とかアプリ並びにバックエンドの両方
  4. ベアラ/ JWT /などのいくつかの種類を取得します。トークンを作成し、Angularアプリへのその後のすべてのHTTPリクエストはこの有効なトークンを使用します(ただし、アプリは単に何らかの形でトークンが保存されているブラウザとRESTサービスの間の仲介者として機能しています)

私は、以前のソリューション(アプリケーションがバックエンドと統合するために使用するサービスユーザーの1人)がブラウザの資格情報を公開していること、そして後者の解決策が行く方法であるという疑惑があることを確認しています。また、JWTが後者のソリューションを実装する方法であるかどうか、あるいはOAuthv2やその他のものと一緒に行く必要があるかどうかについての確認を探しています。

答えて

1

REST APIで角度アプリを認証する必要がある場合は、次の手順を実行します。

  1. ユーザーは角アプリ
  2. アンギュラアプリケーションにユーザー名/パスワードを入力した資格情報が正しい場合はRESTのAPI
  3. にそれらのデータを送信し、REST APIは、角度アプリにJWTを返します。
  4. 認証を必要とするREST APIへのその後のリクエストごとに、AngularアプリはリクエストとともにJWTを渡します。
+0

ありがとう@Ishan(+1) - ユーザーがアプリからログアウトするときにAngularアプリがREST APIの「ログアウトエンドポイント」に移動する必要がありますか、またはJWTをサーバーで期限切れにするだけで十分です-側? – smeeb

+0

その質問はすでにhttps://stackoverflow.com/a/23089839/1281089で回答済みです。 これによれば、単にクライアントからトークンを削除するか、トークンブラックリストを作成するか、単にトークンの有効期限を短くしておき、頻繁に回転させるか –

関連する問題