Build e consumo — starter JWT

Build local

mvn clean install

Distribuir JAR

mvn clean package
./distribute-jar.sh

Copia ecosif-spring-boot-starter-security-{version}.jar para libs/ de auth, masterdata, moviments, querys e reports.

Publicação automática (GitHub Packages)

O workflow publish-maven.yml publica a biblioteca no GitHub Packages e anexa o .jar como artifact da execução.

Exemplo:

git tag -a v0.7.07.202607081 -m "Release 0.7.07.202607081"
git push origin v0.7.07.202607081

Para consumir via GitHub Packages (alternativa ao JAR em libs/):

<repositories>
  <repository>
    <id>github</id>
    <url>https://maven.pkg.github.com/disoft-gh/ecosif-spring-boot-starter-security</url>
  </repository>
</repositories>

No CI dos consumidores, autentique Maven com GITHUB_TOKEN (mesmo owner) ou PAT com read:packages.

Dependência Maven

<properties>
  <ecosifSecurity>0.7.07.202607081</ecosifSecurity>
</properties>

<dependency>
  <groupId>io.ecosif.security</groupId>
  <artifactId>ecosif-spring-boot-starter-security</artifactId>
  <version>${ecosifSecurity}</version>
</dependency>

Configuração YAML

app:
  auth:
    tokenSecret: ${AUTH_TOKEN_SECRET}
    tokenExpirationMsec: ${TOKEN_EXPIRATION:1800000}
    subjectClaim: ${ECOSIF_JWT_SUBJECT_CLAIM:username}

Bean de resolução do utilizador

@Bean
public JwtSubjectUserDetailsService jwtSubjectUserDetailsService(
        JwtProperties jwtProperties,
        LocalUserDetailService service) {
    return new SubjectAwareJwtSubjectUserDetailsService(
            jwtProperties,
            service::loadUserByUsername,
            service::loadUserById);
}

Emissão do token (ecosif-auth)

tokenProvider.createToken(user.getUsername(), user.getId());

Auto-configuração ativa quando app.auth.tokenSecret está definido.

Consumidores