リンク:
アリスブログ > OAuth認証の説明まとめ > 当記事
◆ 【ALIS】「OAuth認証」関連の用語説明
ALISの「OAuth認証」を勉強する上で、覚えておいたほうが良い単語や用語をまとめておきました。
○ 留意事項
・筆者の「ゆうき」は「へっぽこハッカー」です。サーバーサイドの知識は全然ないので、説明に間違いがあるかもしれません。予めご了承下さい
・ALISの「OAuth認証」を扱うにあたって、ごく当たり前のことしか記述していません
◆ 用語
○ OAuth
ログインに用いるパスワードを使わないで、ネット上の認証(個人認証)を済ませる仕組みです。
パスワードを用いて外部サイトからALISの認証を済ませる場合「フィッシングサイト」や「外部サイトの管理者のパスワードの漏洩」などで、パスワードが盗まれてしまう可能性がありますが、
OAuth認証では「パスワードを渡さない」「認証を継続するかどうかはユーザーが決められる」という性質があることから、より安全に外部のサイトでALISの認証やAPIを利用することができたりします。
ただし、OAuth認証の扱いは結構面倒です。サーバー関連の知識が十分にないと扱えないので、始めてみたい方はまず、
から勉強してみることをおすすめします。
○ フロントエンド(クライアントサイド)
Webのページ等の情報のうち、視覚的に確認できる内容のこと。
基本的には、HTML、CSS、(通常の)JavaScriptのデータなどがこれに該当します。
クライアントサイド側の情報は、ユーザー側でも確認することができるため、ここに「Client Secret」や「access_token」等の変数の情報を保持させてしまうと、情報漏えいにつながる危険性があります。
重要な情報は、決してクライアントサイドでは扱わないように心がけたいですね。
また、悪意あるユーザーによる「改変したコードによる攻撃」の可能性もありますので、サーバーサイドとのやり取りでは、ありとあらゆる攻撃手段を想定しておいたほうが良さそうです。
○ サーバーサイド
サーバー側で処理するもの。ユーザー側で確認することはできません。
サーバーサイド言語である、phpや、Node.js(JavaScriptアプリケーションのプラットフォーム)などがこれに該当します。
サーバーサイドは(バグらせない限り)安全なので、OAuth認証の処理の殆どは、こちらで済ませたりします。
(……なお、サーバーサイドで何かを処理するためには、当然サーバーが必要です)
○ JavaScript
フロントエンドとサーバーサイドの両方に対応している便利なスクリプト言語。
この記事を書いた時期(2109-06-21)では、かなり人気の言語です。ALISのOAuth認証の公式ドキュメントも、JavaScript(Node.js)で構築されています。
・処理について
HTMLに直接記載、HTMLから普通にJSファイルを呼び出した場合 → フロントエンド
Node.jsをサーバーにインストールした後、サーバー側でJSファイルを起動、もしくは、require関数で呼び出し等 → サーバーサイド
(サーバーをレンタルサービスの中には、既にNode.jsがインストールされていることもあります)
JavaScriptを利用する上で注意してほしいのが「通常のJavaScript用の関数」と「Node.js用の関数」ですかね。
例えばですが、フロントエンド側でJavaScriptを動かしている場合だと、(基本的には)「Node.js用の関数」を利用することはできません。
○ Node.js
サーバーサイドで動作するJavaScriptです。
OAuth認証をJavaScriptで動かすのであれば、多くの処理は「Node.js」に依存します。
……「Node.js」の仕組みやルールを良く覚えずに、公式のALISのOAuth認証のコードをいじると、よくわからないことやエラーが多発するので、先に「Node.js」に関することを多少勉強しておきたいです。
○ API(Web API)
サーバーに関することを含めて、とてもわかりやすく説明してくれている記事があるので、こちらの記事の閲覧を推奨。
超簡潔に述べると「どのプログラム言語でも利用できる関数」です。
ALISの場合は、レスポンスデータが「JSON」になっているので、ALISのAPIを叩いたときは、送られてきた「JSON」データを「使用している言語」で読み込みます(基本は辞書型)。
○ クッキーとセッション
公式ドキュメントでは単語が軽く出てきている程度ですが、ALISのOAuth認証を利用するときは、クッキーとセッションの機能も使用する必要があるので、説明がわかりやすい記事をリンクで貼っておきます。
・その1
・その2
簡潔に述べると、クッキーは、クライアントの情報とか(変数)をクライアント側(クライアントのブラウザソフト)に保持。
セッションは、クライアントがブラウザを閉じるまで、(クッキーを使ったIDの識別で)サーバー側に情報を保持、ですかね。
クッキーの場合は、データが改竄される可能性もなくはないので、(認証キーなどの)重要なデータの場合は、セッションで保存しておきます。
◆ その他
ALISのOAuth認証のドキュメントを読むにあたって、よくわからないことがあったら、
・その単語をグーグル検索
・「単語 + Node.js」でグーグル検索
のどちらかを行えば、求めている答えが見つかりやすいと思います。
◆ 「ゆうき」のツイッター