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);
我有一个应用程序在客户端使用 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);