Bab*_*med 0 laravel laravel-passport
我是网络服务的初学者。我必须使用 Laravel 为移动应用程序制作 API。在 Laravel 文档中,我有API Authentication (Passport)。我试图理解这一点,但不清楚。
谁能详细告诉我一下?
提前致谢
嗯,就是这样,
如果您转到介绍选项卡,则在您共享的文档中有一个很好的介绍。我想你知道什么是 RESTfull API 吗?如果你不在这里。因此,由于其余 API 不使用会话(在 PHP 中您知道这一点),所有 API 调用都将是无状态的(会话较少)。因此您将需要一种身份验证机制来验证客户端实际上是他所说的那个人。这就是此身份验证方法的用武之地,此 oauth 服务专门设计用于在处理 REST 无状态会话时与此问题发生冲突。
这是如果你听说过令牌,当用户稍后注册并登录时,登录时将使用数据库检查用户的登录详细信息,如果用户通过身份验证(用户名和密码匹配),则令牌将被生成.. 这个令牌有点像一个会话,但很酷的部分是它依赖于客户端机器。所以这有点像留在客户端的会话详细信息。因此在 REST 请求时,此令牌将与请求的标头一起传递。
**
现在令牌生成机制
**
你现在可能想知道这对破解来说真的是小菜一碟。不,不是,因为现在假设您有一个包含此数据的客户端令牌
{
username:"JhonSnow",
email:"winteriscomming@gmail.com",
type:"user"
}
Run Code Online (Sandbox Code Playgroud)
现在首先使用base64url编码对这个令牌进行加密。好的,现在可以使用 base64 解码器来实现这一点。但令人敬畏的部分是,即使攻击者可以从令牌中获得这些信息,他也无法像这样提升应用程序的特权
类型:“用户”
到
`类型:“管理员”
` 因为可以使用 0-auth 提供的服务器端身份验证机制来检查此会话(如令牌的完整性),这就是为什么它在 Web 开发中常用且非常流行的原因。现在我之前提到了令牌的详细结构,它有点复杂。它更像这样
header:{
"alg": "HS256",
"typ": "JWT"
},
payload:{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}
Run Code Online (Sandbox Code Playgroud)
现在使用此详细信息,将生成令牌.. 像这样
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.he0ErCNloe4J7Id0Ry2SEDg09lKkZkfsRiGsdX_vgEg
Run Code Online (Sandbox Code Playgroud)
如果您仔细观察,您会发现此令牌中有 3 个“.”(句点),这是为了区分标头、有效负载和签名,最后一部分是服务器将使用服务器的机密检查它的部分或称为验证此令牌的签名是否为有效令牌
| 归档时间: |
|
| 查看次数: |
1812 次 |
| 最近记录: |