Local by FlywheelでOAuthやJWTがエラーを起こす場合の対処法

SPONSORED LINK

Local by FlywheelはWordPress開発環境の新定番として日本でも人気が出つつあるソフトである。先日のポッドキャストでコントリビューターデイの話題になったとき、Localについて触れたのだが、そこで話した「LocalってJWTとかでコケることあるよね」という話に反応があったので、個別のチップスとして切り出して紹介する。

LocalのサイトでJWTやOAuthが失敗する場合

JWT(ジョット)とはJSON Web Tokenの略であり、APIアクセスする際の管理者権限の証明としてよく使われる。典型的な利用方法としては、GCPやAWSなどのサービスを利用する際に利用する。

詳細は省くが、こうした認証においては、リクエストの有効期限を確かめるためにタイムスタンプが利用されている。「このリクエストの認証の有効期限は5分以内」といった類のチェック機構である。

ところがLocalのDockerコンテナは非常に薄い設定となっており、たとえばVimも入っていないし、ユーザーもrootログインしかできない。さらに、ntpdというサーバーの時刻合わせを行うツールも入っていない。すると、OSのスリープなどを繰り返しているうちに、この時間が少しずつずれていき、いつしかJWTやOAuthで定められた規定のタイムリミットをオーバーするようになってしまう。その結果、どんなリクエストを発行してもエラーとなってしまう。

これは想定外の挙動であるため、原因を特定するためにものすごくハマる。

右がMacで、左がLocalのタイムスタンプ。6分ずれている。ちなみに、ターミナルはhyperのポケモンテーマを利用している。

解決方法

解決方法は単純で、Localのすべてのコンテナを停止し、Localアプリ自体を再起動すること。これにより、時計が元に戻る。

筆者はLocalのフォーラムに要望を出しているが、採用されるかどうかは不明。

ハマるパターン

多くはクラウドサービスなどへのアクセス制御である。

こうした機能を作る人はあまり多くないと思うが、「ローカル環境でだけ動かない」という場合はタイムスタンプを疑ってみるのもよいだろう。

おまけ

Capital Pではタレコミから書いてほしい記事の内容なども募集している。最近、筆者はWordPressの何がわからないのかがわからなくなってしまってきているので、お気軽にリクエストをいただきたい。お役立ちコンテンツを世に発信して、筆者の無能感を解消する手助けをして欲しい。

[新装版]ピーターの法則――「階層社会学」が暴く会社に無能があふれる理由

[新装版]ピーターの法則――「階層社会学」が暴く会社に無能があふれる理由書籍

作者ローレンス・J・ピーター, レイモンド・ハル

クリエーター渡辺 伸也

発行ダイヤモンド社

発売日2018年3月24日

カテゴリー単行本(ソフトカバー)

ページ数248

ISBN4478103550

Supported by amazon Product Advertising API

SPONSORED LINK

この記事を書いた人

高橋 文樹

小説家であり、WordPress開発者。WordCamp Tokyo 2016のリードオーガナイザー。山梨に土地を持ち、DIYで家を建てている。小説と家づくりとWordPress開発の3種競技があれば日本代表有力候補。KunoichiというWordPressテーマ・プラグインマーケットプレースを作成中。

Club Capital P

Club Capital PはCapital Pのファンクラブです。有料会員制となっており、Gumroad経由でサブスクリプションをご購入いただき、ライセンスキーを登録いただくことで、会員特典を受け取ることができます。