google サービス認証ダイアログ作成

google サービス認証ダイアログ作成

#08 認証ダイアログを作ろう
http://dotinstall.com/lessons/google_connect_php_v2/9908
を参考に
CSRF対策実装
承認
を行う際の認証ダイアログの作成

認証ダイアログの作成は
https://accounts.google.com/o/oauth2/auth
にむけて
いろいろなオプションをつけて作成する

オプションに関しては
https://developers.google.com/accounts/docs/OAuth2WebServer?hl=ja#formingtheurl
のリファレンスを参考に

認証ダイアログ作成の前にCSRFを行う

これは
セッションのstate に推測しにくい文字列を入れ
googleにとばすときのURLにも
組み込んでおき
認証から返ってきたときの処理で
この値が正しいかチェックをするというもの
これにより
認証後にちゃんとgoogle から返ってきたことを確認できる

$_SESSION['state'] = sha1(uniqid(mt_rand(),true));

で、ハッシュにより値を作成
sha1() でハッシュを生成している
ハッシュについては
http://php.net/manual/ja/function.sha1.php
を参照

uniqid(mt_rand()

でランダムな値を生成して

オプションで true 指定なので
20 バイト長のバイナリ形式で返ってくる

値はできたので、次に認証ダイアログの
パラメータを作成

$params = array(
	'client_id'=>CLIENT_ID,
	'redirect_uri'=>SITE_URL.'redirect.php',
	'status'=>$_SESSION['state'],
	'approval_prompt'=>'force'.
	'scope'=>'',
	'response_type'='code',
);

クライアントIDは

'client_id'=>CLIENT_ID

リダイレクトURIは

'redirect_uri'=>SITE_URL.'redirect.php'

認証の値となる state は

'status'=>$_SESSION['state']

毎回認証ダイアログをひらくオプションとして

'approval_prompt'=>'force'

どのデータを引っ張ってくるか指定するのは

'scope'=>''

の部分で指定

レスポンスのタイプを

'response_type'='code'

とする

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です