← Каталог
JWT и OAuth2 Resource Server в Spring Boot — Что получится
Фрагмент из «JWT и OAuth2 Resource Server в Spring Boot»: Что получится.
package com.example.demo.security;
import com.nimbusds.jose.jwk.source.ImmutableSecret;
import com.nimbusds.jose.jwk.OctetSequenceKey;
import com.nimbusds.jose.proc.SecurityContext;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.oauth2.jwt.*;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
@Configuration
public class JwtConfig {
@Bean
SecretKey secretKey(@Value("${app.jwt.secret}") String secret) {
byte[] bytes = secret.getBytes(StandardCharsets.UTF_8);
return new SecretKeySpec(bytes, "HmacSHA256");
}
@Bean
JwtDecoder jwtDecoder(SecretKey secretKey) {
return NimbusJwtDecoder.withSecretKey(secretKey).build();
}
@Bean
JwtEncoder jwtEncoder(SecretKey secretKey) {
var jwk = new OctetSequenceKey.Builder(secretKey.getEncoded()).build();
var jwkSource = new ImmutableSecret<SecurityContext>(jwk);
return new NimbusJwtEncoder(jwkSource);
}
} package com.example.demo.security;
import com.nimbusds.jose.jwk.source.ImmutableSecret;
import com.nimbusds.jose.jwk.OctetSequenceKey;
import com.nimbusds.jose.proc.SecurityContext;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.oauth2.jwt.*;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
@Configuration
public class JwtConfig {
@Bean
SecretKey secretKey(@Value("${app.jwt.secret}") String secret) {
byte[] bytes = secret.getBytes(StandardCharsets.UTF_8);
return new SecretKeySpec(bytes, "HmacSHA256");
}
@Bean
JwtDecoder jwtDecoder(SecretKey secretKey) {
return NimbusJwtDecoder.withSecretKey(secretKey).build();
}
@Bean
JwtEncoder jwtEncoder(SecretKey secretKey) {
var jwk = new OctetSequenceKey.Builder(secretKey.getEncoded()).build();
var jwkSource = new ImmutableSecret<SecurityContext>(jwk);
return new NimbusJwtEncoder(jwkSource);
}
}