Spring fo Android : 请求授权 headers (不是基本的)

Spring fo Android : request authorization headers (not basic)

我有一个应用程序在客户端使用 Spring 作为 Android,在服务器端使用 Spring 启动。我们想为某些请求添加客户端授权。我们已经使用了 Firebase 和 OAuth2,在阅读了这个主题之后,我觉得最好的方法是使用 Authentification header 将 JWT 发送到我们的服务器,并使用 bearer 方法进行授权:

Authorization: Bearer <token>

类似的东西...

我的问题是:Spring for Android 只有 BasicAccessAuthentification built-in,但我的客户端凭证没有 username:password 方案,只有 JWT。我很天真地尝试创建一个扩展 HttpAuthentication 的 Class :

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());
  }

}

这个class是基于Spring中的HttpBasicAuthentication class for Android.

然后执行请求:

// regular request that I know works

...

HttpBearerAuthentification auth = new HttpBearerAuthentification(token);
headers.setAuthorization(auth)

...

// send request and get answer as usuall   

我知道请求本身有效(至少是未经授权的请求)所以这不是问题所在。那是正确的方法吗?我理解请求的成功还取决于服务器如何处理请求。但就目前而言,我的问题实际上是关于客户端的。这段代码是否足以将 JWT 发送到服务器?

在对使用 SpringForAndroid 发送的请求进行一些测试后,似乎很容易为 headers 设置值。因为 HttpHeaders class 实际上实现了 Map 接口,所以我所要做的就是:

protected HttpHeaders headers = new HttpHeaders();
headers.set("Authorization", "Bearer " + userRegistrationToken);