項 1 / 10
目的と使う場面を知る
何ができるようになるか、何のために学ぶかを確認します。
今回できるようになること
本人だけ200、他人403、未ログイン401になる。
この節で学ぶ理由と、前後の節とのつながり
このセクションの位置づけ
なぜ、今これを学ぶのか
前の節で書いた判断のコードを、練習用サーバーで試します。本人に書類が返り、他人には本文が返らないか、実際の返事で確かめます。
ここまでの知識をどう使うか
送った内容と返事を読む練習に、前の節で書いた許可判断を組み合わせます。サーバーが誰の操作として扱ったかも確認します。
この後、何につながるか
書類を返す窓口での確認ができたら、次は保存されたデータの探し方を確認します。他人の書類を検索結果へ混ぜないようにします。
この実習で確かめること
本人には書類が返り、他人には返らないことを、返事の番号と中身で比べた結果
実務では、どんな場面?
この節の本文で学んだことを、書類を返す前の確認をHTTP応答で確かめる実習で確かめます。扱う情報は配布した架空データだけです。
読み始める前に:この節の前提と言葉
前の節で学んだ「書類を返す前に許可を調べる」を、実際ので確かめます。今回は本人・他人・未ログインを比較する小さな例です。会社や管理者を追加するのではなく、config.jsonの持ち主確認を直します。
- の経路
- /secretは今回の練習サーバーで書類を求めるです。exercise.pyがで要求を送り、本人・他人・未ログインの返事をresult.jsonへ記録します。
- ・
- はを送る要求の名前です。今回の小さな例では代わりにX-Demo-Userという教材用で架空の利用者を指定します。実サービスで、誰でも名乗れる値を済みの本人情報として信用してはいけません。
- と応答
- 許可の判断とで返す番号や本文は別です。ownerCheckが有効なら、本人へ書類を返し、他人を拒否します。番号と、拒否した相手に本文が出ないことを分けて確認します。
- 401・403・404
- 401はできない、403は操作を許さない、404は対象が見つからない場合などに使います。今回比較する三要求は本人200、他人403、未ログイン401です。
- ・
- は一回の通信を区別する目印、は処理の経路などの記録です。今回のresult.jsonは三要求の応答番号を残します。式を評価する専用画面は使いません。
- enabled・state・delegateId
- enabled(有効か)、state(状態)、delegateId(委任先)なども、実際のサービスでは確認する場合があります。今回の配布ファイルの編集項目はownerCheckだけです。
- は処理を分けて動かす仕組みの一つです。それだけで任意のコードを安全に実行できるわけではありません。今回の実習では自分のPythonサーバーを使います。
今回の練習サーバーは、架空の本人・他人・未ログインの要求を作って比べます。config.jsonのownerCheckは持ち主の確認をするかの設定です。サーバーは書類を返す前にこの確認を行います。
この課題は本物のシステムを作るものではありません。実際には利用者IDを勝手に名乗らせず、して確認済みの情報を使います。ブラウザーのリンクを隠すだけでは直接の要求を防げません。
- 書類への要求
- サーバーが持ち主を確認
- 許可時だけ本文を返す
exercise.pyは自分のパソコンの127.0.0.1にサーバーを立て、本人・他人・未ログインの要求を送ります。result.jsonでは、それぞれの要求に返った番号を読みます。
修正するファイルはconfig.jsonです。の判断コードをへ投稿する方式ではありません。ownerCheckを変更して保存し、同じPythonを再実行します。
- 本人・他人・未ログイン
- 同じサーバーへ要求
- result.jsonで三つの番号を比較
今回のサーバーは、X-Demo-Userという教材用がなければ401を返します。持ち主の確認が有効な場合、他人には403、本人には200と架空の書類を返します。このは本物のを代行するものではありません。
404は対象がない場合などに使います。実サービスでは存在を隠すため、許可のない相手にも404を返す場合があります。今回の書類への三要求は200・403・401を比較します。
拒否した番号だけで安心せず、本文にも書類を入れていないことをrespondの呼出しで読みます。拒否すると言いながら書類を送ってしまえば、情報は見られてしまいます。
- 要求する利用者を区別
- 返す番号を決める
- 拒否時に書類の本文も返さない
すべてを拒否するだけでは本人も書類を使えません。この課題では本人200、他人403、未ログイン401を一緒に確かめます。応答番号だけでなく、拒否した相手へ書類を返さないこともサーバーのコードで確認します。
会社や管理者の条件は前の節で扱いました。停止中の利用者や公開済み書類などは実際のサービスの追加仕様であり、この課題の別の独力確認ではありません。
- 本人は200
- 他人は403
- 未ログインは401
config.jsonに書くは持ち主を確認する指定、は確認を省く指定です。文字列の""ではなく、引用符のない真偽値を使います。exercise.pyにある条件が設定を読み、要求ごとの応答を返します。
ここでは配布したPythonを端末で動かします。以前の画面内エディターの命令制限やの説明は、この端末実習の実行環境ではありません。実在するデータや自由な接続先を入れず、配布した架空例の範囲で確かめます。
- config.jsonのownerCheck
- サーバーが設定を読む
- 持ち主を確認して返答
変更前の結果を先に記録します。修正して再実行したら、最新のresult.jsonとconfig.json、観察した違いと理由を提出します。提出結果は本人が送った記録の照合であり、サーバーが学習者のコードを別の環境で実行した証拠ではありません。
準備の失敗と内容の誤りを分けて確認し、指摘があれば同じファイルを直します。過去の提出は残るので、どこを修正したかを比較できます。
- 変更前の結果を残す
- 設定修正後に再実行
- 結果と理由を一緒に提出
登録されていても、利用停止中の人はいる
利用者の情報actorがあっても、enabledがfalseなら利用停止中というルールがあります。書類があっても、下書きなら公開済みではありません。また、持ち主が読める場合と、監査担当だけが読める場合では必要な条件が違います。利用者を確認できない401、読む許可のない403、書類を返す200を区別し、実際に書類が返ったかも確認します。
矢印の順に、何が行われるかを読みます。
- 利用者の条件:情報の有無・利用可否・会社・役割
- 書類の条件:公開状態・持ち主など今回の規則
- 実際の返事:番号と書類本文の有無
本人確認が済んでも、今回の書類を読めるとは限りません。拒否した返事に書類がなく、読む許可のある人には書類が返るかを両方確かめます。
- 利用者が利用可能か、書類が公開済みか、どの役割の人なら読めるかを依頼文から書き出します。
- 読む許可のある利用者を一人選び、所属会社などの情報を一つだけ変えて、書類が返らなくなるか確かめます。
- 同じ役割でも持ち主が違う書類を試します。今回は不要な持ち主の条件を、前のコードに残していないか確かめます。
ここでは実務で条件が増えた場合の考え方も紹介しました。今回の実習で操作する範囲は、次の「自分のパソコンで確かめる」で確認します。追加の別課題を提出する必要はありません。
書類を返す前の確認をHTTP応答で確かめる
本文の知識を、この実習でどう使うか
書類を返すサーバーで、ログインの有無と持ち主を確認します。200はこの要求の成功、401は未ログイン、403は権限不足を表す教材の仕様です。
- 本人・他人・未ログイン
- 返す直前の確認
- 番号と書類の有無
結果が違ったときに考えること:すべて403にすれば他人は止まりますが本人も使えません。本人だけ200になるかを同じ修正で確認します。
本人だけ200、他人403、未ログイン401になる。
WindowsまたはMacの操作手順、準備に失敗したときの確認方法、実行コマンドは実習画面に用意しています。ページ下部の「準備から実習を始める」から進んでください。
HTTPは実際に127.0.0.1だけで待ち受けます。TLSや実アカウントは使いません。X-Demo-Userは架空の認証情報で、本番の認証方式ではありません。