0

私はWebアプリケーションの開発を始めています。アプリケーションは RESTful である必要があります。私はRESTが初めてです。そして今、REST の制限を満たすためにユーザーのログイン/ログアウトを正しく行う必要があることを理解できません。

私は REST を理解するのに十分な時間を費やし、StackOverflow に関する多くの記事と回答を既に読みました。また、「ステートレス」の基本原則とその利点も理解しています。そのため、ウィキペディアと REST に関する基本的な情報源へのリンクはご遠慮ください。

タスクについて: サーバーのデータベースに書籍のリストがあります。ログイン/パスワードを持っているユーザーは、サイトにアクセスして、ログイン/パスワードを入力し、これらの本のページを表示できます。そのため、書籍サーバーのリストで応答する前に、ユーザーがそれを行う権限を持っていることを確認する必要があります。

書籍のリストは、ブラウザからの AJAX 呼び出しによって要求されます。

URL /books を処理するサーバーを作成します。サーバーがこの URL への GET 要求を受信すると、1) この呼び出しを認証する必要があります。2) OK の場合 - JSON 形式の本のリストで回答します。

私がこれまでに理解しているように、RESTサーバーの正しい認証方法は、個別の呼び出しをそれぞれ認証することです。クライアントはシークレット アクセス キーとアクセス キー ID を使用して、クエリ パラメータを暗号化する必要があります。サーバーはアクセス キー ID を確認し、シークレット アクセス キー (共有シークレット) を取得し、この方法でクエリを検証します。

したがって、REST の「ステートレス」制限に違反しているため、サーバーはセッションを処理しません。セッションなしで実行できる唯一の方法-シークレットアクセスキーとアクセスキーIDを使用して、クエリパラメーターを暗号化します。これが通常の REST クライアントのやり方です。しかし、「通常の」REST クライアントとブラウザー REST クライアントには大きな違いがあります。通常の REST クライアント (サーバー上のスタンドアロン アプリケーションまたは PHP アプリケーションとしましょう) は、シークレット アクセス キーを安全な方法で保存します。誰もそれを見ることができません。しかし、JS アプリケーションはそれをコードに格納します。誰でもこの JS コードを開いて、このキーを見つけることができます。

だから私の質問は、ブラウザ(RESTクライアント)とREST APIを処理するサーバー間の認証を、ソースコードを開くことができる人に公開せずに整理する方法です。

それとも、Secret Access Key をコードに格納する問題を過大評価しているのでしょうか? 古典的な「ステートフル」アプリケーションとの大きな違いがわかりました。あるサイトにログインしていて、その時点でコンピューターから離れている場合、誰もコンピューターに来て、ブラウザーのメモリ内のどこにでもパスワードを見つけることができません。ただし、Secret Access Key をコードに格納することで可能です。

4

1 に答える 1