我有一个应用程序在客户端使用 Spring for Android,在服务器端使用 Spring Boot。我们想为某些请求添加客户端授权。我们已经使用了 Firebase 和 OAuth2,在阅读了这个主题之后,我觉得最好的方法是使用 Authentification 标头将 JWT 发送到我们的服务器,并使用承载方法进行授权:
Authorization: Bearer <token>
类似的东西...
我的问题是:Android 的 Spring 仅内置 BasicAccessAuthentification,但我没有username:password
客户端凭据的方案,只有 JWT。我很天真地尝试创建一个扩展的类HttpAuthentication
:
import org.springframework.http.HttpAuthentication;
public class HttpBearerAuthentification extends HttpAuthentication {
private String token;
public HttpBearerAuthentification(String token){
this.token = token;
}
public String getHeaderValue() {
return String.format("Bearer %s", token);
}
@Override
public String toString() {
return String.format("Authorization: %s", getHeaderValue());
}
}
该类基于HttpBasicAuthentication
Spring for Android 中的类。
然后做请求:
// regular request that I know works
...
HttpBearerAuthentification auth = new HttpBearerAuthentification(token);
headers.setAuthorization(auth)
...
// send request and get answer as usuall
我知道请求本身有效(至少未经授权的请求)所以这不是问题。那是正确的方法吗?我了解请求的成功还取决于服务器如何处理请求。但就目前而言,我的问题实际上是关于客户端的。此代码是否足以将 JWT 发送到服务器?