一旦您知道协议的工作原理,设置OAuth2提供程序就相当容易了。这是一个 2 或 3 个步骤的过程(取决于您的设置以及您是代表用户还是仅从服务器获取令牌)。
您将需要:
您需要弄清楚如何对代码执行操作:
- 创建客户端(公共和专用访问令牌)
- 弄清楚授权和令牌终结点的命名方式(通常和
/authorize
/token
)
- 弄清楚如何处理作用域
获取令牌的第一步是调用 ,其中:/authorize?response_type=code&client_id=[YOUR ID]&redirect_uri=[YOUR REDIRECT URI]&scope=[YOUR SCOPE]
- clientid([您的 ID])是您的公共访问令牌
- redirect_uri([您的重定向 URI])是您的重定向 URI。完成自动调整步骤后,您将被重定向到此位置
- 范围是未来令牌的范围
完成后(通常有一个提交按钮),您的浏览器将被重定向到URL中使用代码指定的URI(code=blah)。保存此值。
获得此代码后,调用另一个终结点:/token?client_id=[YOUR ID]&client_secret=[YOUR SECRET]&grant_type=authorization_code&scope=[YOUR SCOPE]&code=[YOUR CODE]&redirect_uri=[YOUR REDIRECT URI]
参数: - client_id - 再次,您的客户端公钥 - client_secret - 您的私钥(这应该是服务器端调用) - 范围 - 令牌的作用域 - 必须与第一次调用匹配 - redirect_uri - 重定向URI - 必须与第一次调用匹配 - 代码 - 您收到的代码
如果一切正常,你将在屏幕上看到一个包含令牌信息的 JSON 对象。
在后台会发生什么
步骤 1(授权)
当您确认表单时,服务器会创建一个临时令牌(调用时的身份验证令牌),该令牌的生存期通常很短(我的 oauth2 sp 代码通常将其设置为 60 秒)。这是您的服务器从接收代码到触发步骤 2 的时间。它只是一个确认系统,其目的是存储步骤1中提供的信息以防止劫持。
步骤 2(令牌)
这是实际创建访问令牌的位置。大量的验证,很多东西,但最终,令牌只是一个将你的client_id和你的令牌联系起来的值。仅此而已。
无耻的插件:如果您使用的是Laravel框架,那么我已经从头开始构建了这个(而不是使用蹩脚的,未记录的示例代码):http://bundles.laravel.com/bundle/oauth2-sp