設定
Java と Springを使用して分散アプリケーションを開発しています。既存のクライアント フロント エンド (独自の認証、データベース、アカウントなどを備えています) は、REST呼び出しを使用して新しいサーバーにアクセスし、追加のサービスを提供します。これらのリソースをOauthで保護したいと考えています。
アクセスは役割またはアカウントによって制限する必要があります。ただし、クライアント側のユーザーが既存のアカウント以外の追加の認証について心配する必要はありません。同時に、サーバーに対して何らかの登録を行った後、サードパーティのアプリケーションが外部からいくつかのリソースにアクセスする手段を提供する必要があります (これが、最初に配布している理由です)。
そのため、リソースへのアクセスを制限するために使用する必要があるアカウントを提供するために、サーバー側で春のセキュリティを設定しました。ユーザーはクライアント側でログインし、自分に割り当てられたサーバー リソースにのみアクセスできるようにする必要があります。サーバーサービスにアクセスできるようにクライアント側でユーザーを設定するある種の登録プロセスがあるため、アカウントの設定はそこで行う必要があると思います。
だから質問は
ユーザーがサーバー側のアカウントにログインしなくても、クライアント側が保護されたリソースのアクセス トークンを取得できるようにするにはどうすればよいですか?
また、ユーザー入力を必要とせずにサーバー側のアカウントをセットアップするにはどうすればよいですか?
私の考え
これはいけません
そのユーザーのためにサーバー側で作成された新しいアカウントについてクライアントに伝える必要があると考えています (ただし、パスワードを選択して伝達するにはどうすればよいでしょうか?) または、クライアント側のアカウントをサーバーに同期する必要があります。これらの資格情報を使用して、サーバーに対してクライアントを認証し、アクセス トークンを生成します。しかし、それはどのように節約できますか?また、サーバーのアカウントにははるかに高いセキュリティ (一方向暗号化、ソルト化されたパスワード) があり、あまり保存されていないクライアント アカウントを使用してこれを危険にさらしたくありません。
たぶんこれでしょう?
おそらく、最初の認証中にクライアントアカウントについてサーバーに伝え、サーバー側でアカウントを作成し、生成されたトークンをクライアント側に保存し、その後の各トークンでサーバーに対してクライアントを認証することになります。リクエスト..?サーバーは、リクエストごとにそのトークンを介してサーバー側のアカウントを使用してクライアントにログインできますか? クライアントサーバーからのみアクセスできる最初の(2足の?)ハンドシェイクには特別なリソースが必要ですよね?
また、このタスクには、OAuth 1 と 2 のどちらが適していますか?
誰かが私の問題を理解し、考えられる誤解や知識のギャップを整理するのを手伝ってくれることを願っています (私は現在、Oauth と春のセキュリティ ドキュメントを読んでいるので、より明確な画像とより明確な質問を思いついたら更新します)何をするかの)
助けてくれてありがとう!