Google OpenID Connect

Google の OAuth 2.0 API は認証と認可の両方に使用でき、その実装は、OpenID Connectの仕様に準拠しています。
シングルサインオンについては、10年くらい前インフラ構築のプロジェクトでよく扱っていましたが、復習する目的でまずはOpenIDについて実際に動かしてみました。

まず最初にGoogle Cloudの設定からです。

新しいプロジェクト作成後、Oauthの設定



アプリ名など必須項目の入力

スコープは特に設定せず

認証情報の新規作成でOauthクライアントIDを選択

リダイレクトURIの入力
(ドメイン名は、hostsに設定したものを使用した。ブラウザが認識できればOK)

作成するとIDとシークレットコードが表示される

auth.phpをリクエストするとログイン画面が表示される

(リダイレクトURLが設定したものを一致しないなど、設定に不備があると不正リクエストと表示される)

ログインが成功するとユーザ情報が表示される
この後はセッション情報を書き込むなどしてアプリ固有の処理を継続する

リロードしたり認証が無効のとき情報が表示されない

ソースコードは下記を引用させていただきました。
https://pg.kdtk.net/421

auth.php

hello.php

通信の流れをまとめてみました。

リダイレクトについては、FireFoxの拡張機能の、HTTP Header Live を使うと確認しやすいです。
PHPは、HTTPプロトコルに関するコーディングがとてもしやすいとあらためて思いました。Javaのような言語では設定やコードボリューム、ファイル数など大きくなりがちですが、PHPはコンパクトです。もともとHTMLテキストベースのコーディングに特化していたこともありますが、セッション処理、文字コード、DBアクセスなどひととおりそろっており、Web,HTMLの基礎はPHPで学びました。
(JavaScriptコードをPHPで書くような芸当もできたりします)

サーバサイドの開発環境もできましたので、ここからいろいろと掘り下げていきたいと思っています。