oauth
OAuthとは何ですか?
Web、モバイル、デスクトップアプリケーションからシンプルで標準的な方法で安全な承認を許可するオープンプロトコル-Docsから
- OAuthが最初に設定された主な理由は、ユーザーのパスワードを提供することなく、アプリケーションにアクセスユーザーのデータを許可することでした。適切なケース:Gmailの連絡先などにアクセスするために、これらすべてのサードパーティアプリが電子メール +パスワードを求めるときを覚えておいてください。アプリが保持し、パスワードを変更できるため、明らかなセキュリティ違反。一部のアプリケーションでは、ユーザーのパスワードを原告テキストに保存します(明らかなセキュリティリスク)。ユーザーがアクセスを取り消すことができる唯一の方法は、パスワードを変更することでした
- OAUTHの主な際立った機能は、ユーザーがサードパーティアプリにパスワードを入力できるようにする代わりに、ユーザーがOAUTHサーバーにリダイレクトされ、パスワードを入力するためにリダイレクトされ、アクセスを求めているサードパーティアプリにリダイレクトされることです。
- 最初のユースケースの後のOAUTHの他のユースケースは、独自のAPIにファーストパーティアプリを構築していた組織の周りでした。適切なケース:Googleサービス(YouTube、Gmailなど)にログインすると、サービスに直接登録しません。 GoogleのOAuth Server(Accounts.Google.com)にリダイレクトされ、サインインしてから認証後にGoogleサービスにリダイレクトされます。
- 利点は、セキュリティ上の理由でパスワード管理を集中化することです。
- 集中化のもう1つの利点は、すべてのユーザー/サービスの認証を簡単にアップグレードできることです
OAuth 2
- モバイルアプリケーションなどのユースケースがいくつかあり、OAuthの最初の実装を安全に使用できませんでした。
- OAUTH 2の目標は、モバイルアプリケーションのOAUTH 1に基づいて構築し、API消費者を混乱させた側面を簡素化することでした。
- OAUTH 2の問題は、プロトコルのWebとエンタープライズの貢献者との間に競合があったことでした。競合の分野の多くはさまざまなドキュメントに入れられ、プロトコルに多くのギャップが残りました(現在、コアドキュメントのフレームワークと呼ばれています)。
- その結果、OAUTH 2のWeb実装は、さまざまなドラフトからの情報を合成する必要があるため、複雑で混乱を招く可能性があります。
- 実装の問題:
- 標準では、トークンタイプを必要としません
- 特定の助成金タイプは必要ありません
- トークン文字列サイズに関するガイダンスは提供しません
OAuth 2アプリケーションの作成
- サービスのWebサイトで開発者アカウントを作成し、アプリに関する基本情報(名前、Webサイト、ロゴなど)を入力します。
- アプリがサービスと対話するために使用する
client_idとclient_secret (時には)が与えられます。 - 1つ以上のリダイレクトURL(OAUTH 2サービスがアプリケーションを承認した後にユーザーが返される場合)を登録するために重要です。ユーザーデータを盗むことができる悪意のあるアプリの作成を避けます。
- リダイレクトURLは、承認コードの傍受から攻撃者を提供し、セッションをハイジャックするためにHTTPSエンドポイントである必要があります
- 異なるアプリケーション状態に複数のリダイレクトURLを登録する代わりに、OAUTH 2は、アプリ状態をエンコードするために使用できる「状態」パラメーターを提供します。
- パラメーターは、ユーザーがアプリの適切な場所にそれらを持ち込むことを許可された後に返される文字列です。状態文字列は、JWTのような方法で暗号化する必要があります。
- 生成された状態は、ユーザーがクライアントアプリケーションに承認し、リダイレクトされた後、最初にセッションに保存されます。OAUTHサーバーは、状態文字列を最初にセッションで保存されたものと、アクセストークンの許可コードを交換する前に最初に保存されたものと比較します。
私が学んだ他の概念
カール
- クライアントURLの略は、開発者がサーバーとの間でデータを転送するために使用するコマンドラインツールです。送信するURL(場所)とデータを指定してサーバーと通信しましょう。
- さまざまなプロトコル(HTTP、HTTPS)をサポートし、ほぼすべてのプラットフォームで実行するため、ほぼすべてのデバイスで通信をテストするのに最適です
- 利点:
- 非常にポータブルで、ほぼOSとデバイスに匹敵します
- エンドポイントのテストに役立ちます
- 冗長である可能性があるため、デバッグに役立ちます
- 良いエラーロギング
FlaskやDjangoなどのフレームワークなしでWebでPythonスクリプトを実行する
- 最初にPythonスクリプトをCGIスクリプトとしてセットアップする必要があります
- CGIは、Common Gatewayインターフェイスの略です。アプリケーションがインターネット上の他のアプリケーションと通信できるようになります
- 最初にCIG-BINフォルダを作成し、Pythonスクリプトをそこに移動します
- 次に、Pythonの組み込み
http.serverを使用して、簡単なHTTPサーバーを実行します python -m http.server --cgiを実行して、CGIモードでHTTPサーバーを起動します。-
http://localhost:8000/cgi-bin/your-script.pyに移動して、CGIスクリプトを実行します。 -
your-script.pyにprint("Content-type:text/htmlrnrn")を含める必要があります。
シバン(ハッシュバン)
-
#! Unixのようなオペレーティングシステムの実行可能ファイルの最初の最初に。 - スクリプトの実行に使用する必要があるインタープリター実行可能ファイルへのパスを指定します。
- たとえば、Pythonスクリプトの開始時の
#!/usr/bin/env pythonのようなシェバンは、 usr/bin/env pythonにあるpythonインタープリターを使用してスクリプトを実行するようにシステムに指示します。
リソース
- OAuthドキュメント
- OAuthとは何ですか、なぜそれが重要なのですか? -YouTubeのOKTADEV
- OAuth 2サーバー
- IBM:カールとは何ですか?