OAuth2 服务器的范围值是啥?
Posted
技术标签:
【中文标题】OAuth2 服务器的范围值是啥?【英文标题】:What are scope values for an OAuth2 server?OAuth2 服务器的范围值是什么? 【发布时间】:2013-03-22 13:53:55 【问题描述】:我很难理解 作用域 的工作原理。
我找到了here 一个描述stackexchange api 范围的小文本,但我需要更多关于它们如何工作的信息(不是特别是这个......)。谁能给我一个概念?
提前致谢
【问题讨论】:
【参考方案1】:要授权应用程序,您需要调用 OAuth2 授权过程的 URL。这个 URL 在 API 的提供者文档中是“活的”。例如谷歌有这个网址:
https://accounts.google.com/o/auth2/auth
您还需要通过此链接指定一些查询参数:
cliend_id
redirect_uri
scope
:您的应用程序请求访问的数据。这通常指定为以空格分隔的字符串列表,尽管 Facebook 使用逗号分隔的字符串。 scope
的有效值应包含在 API 提供程序文档中。对于 Gougle 任务,scope
是 https://www.googleapis.com/auth/tasks
。如果应用程序还需要访问 Google Docs,它将指定 scope
值 https://www.googleapis.com/auth/tasks
https://docs.google.com/feeds
response_type
:code
为服务端web应用流程,表示用户批准授权请求后,会返回一个授权code
给应用。
state
:您的应用程序使用的唯一值,以防止对您的实现进行跨站点请求伪造 (CSRF) 攻击。该值应该是此特定请求的随机唯一字符串,不可猜测且在客户端中保密(可能在服务器端会话中)
// Generate random value for use as the 'state'. Mitigates
// risk of CSRF attacks when this value is verified against the
// value returned from the OAuth provider with the authorization
// code.
$_SESSION['state'] = rand(0,999999999);
$authorizationUrlBase = 'https://accounts.google.com/o/oauth2/auth';
$redirectUriPath = '/oauth2callback.php';
// For example only. A valid value for client_id needs to be obtained
// for your environment from the Google APIs Console at
// http://code.google.com/apis/console.
$queryParams = array(
'client_id' => '240195362.apps.googleusercontent.com',
'redirect_uri' => (isset($_SERVER['HTTPS'])?'https://':'http://') .
$_SERVER['HTTP_HOST'] . $redirectUriPath,
'scope' => 'https://www.googleapis.com/auth/tasks',
'response_type' => 'code',
'state' => $_SESSION['state'],
'approval_prompt' => 'force', // always request user consent
'access_type' => 'offline' // obtain a refresh token
);
$goToUrl = $authorizationUrlBase . '?' . http_build_query($queryParams);
// Output a webpage directing users to the $goToUrl after
// they click a "Let's Go" button
include 'access_request_template.php';
谷歌授权服务器支持的网络服务器应用的查询字符串参数集在这里:
https://developers.google.com/accounts/docs/OAuth2WebServer?hl=el#formingtheurl
【讨论】:
以上是关于OAuth2 服务器的范围值是啥?的主要内容,如果未能解决你的问题,请参考以下文章
Spring Oauth2 JDBC 实现中 OAUTH_CLIENT_TOKEN 表的目的是啥