OAuth2 の 続き….
スコープについて調べてみました
Scope の準備
server.php に Oauth¥Scope を追加します
	$server->setScopeUtil(new OAuth2\Scope($storage,array('default_scope'=>'user')));
	テーブルにある oauth_scope には、多分 supported scope を列挙するんだと思います
	それと、oauth_users と oauth_clients にも scope と言うフィールドがあります
	ちなみに、oauth_scopes には、こんな風に書いてあります
	mysql> select * from oauth_scopes;
	+---------------+------------+
	| scope         | is_default |
	+---------------+------------+
	| administrator |          0 |
	| user          |          1 |
	| viewer        |          0 |
	+---------------+------------+
	3 rows in set (0.00 sec)
	 
	mysql>
server.php には、追加するスコープの記載はしていません
パスワード認証でスコープを確認する
token.php を使って grant_type=password で認証をするときに、scope を無指定で認証すると oauth_users の scope フィールドの値を返すようです
oauth_users テーブルはこんな感じです
	mysql> select * from oauth_users;
	+-----------+----------+------------------------------------------+------------+-----------+-------+----------------+--------------------+
	| record_no | username | password                                 | first_name | last_name | email | email_verified | scope              |
	+-----------+----------+------------------------------------------+------------+-----------+-------+----------------+--------------------+
	|         1 | testuser | d1dd88e9f57f81f02377d682f7fbb75b562bXXXX | XXX        | XXX       | NULL  |           NULL | administrator user |
	+-----------+----------+------------------------------------------+------------+-----------+-------+----------------+--------------------+
	1 row in set (0.00 sec)
	 
	mysql>
コマンドで確認
	user@ubuntuSFAScratch:~$ curl http://172.16.XXXX.XXX/sfa/token.php -d 'grant_type=password&client_id=testuser&username=testuser&password=testpass'
	{
	  "access_token":"b73c9e53020df29a8de63b6deae6d7ad1a02XXXX",
	  "expires_in":3600,
	  "token_type":"Bearer",
	  "scope":"administrator user",
	  "refresh_token":"77027f08cb9941eb97d8a7c8c171b75f93beXXXX"
	}
	user@ubuntuSFAScratch:~$
では、user だけを要求したときは?というと
	user@ubuntuSFAScratch:~$ curl http://172.16.XXX.XX/sfa/token.php -d 'grant_type=password&client_id=testuser&username=testuser&password=testpass&scope=user'
	{
	  "access_token":"582027f6ad8cc1563bac33e1eb3446e39c57XXXX",
	  "expires_in":3600,
	  "token_type":"Bearer",
	  "scope":"user",
	  "refresh_token":"fb19e948bf41600e51f6b2a958061bae14adXXXX"
	}
	user@ubuntuSFAScratch:~$
	scope には user だけが返ってきています
	リフレッシュしたときはと言うと、
	user@ubuntuSFAScratch:~$ curl http://172.16.XXX.XXX/sfa/token.php -d 'grant_type=refresh_token&refresh_token=ff1bc08777a59042ca25a2df11361f2ac43bXXXX&client_id=testuser'
	{
	  "access_token":"397577223cf0c3186d7312e64eafa1d09709XXXX",
	  "expires_in":3600,
	  "token_type":"Bearer",
	  "scope":"user",
	  "refresh_token":"1548fef22b3bd9fb1e1503f9d5c379e6887fXXXX"
	}
	user@ubuntuSFAScratch:~$
	一応、アクセストークンを入手したときに指定したスコープを返してきているようです
	# パラメータが連続していないのは、ちょっと、ミスコーディングしてやり直したからです ^^;
User Credentials の時には oauth_users の scope フィールドに記載されていないスコープは指定できないようです
	user@ubuntuSFAScratch:~$ curl http://172.16.XXX.XXX/sfa/token.php -d 'grant_type=password&client_id=testuser&username=testuser&password=testpass&scope=administrator user viewer'
	{
	  "error":"invalid_scope",
	  "error_description":"The scope requested is invalid for this request"
	}
	user@ubuntuSFAScratch:~$
oauth_scopes には viewer の指定がありますが、指定すると invalid scope と返ってくるようです
Client Credentials で認証した場合
アクセストークンを要求するときに scope を一緒に要求すると、スコープの要求が出来る様です
	オーソライズするするときに、引数に scope を含めます
	%20 がセパレータのの様ですので + で繋げます
	http://172.16.XXX.XXX/sfa/authorize.php?response_type=code&client_id=testclient&state=xyz&scope=administrator+user
で、このまま grant_type=authorization でアクセストークンを取り込みます
	user@ubuntuSFAScratch:~$ curl -u testclient:testpass http://172.16.XXX.XXX/sfa/token.php -d 'grant_type=authorization_code&code=9b786417951a20645457144a24988ce3f0c8XXXX'
	{
	  "access_token":"34f2c3010e1d48f5f8df6fac69962b8c5210XXXX",
	  "expires_in":3600,
	  "token_type":"Bearer",
	  "scope":"administrator user",
	  "refresh_token":"3d887f40026f654957c4af021eba0b4bbd9eXXXX"
	}
	user@ubuntuSFAScratch:~$
	スコープが指定された様子です
	で、リフレッシュではと言うと..
	user@ubuntuSFAScratch:~$ curl -u testclient:testpass  http://172.16.XXX.XXX/sfa/token.php -d 'grant_type=refresh_token&refresh_token=3d887f40026f654957c4af021eba0b4bbd9eXXXX'
	{
	  "access_token":"855348d623707b31cbc95244da99301e71abXXXX",
	  "expires_in":3600,
	  "token_type":"Bearer",
	  "scope":"administrator user"
	}
	user@ubuntuSFAScratch:~$
スコープも返ってきたようです
	コマンド
	http://172.16.XXX.XXX/sfa/authorize.php?response_type=code&client_id=testclient&state=xyz&scope=administrator+user+viewer
	レザルト
	user@ubuntuSFAScratch:~$ curl -u testclient:testpass http://172.16.XXX.XXX/sfa/token.php -d 'grant_type=authorization_code&code=4a49a89e6f7c06cbb61534c109eb2142bb75XXXX'
	{
	  "access_token":"41a9b442ef487b1842cfe635cf13f7d7cbc7XXXX",
	  "expires_in":3600,
	  "token_type":"Bearer",
	  "scope":"administrator user viewer",
	  "refresh_token":"406ae355749b15008d2311d29e09a466fc45XXXX"
	}
	user@ubuntuSFAScratch:~$
	user_clients の scope フィールドが NULL の場合はイケるようです
	前日の確認の所にもありますが、デフォルトでこの ctestlicent の scope フォールドは NULL ですから、authorize.php の scope なければ scope:null で返ってきます
では、oauth_socpes に登録されていないスコープを指定した場合はと言うと..
client_user の redirect_uri へこんな感じの引数付きでリダイレクトしてきます
	コール
	http://172.16.XXX.XXX/sfa/authorize.php?response_type=code&client_id=testclient&state=xyz&scope=administrator+user+viewer+publisher
	レザルト(リダイレクト)
	http://172.16.XXX.XXX/sfa/?error=invalid_scope&error_description=An+unsupported+scope+was+requested&state=xyz
	publisher と言うスコープは用意していません
	.
	うーん、体調悪いな…
	もう一度、再調査…
	見落としあるかもしれない…
	多分、続く…
	.