azure中的加密令牌,解密加密令牌

问题描述 投票:0回答:1

我将 Angular 与 bff (Spring Boot 3.2) 一起使用,将 api 与 Spring Boot 3.2 一起使用。

Bff使用Spring Cloud进行身份验证。 Angular 从 Bff 获取令牌并将其发送到“Authorization”标头中的 api 后端。

工作正常,现在我搜索使用加密令牌。

我想知道azure是否可以返回一个加密的令牌..并且在api后端可以自动验证这个加密的令牌?

否则我需要解密令牌,我应该在安全配置中执行此操作?

@Configuration
@EnableWebSecurity
@EnableMethodSecurity
@Slf4j
public class SecurityConfig {

    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http.cors(cors -> cors.configurationSource(request -> {
                      CorsConfiguration configuration = new CorsConfiguration();
                        configuration.setAllowedOrigins(Arrays.asList("*"));
                        configuration.setAllowedMethods(Arrays.asList("*"));
                        configuration.setAllowedHeaders(Arrays.asList("*"));
                        return configuration;
                    }))
                    .csrf().disable().httpBasic().disable().headers().xssProtection().and()
                    .and().headers().frameOptions().sameOrigin()
                    .and().authorizeHttpRequests().requestMatchers(HttpMethod.GET, "/v3/api-docs/**", "/swagger-ui/**", "/swagger-ui.html", "/actuator/**").permitAll().and()
                    .apply(AadResourceServerHttpSecurityConfigurer.aadResourceServer())
                    .and().authorizeHttpRequests().anyRequest().authenticated();nticated();

        http.build();
    }
}
spring-boot azure spring-security spring-cloud
1个回答
0
投票

如果您在端点之间的通信中使用 https,则无需加密令牌。

JWT 包含三个部分。标头、有效负载和签名,以点分隔。用于授权的承载令牌通常采用 Base64 编码。您可以对令牌进行 Base64 解码并查看不同的部分。

签名起到防篡改作用。 HTTP 传输层安全性 (TLS) 用于保护传输中的数据隐私。除了临时会话内存之外,您不需要将令牌存储在任何地方。

签名基本上是令牌标头+有效负载的加密哈希。当 Microsoft Identity Platform 生成令牌时,它将执行哈希函数 - 通常是 SHA256。然后,它根据 RSA 算法使用密钥(加密密钥对的私有部分)加密该哈希值。结果是 HMACSHA256。令牌内的签名是加密的,唯一可以解密的一方是 Microsoft。

如果有人更改正文的内容(包含声明),例如,试图冒充不同的用户,或添加更多声明/权限,则签名将变得无效,因为标头的哈希值+ 有效负载将完全不同。即使只有最轻微的修改。

您的后端能够使用令牌签名公钥来验证签名,Microsoft 发布该公钥供任何人查看。它解密令牌中的签名,执行自己的散列,并将其与令牌中的内容进行比较。如果它们匹配,那么依赖方(您的后端,或者可能是其他应用程序或 API,例如 Graph)可以确保令牌没有被伪造或篡改。

© www.soinside.com 2019 - 2024. All rights reserved.