【发布时间】:2021-12-03 10:53:18
【问题描述】:
我必须实现一个 OAuth 客户端,并且在访问 JWT 令牌以进一步向 OAuth 服务器请求时遇到了一些困难。
我已经在调试器中找到了它(它位于变量 principal 中的某个位置,可以访问 - 我需要访问 principal→ idToken→ tokenValue),但我不知道是哪个这是列表的类型以及如何将其内容存储在变量中?
令人困惑的是,principal 也有一些内容 (String)。但它似乎也是某种列表,可以扩展,还有更多元素由Strings 索引。
函数,我正在尝试访问令牌(最后的注释行不起作用):
// calling Google Calendar API
@GetMapping("/api_request")
public Map<String, Object> getCalendars(@AuthenticationPrincipal OAuth2User principal) {
// JWT is saved as String in principal→idToken→tokenValue
String uri = "https://www.googleapis.com/calendar/v3/users/me/calendarList";
RestTemplate restTemplate = new RestTemplate();
return Collections.singletonMap("response",restTemplate.getForObject(uri, String.class));
// return Collections.singletonMap("principal",principal.getAttribute("idToken"));
}
在这里你可以看到调试器内部的结构:
【问题讨论】:
标签: java spring spring-boot oauth jwt