访问认证(二):Basic

Basic 认证(基础认证),是最简单的认证方式。

原理

它简单的将 用户名:密码 进行 Base64 编码后,放到 HTTP Authorization Header 中。

HTTP 请求到达后端服务后,后端服务会解析出 Authorization Header 中的 Base64 字符串,解码获取用户名和密码,并将用户名和密码与数据库中记录的值进行比较,如果匹配则认证通过。

示例

$ basic=`echo -n 'admin:Admin@2021'|base64`
$ curl -XPOST -H"Authorization: Basic ${basic}" http://127.0.0.1:8080/login

缺点

通过 Base64 编码,可以将密码以非明文的方式传输,增加一定的安全性。

但是,Base64 不是加密技术,攻击者可以截获 Base64 字符串,并反编码获取用户名和密码。

即使 Basic 认证中密码被加密,攻击者仍然可以通过加密后的用户名和密码进行重放攻击

适用场景

主要用在用户登录场景。

Basic 认证虽然简单,但是极不安全。

使用 Basic 认证的唯一方式就是将它和 SSL 配合使用,来确保整个认证过程是安全的。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的Spring Boot接口实现,用于访问所提供的接口地址并获取车辆管理数据: ```java @RestController public class VehicleManagementController { private final String API_BASE_URL = "http://dataservice.rjh.com.cn:9002/api/data"; private final String API_USERNAME = "SHLT"; private final String API_PASSWORD = "91SN4Qq9"; @GetMapping("/vehicle-management") public String getVehicleManagementData() { try { // 获取当前日期 LocalDate currentDate = LocalDate.now(); // 定义日期格式 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); // 转换为指定格式的字符串 String dateString = currentDate.format(formatter); // 构建URL对象 URL url = new URL(API_BASE_URL + "?begin=" + dateString + "&Methodname=车辆管理"); // 创建HttpURLConnection对象 HttpURLConnection connection = (HttpURLConnection) url.openConnection(); // 设置请求方法为GET connection.setRequestMethod("GET"); // 设置Basic认证信息 String auth = API_USERNAME + ":" + API_PASSWORD; byte[] authBytes = auth.getBytes(StandardCharsets.UTF_8); String authHeaderValue = "Basic " + Base64.getEncoder().encodeToString(authBytes); connection.setRequestProperty("Authorization", authHeaderValue); // 设置字符编码为UTF-8 connection.setRequestProperty("Accept-Charset", "UTF-8"); // 发送请求 int responseCode = connection.getResponseCode(); // 读取响应数据 BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8)); StringBuilder responseBuilder = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { responseBuilder.append(line); } String response = responseBuilder.toString(); // 关闭连接 connection.disconnect(); // 返回响应数据 return response; } catch (Exception e) { e.printStackTrace(); return "Error: " + e.getMessage(); } } } ``` 在上述代码中,我们定义了一个`VehicleManagementController`类作为Spring Boot的Controller。`getVehicleManagementData()`方法用于访问接口地址并获取车辆管理数据。我们在方法中构建了一个URL对象,并使用HttpURLConnection发送GET请求来获取数据。获取到数据后,我们将其返回给调用者。需要注意的是,如果出现异常,我们将返回一个错误信息字符串。 你可以将上述代码放入一个Spring Boot项目中并启动应用程序。访问`/vehicle-management`路径即可获取车辆管理数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值