Spring Boot App:使用系统分配的托管身份登录到Azure上的MySQL数据库



我按照本文为Azure上的应用服务创建了一个系统分配的托管身份,并为MySQL数据库进行了必要的AD授权。该链接有一个java代码来生成令牌并连接到MySQL,但是,该代码不方便作为Bean注入到所有DAO类中。此外,使用该代码,您几乎需要在每次调用时检查令牌的过期。

有谁知道一个负责更新令牌并可以用作Bean的实现吗?

•坦率地说,我试图登录到Azure SQL DB server using a system assigned managed identity from a .Net Framework console application,这对我来说真的很有效,也就是说,它成功地响应了代码0。我还在application insights工作区中进一步检查了连接是否真的发生了,以及连接是否成功,没有任何问题。

•因此,在你的场景中,你已经在Azure中部署了一个web应用程序服务,代码运行时为Java,因为你想开发一个spring启动应用程序,并为它创建一个分配管理身份的系统,以及一个Azure MySql DB服务器也要连接。在部署此基础架构并遵循您发布的Github文档之后,我建议您将RestControllerAdvice部分包含在TokenRefreshException.java下,如下所示:-

package com.example.spring.security.jwt.advice;
import java.util.Date;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.context.request.WebRequest;
import com.bezkoder.spring.security.jwt.exception.TokenRefreshException;
@RestControllerAdvice
public class TokenControllerAdvice {
@ExceptionHandler(value = TokenRefreshException.class)
@ResponseStatus(HttpStatus.FORBIDDEN)
public ErrorMessage handleTokenRefreshException(TokenRefreshException ex, WebRequest request) {
return new ErrorMessage(
HttpStatus.FORBIDDEN.value(),
new Date(),
ex.getMessage(),
request.getDescription(false));
}
}

这会告诉控制器返回的对象被自动序列化为JSON并传递给' HttpResponse '对象。您只需要返回Java主体对象而不是ResponseEntity对象。虽然数据对应异常信号(404 – Not Found for example),但状态可能始终为OK (200)

因此,使用上面的部分,您可以在spring引导应用程序中管理令牌的更新。关于这方面更详细的信息,我建议你参考下面的链接:-

https://www.javainuse.com/webseries/spring-security-jwt/chap7

最新更新