web-dev-qa-db-ja.com

認証なしでユーザーが認証を受ける方法

私はバックエンド(API)とフロントエンド(Webサーバーなど)を使用しており、ユーザーとIDプロバイダーを使用しています。

Webサーバーはサードパーティによって提供され、モバイルアプリの場合もありますが、ユーザーはそれを使用してデータにアクセスします。

APIは低レベルの応答をJSON形式で出力するだけなので、通常、ユーザーはアプリケーション(Web of Mobile)がすべてを実行できるようにする必要があります。したがって、ユーザーがフロントエンドの承認を要求すると、そのフロントエンドはユーザーが実行できるすべての操作にフルアクセスできます。

ユーザーはGoogle/FB/Twitterなどのアカウントを使用して登録および認証を行うため、APIがパスワードを気にする必要がなく、ユーザーが簡単にサインアップできます。

ユーザーがバックエンドでメッセージ、アカウント履歴、プロファイルなどのリソースを表示する場合、フロントエンドを介してこれを行います。

次に、フロントエンドはリソースのリクエストをAPI(REST風の方法で実装)に渡します。私の理解は、これが機能するためにoAuthは、ユーザーの個人情報を要求するためにWebサイトを承認するために使用されることになるということです。

私の理解を正してください:登録後、ユーザーはフロントエンドにログインします。次に、フロントエンドは、「oAuth承認済みHTTPリクエスト」を介してバックエンドからユーザーの情報を取得します(具体的にはoAuth 2.0)。

バックエンドは、リクエストが承認されていることを確認しましたが、このプロセス中にだれが(おそらくまだログインしているのか)を知っていますか?それでは、バックエンドはどのように機能するメールボックス、プロファイル、またはトランザクション履歴をどのようにして知るのでしょうか。

APIは指定されたメールボックスまたはトランザクション履歴をURIにエンコードしますが、実際に問題は、フロントエンドが現在サインインしているユーザーの正しいメールボックスを要求していることをバックエンドがどのように知るかです。

2
Johan

oAuthは、すべてのユーザーのセッショントークンを設定します。ユーザーがフロントエンドにログインすると、フロントエンドはユーザー名とパスワードではなく、トークンをバックエンドに送信します。このトークンを使用すると、バックエンドはユーザーを認証してプロファイルを表示します。このトークンを使用すると、バックエンドはユーザーを認識し、フロントエンドにプロファイルを表示します 詳細

1
Irfan

この質問は、ここに投稿された質問に似ています: 他のサイトの資格情報 と私の回答を使用して1つのサイトにログインします。

しかし、私はあなたの特定の懸念にこの答えを集中します。私があなたの質問を正しく理解している場合、バックエンドがフロントエンドから提供されているデータをどのように信頼できるかを尋ねています。基本的に、あなたはそれを少し間違っていると考えています。 OAuthトランザクションを開始すると、リソース所有者が資格情報をサービス(Googleなど)に直接提供します。)何かが発生すると、Googleからアクセス(ベアラー)トークンが返されます。そのトークン次に、ユーザー名やメールアドレスなどのデータをGoogleから取得するために使用されます。フロントエンドクライアントを使用してGoogleにその情報を求めるAPIリクエストを行う場合は、そのデータを直接DOMに配置するだけです。フロントエンドからデータを要求してから、そのデータを取得してバックエンドにbootstrapユーザー情報(または何でも))に送信することは、すべきではありません。信頼の問題(つまり、そうしないでしょう)OAuthを使用することの全体的なポイントは、バックエンドに依存する必要がないようにすることです。

0
Alex Urcioli