问题描述
在 https://github.com/thomashbailey/vapor-auth 观看本教程后,我正在练习蒸汽服务器。从代码中可以看出,createuser 表现不错,但是如果尝试登录,会弹出 401 错误,我问你一个问题。
登录的时候不是给令牌的代码吗?我不知道。如果您让我知道,我将不胜感激。
解决方法
好吧,服务器似乎是 HTTP Basic Authentication Scheme 的演示。
您必须先创建一个用户并提供密码。
完成此操作后,在访问受保护资源时,您需要通过提供 HTTP“授权”标头来验证请求。
这可以通过在您的请求中“抢先”设置请求标头“授权”来完成,如下所示:
将用户名和密码组合起来,用冒号“:”分隔,并进行 base64 编码。然后设置“Authorization”请求头如下伪代码所示:
Authorization: "Basic" + " " + base64("\(username):\(password)")
另一种方法是通过分析“WWW-Authentication”响应标头来处理 401 (not authorised)
状态代码,当您没有设置“Authorization”标头时,它会出现 401。这在提到的 RFC 中有详细解释。
请注意,HTTP 客户端(包括 Postman)确实有助于设置基本授权方案。您会在 Postman 本身中轻松找到这一点。
编辑
您现在可能会注意到,每次发送请求时都必须清楚地发送用户名和密码。
这当然应该敲响警钟。事实上,基本 HTTP 身份验证因其漏洞而被弃用。您当然应该使用 HTTPS,以防止通过网络以明文形式发送数据 - 尽管如此,每次请求都发送密码应该会让我们感到不满。
一种更现代、更安全的方案是使用不记名令牌,例如在 OAuth 或 OIDC 中。