gpt4 book ai didi

java - 如何管理多个微服务中的安全上下文

转载 作者:行者123 更新时间:2023-11-30 05:33:52 25 4
gpt4 key购买 nike

我正在开发一个依赖多个微服务来提供分析的系统。我有一个使用 OAuth2(资源所有者密码凭据)管理授权的微服务。我的目标是审核谁创建/更新了嵌入列中的某个实体,如下所示:

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Embeddable
public class AuditEmbeddable implements Serializable {

@CreatedBy
@Builder.Default
@Column(name = "created_by", nullable = false, length = 64, updatable = false)
private String createdBy = "system";

@CreatedDate
@Builder.Default
@Column(name = "created_at", nullable = false)
private Instant createdAt = Instant.now();

@LastModifiedBy
@Column(name = "modified_by", length = 64)
private String modifiedBy;

@LastModifiedDate
@Column(name = "modified_at")
private Instant modifiedAt;
}

我确信 token 始终与请求一起发送,因为我们使用大使网关来验证每个请求。现在我正在使用非常古怪和错误的(在我看来)方法。我使用 @RequestHeader("Authentication") 获取附加到请求的 token ,将请求发送到身份验证服务器以获取用户电子邮件(和角色)并作为参数传递给服务,而服务又设置 created_byupdated_by 列。有没有办法拦截并拥有某种上下文,我可以自动从中提取用户信息(使用 spring 为我调用身份验证服务)?

最佳答案

您的主要问题似乎是跨微服务的身份和声明的传播,当然还有如何以最佳方式设计它。现在您似乎正在使用 OAuth2/OpenID。如果您使用 JWT 作为 token ,那么它是一个标准的自包含 token ,其中包含用户身份和声明。Spring security 中有标准类(ResourceServerConfigurerAdapter、TokenStore 等),可以在每个微服务中配置这些 JWT token 通过所有微服务的通用逻辑提取。如果您的 token 不是 JWT,那么您将需要编写自定义逻辑来提取用户信息并进一步传递。一些很好的设计引用可以看herehere .

关于java - 如何管理多个微服务中的安全上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57011456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com