1. yammerの日記
  2. gawkでGitHubログイン
2024-01-20 07:39

gawkでGitHubログイン

1 Mention

やっぱ現代のWebアプリケーションはソーシャルログインでしょってことで、awkblogにも実装しました。

 

エピソード内で話し忘れたのですが、E2Eテストのために、GitHub側のモックサーバを作ったりもしました。https://github.com/yammerjp/github-oauth2-login-mock-server

 

このエピソードを収録しているマイクは、BOYAのBY-P4Dというものです。Lightning端子がついていて、iPhone 12 miniにつけて録っています。

00:02
こんばんは昨日はお休みしてしまったんですけどまた今日は 息抜きにもなるのでね話したいと思います
今日も 帰りの
夜道を 歩きながら撮ってる
感じです 前回と前々回と今で
少し音が変わってるなぁと思う方いらっしゃいますかね じゃあその一発撮りにするぞっていうことで
までも風切音でちょっとガサガサすんのもなぁってことで あのマイクをね
ちょっと買ってみてつないで撮ってます で
えっと さらにパーをつけて
なんてやつでしたっけちょっと忘れたんですけどあの 前々回は iphone のマイク前回はその
ライトニングに刺さる買ったマイクで今回はさらにそれに でももともとツイッターはカバーじゃなくてなんか別売りのふさふさした
柔らかいファーをつけて ファーなんて言うんですかねこういうかマイクの風切り防止の
もふもふしたもふもなんて言うんですかね 風切り防止カバーみたいなつけて撮ってます
ちょっとね大きさが合わなくて マイクの下の方が
あの見えてしまってるんでもしかしたら風切り音とか入ってるかもしれないんですけど 今日はそんなに風は強くないですね
はいまあこんなこと話したらもう2分経ってるあんまり長くてもあれなので あと2、3分で終わりたい
じゃあ奥の話をします 今日は
ログイン GitHubログインの話をしたいと思います
私の作っているWebアプリケーションでは GitHubのアカウントでログインすることができます
どう実装しているかっていうのを話したいと思います よくある
Googleアカウントでログインとか ツイッターでログインとか
GitHubでログインとか 若干URLのパスとかは違うこともありますけど基本的にはOS2って呼ばれるとか
OpenID Connectって呼ばれる決められた方法で HTTPのリクエストを送って
で戻ってきたら その中の
パラメーターをまた 別のところに送ってみたいなことを繰り返していけば
03:06
ログインしてるかどうかっていうのを検証できる仕組みになってます なのでやることとしては
その なんですかね
まず最初に リクエストが来たら
ランダムな文字列を作って それをセッションに入れておいて
リダイレクトすると リダイレクトして帰ってきたら
クエリパラメーターから 何か値 コードみたいな値を読み取って
GitHubのAPIを叩いて この人ちゃんとログインしてるかなみたいなのを確認して
ユーザー名とかを取る そういう風にやってます なので そのHTTPサーバーの機能と
セッションの機能と あとはHTTPリクエストを送れる機能っていうのならば
実装できるってことになります 前回話したように多くはそのTCP IP通信もサポートしたので
HTTPのサーバーにもなれるし クライアントにもなれます
ただ 私の実装しているアプリケーションでは カールのコマンドを使って
HTTPリクエストを送ってます というのも そのHTTPサーバーの場合は
大体 現代のアプリケーションって コンテナにして どっかデプロイして
JLSの集団はマネージドのサービスであって HTTP受けるみたいなのが多いと思うんですよね
一方で なんでHTTPsじゃなくてもいいでしょうと 一方でリクエストを投げるときって
これも信頼される場所に置くんで 大丈夫って話もあるけど やっぱり
HTTPsで通信したいですよね フロントエンドのフォワードフローキシーみたいな
そういうのを送っても一発的じゃないし 手軽にできるHTTPの通信でいえばカールだと
なんで多くではコマンド実行できるんで リクエストのさっき言ってたコードとか
ステッドとか そういうのを渡さなきゃいけないんで
そういうのをちゃんとチェックして OSコマンドインジェクションが起こらないように
しなきゃいけないんですけど そうした上で カールのコマンドを叩いて
返ってきたJSONをパースするみたいな そんなことをしてます
セッションはどうですかね セッションの回だけで話せる内容かもしれないですけど
06:03
暗号化してクッキーに入れるってことをやってます
リリースとか場合によってはRDBとかMemcacheDとか そういう外部ストレージに値を入れて
それのキーみたいなのをセッションキーとして 発行してるんじゃなくて
クッキー自体に値の入れたものを ウェブサーバーしか知らない暗号化の共通カギ
暗号で暗号化してセッションに文字列を入れておくと セッションじゃないわ クッキーに
クッキーの中から複合を読みたいときは複合して その中から値を取り出すと そういうことをしてます
よくあるwebアリケーションの一般的な実装だと思うんですけど この暗号化複合化も
シェルコマンドでOpenSSLのコマンドを叩いて実行してると それもちゃんとOSコマンドインジェクションが起きないようにチェックすると
めんどくさいんですけどシェルコマンド叩けば 結構いろんなことできてしまうので
多くのウェブサーバーでもGitHubログインが提供できています 結局7分ぐらいしゃべってますね
というわけで 今日はこんなところにしたいと思います
ではまた
07:39

このエピソードに言及しているエピソード

コメント

スクロール