用于重定向到 REST api 中的身份验证的适当 HTTP 状态

Dav*_*ler 1 authentication api rest http jwt

我有点惊讶的是,在搜索了一段时间后,我没有找到我想象的那么多答案(好吧,我没有找到),所以也许通过在这里询问我们可以帮助改善搜索结果。

我正在构建一个 REST api,它具有基于 JWT 的身份验证。有一个 /auth/login 路由在登录/密码验证后返回令牌,并且令牌随后在授权 http 标头中的每个路由中发送。

不,假设有人查询另一条路线(例如,/cars),但没有发送令牌(即在登录之前)。如果我返回 401 未经授权,我可以进行前端查询 /auth/login 来获取令牌。

但是,严格来说,这不符合 REST 规范,因为每个资源都应该从最初的资源开始就可以发现,并且访问 /cars 并收到 401 的客户端将不知道 /auth/login。

所以另一个选择是像 302 这样的重定向。但这种语义意味着资源被暂时移动,而事实并非如此(资源仍然是 /cars,你只需要先进行身份验证)。

那么,在“真正的”rest api 中执行此过程的正确方法是什么?

Eve*_*ert 5

我100%同意,这就是为什么我提出这个标准:

https://datatracker.ietf.org/doc/html/draft-pot-authentication-link-01

这个想法是,对于这样的情况,您应该能够返回Link带有authenticationrel 的标头,以便客户端可以发现如何继续。