[英]Request and use an Auth access token
我想向安全的API发送请求。 为了做到这一点,我必须获取并使用一个auth令牌。 我正在使用spring请求令牌访问REST服务。
我有用户名和密码,内容类型,URL(api.xxxxxx.com/v1/access/token)。 获得将在15分钟后过期的令牌后,我需要从API中获取信息。 该服务返回JSON。
我没有找到任何明确的信息或代码来开始。
我能够对不需要令牌的api做一个简单的代码
RestTemplate restTemplate = new RestTemplate();
Quote quote = restTemplate.getForObject("http://gturnquist-
quoters.cfapps.io/api/random",Quote.class);
log.info(quote.toString());
承载令牌认证示例:
首先使用您的凭据发送请求以接收访问令牌:
String username = "" // your username
String password = "" // your password
String userAndPass = username + ":" + password;
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.add("Authorization", "Basic " +
Base64Utility.encode(userAndPass.getBytes()));
HttpEntity<?> entity = new HttpEntity<>(headers);
String authUri = "" // uri to service which you get the token from
ResponseEntity<AuthenticationToken> response =
restTemplate.exchange(authUri, HttpMethod.POST, entity,
AuthenticationToken.class);
String token = response.getBody().getToken();
AuthenticationToken类:(请注意,我正在使用lombok来生成getter和setter,您可以手动进行)
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class AuthenticationToken {
@JsonProperty(value = "access_token")
String token;
}
现在您已经可以访问令牌,可以将授权标头添加到其他每个请求中,如下所示:
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.add("Authorization", "Bearer " + token);
HttpEntity<?> entity = new HttpEntity<>(headers);
ResponseEntity<Quote> response = restTemplate.getForObject(
"http://gturnquist-quoters.cfapps.io/api/random",
HttpMethod.GET, entity, Quote.class);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.