繁体   English   中英

请求并使用Auth访问令牌

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM