Google の OAuth2 を手動で試す
目的
Google の OAuth2(OpenID Connect に近い?) を手動で試してみることで理解を深める
References
設定値(ダミー)
認証系の情報は公開できないので、ダミー値を置いておく。
client_id: 123456789012-123456789012345678901234clientid.apps.googleusercontent.com
client_secret:
state: state1234567890123456789 (これはCSRFを防ぐ乱数値なので何でも良いのだけど)
Step1: 認証画面にアクセス
ブラウザで以下の画面にアクセスすると、いつもの Google アカウントでのアクセスを求められるので承認する。
すると redirect_uri で指定したURLにリダイレクトして、code などの情報がクエリパラメーターにセットされている。
Step2: トークンの取得
こんな感じの POST リクエストを飛ばす。
code:http
Content-Type: application/x-www-form-urlencoded
client_id=123456789012-123456789012345678901234clientid.apps.googleusercontent.com&
client_secret=123456789012345678901234&
code=4%2F12345-67_890123_45678901234567890123456789012-345-678901234567890123456&
grant_type=authorization_code&
するとこんな感じのレスポンスが返ってくる。今回は scope に open_id しか指定していないので、リフレッシュトークンは返ってこないみたい。
code:json
{
"access_token": "(ACCESS_TOKEN)",
"expires_in": 3475,
"scope": "openid",
"token_type": "Bearer",
"id_token": "(JWT_TOKEN)"
}
code:text
Token header
------------
{
"typ": "JWT",
"alg": "RS256",
"kid": "1234567890123456789012345678901234567890"
}
Token claims
------------
{
"at_hash": "ABCDEFGHIJKLMNOPQRSTUV",
"aud": "123456789012-34567890123456789012345678901234.apps.googleusercontent.com",
"azp": "123456789012-34567890123456789012345678901234.apps.googleusercontent.com",
"exp": 1605363064,
"iat": 1605359464,
"sub": "123456789012345678901"
}