java - 从其他外部 Spring Boot 应用程序调用 api
问题描述
我有两个不同的 springboot 应用程序。每个都使用 UsernameAndPasswordAuthentication 机制和 JWT 启用了 spring 安全性。我需要从另一个应用程序 api 中调用其中一个,但我不需要用户验证用户名和密码,因为这两个应用程序将有不同的用户,如果授权标头包含有效的 JWT 令牌,则每个请求都将被授权。我需要的是,如果从外部应用程序调用的 api 应该检查授权标头是否具有“基本 someAccessToken”。是否有可能进行这种实现。
解决方案
有可能:调用在 http 标头上设置 JWT 令牌authorization
(使用 Bearer 模式,这是普遍接受的做法)
HttpHeaders headers = new HttpHeaders();
headers.add("Authorization", "Bearer " + jwtToken);
MyDto dto = new MyDto();
HttpEntity<MyDto> requestEntity = new HttpEntity<>(dto, headers);
ResponseEntity resp =
new RestTemplate().exchange("http://localhost:8080/rest/service",
HttpMethod.POST, requestEntity, String.class);
在服务端获取令牌并验证访问:
public ResponseEntity<String> create(@RequestBody MyDto dto, @RequestHeader("authorization") String authorization) throws Exception {
System.out.println("authorization: " + authorization);
推荐阅读
- wso2-am - WSO2 APIM 发布者在加载时卡住了
- angular - 如何为highcharts背景导出具有指定填充颜色的highcharts?
- java - 如何解决声纳警告 - 为 SELECT BETWEEN 使用变量绑定机制
- javascript - 如何将元素数组转换为 JSONPath 语法?
- python - 根据 2 列中的条件值删除行
- java - 我在文本字段中输入到另一个文本字段的第一个数字未显示
- c# - 当我尝试创建 ADO.NET Entity Data Mods:el 时发生错误。错误说
- multithreading - 使用 OpenMP 生成具有已知种子的随机数的安全方法是什么?
- angular - 从 xmlHttpRequest 检索结果
- mysql - 有什么方法可以选择 sum(columns) 并列出 Mysql php 中的其他列?