在观看有关护照的laracast视频后,我知道护照用于验证我们自己的api.Still我对护照感到困惑
1.如何验证get,post,put和delete的身份验证请求。如果我在get url用户中传递令牌,则可以轻松查看和使用该令牌。
2.我可以限制特定用户使用我的api的请求数吗?
3.如果任何人解码Android应用程序然后他们使用该api令牌。在这种情况下我们如何保护?
如果我的问题有任何想法请原谅。我对laravel 5.3中的护照和api路由不太满意
谢谢
答案 0 :(得分:2)
Illuminate\Routing\Middleware\ThrottleRequests
课程激励自己。client_id
和client_secret
存储在移动应用中显然不安全。答案 1 :(得分:2)
Passport建立在League OAuth2 server之上,如果你想深入了解有关Oauth2的安全性,你应该熟悉它,这有点超出了问题的范围。为了简单起见,使用服务器上的Laravel 5.3,SSL / TLS中的内置功能来保护应用程序和服务器之间的通信,除非你做一些非常奇怪的事情,否则你很可能会很好。 OAuth2非常强大,并且被该领域的许多主要参与者使用,因此不必担心安全问题。
如果你已经习惯了传统的身份验证方式,那么抓住必须将令牌传递给每个请求可能有点奇怪,有一篇非常好的文章解释了它如何在{{3 }}
您可以使用中间件保护路线。 Passport包含一个身份验证防护,可根据传入的请求验证访问令牌,例如:
Route::get('/api/user', function () {
//
})->middleware('auth:api');
Larael内置了一个速率限制功能,可以限制任何API请求者提出请求的速率。正如您可能已经猜到的那样,您也应该使用中间件,对于laravel来说,它是您可以使用的节流中间件,示例代码(使用/ api作为前缀):
Route::group(['prefix' => 'api', 'middleware' => 'throttle'], function () {
Route::get('user', function () {
return Person::all();
});
});
默认限制是每分钟60次尝试,如果用户达到限制,则禁用访问一分钟。
如果您对此路线发出请求,现在您将在响应标题中看到以下行:
HTTP/1.1 200 OK
... other headers here ...
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
您当然可以自定义节流中间件,如果您想将其限制为每分钟10次尝试,您可以这样做:
Route::group(['prefix' => 'api', 'middleware' => 'throttle:10'], function () {
Route::get('user', function () {
return User::all();
});
});
你还可以添加第二个参数来决定他们可以再试一次的分钟数,你会做'throtttle:10,10'。