fiks-maskinporten


License

License

GroupId

GroupId

no.ks.fiks
ArtifactId

ArtifactId

fiks-maskinporten
Last Version

Last Version

1.0.4
Release Date

Release Date

Type

Type

pom
Description

Description

fiks-maskinporten
fiks-maskinporten
Project URL

Project URL

https://github.com/ks-no/fiks-maskinporten
Source Code Management

Source Code Management

https://github.com/ks-no/fiks-maskinporten

Download fiks-maskinporten

How to add to project

<!-- https://jarcasting.com/artifacts/no.ks.fiks/fiks-maskinporten/ -->
<dependency>
    <groupId>no.ks.fiks</groupId>
    <artifactId>fiks-maskinporten</artifactId>
    <version>1.0.4</version>
    <type>pom</type>
</dependency>
// https://jarcasting.com/artifacts/no.ks.fiks/fiks-maskinporten/
implementation 'no.ks.fiks:fiks-maskinporten:1.0.4'
// https://jarcasting.com/artifacts/no.ks.fiks/fiks-maskinporten/
implementation ("no.ks.fiks:fiks-maskinporten:1.0.4")
'no.ks.fiks:fiks-maskinporten:pom:1.0.4'
<dependency org="no.ks.fiks" name="fiks-maskinporten" rev="1.0.4">
  <artifact name="fiks-maskinporten" type="pom" />
</dependency>
@Grapes(
@Grab(group='no.ks.fiks', module='fiks-maskinporten', version='1.0.4')
)
libraryDependencies += "no.ks.fiks" % "fiks-maskinporten" % "1.0.4"
[no.ks.fiks/fiks-maskinporten "1.0.4"]

Dependencies

There are no dependencies for this project. It is a standalone project that does not depend on any other jars.

Project Modules

There are no modules declared in this project.

maskinporten-client

Maven Central GitHub

Dette er en klient som kobler seg opp til Maskinporten (https://difi.github.io/idporten-oidc-dokumentasjon/oidc_auth_server-to-server-oauth2.html) og ber om en JWT-access-token basert på et virksomhetssertifikat, en issuer (konto hos Difi) og ett eller flere scopes.

Husk å be Difi konfigurere opp klienten til å sende JWT-access-token og ikke "token by reference".

Mottatte access-token blir lagret i en cache og vil bli gjenbrukt frem til de utløper. Det er mulig å fjerne access-tokenet fra cachen før det utløper og blir ugyldig. Dette er nyttig dersom det gjøres en forespørsel rett før tokenet utløper og det er fare for at tokenet blir ugyldig før forespørselen sendes. Konfigurasjon gjøres ved initiering av klienten og styres i feltet "numberOfSecondsLeftBeforeExpire".

Maven koordinater

        <dependency>
            <groupId>no.ks.fiks</groupId>
            <artifactId>maskinporten-client</artifactId>
            <version>1.0.16</version>
        </dependency>

Eksempel

import no.ks.fiks.maskinporten.Maskinportenklient;
import no.ks.fiks.maskinporten.MaskinportenklientProperties;

import java.io.FileInputStream;
import java.io.IOException;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;

public class Application {

    public static void main(String[] args) throws Exception {
        String keyStoreFilename = "virksomhetssertifikat-auth.p12";
        char[] keyStorePassword = "passord".toCharArray();
        KeyStore keyStore = getKeyStore(keyStoreFilename, keyStorePassword);

        Maskinportenklient maskinporten = new Maskinportenklient(keyStore, "authentication certificate", keyStorePassword, MaskinportenklientProperties.builder()
                .numberOfSecondsLeftBeforeExpire(10)
                .issuer("<klient-id-utdelt-av-difi>")
                .audience("https://oidc-ver2.difi.no/idporten-oidc-provider/")
                .tokenEndpoint("https://oidc-ver2.difi.no/idporten-oidc-provider/token")
                .build());

        String accessToken = maskinporten.getAccessToken("ks:fiks");
        System.out.println("accessToken = " + accessToken);
    }

    private static KeyStore getKeyStore(String keyStoreFilename, char[] keyStorePassword) throws KeyStoreException, IOException, CertificateException, NoSuchAlgorithmException {
        KeyStore keyStore = KeyStore.getInstance("pkcs12");
        keyStore.load(new FileInputStream(keyStoreFilename), keyStorePassword);
        return keyStore;
    }

}

maskinporten-spring-boot-client

Autokonfigurasjon av maskinporten for Spring Boot.

Maven koordinater

        <dependency>
            <groupId>no.ks.fiks</groupId>
            <artifactId>maskinporten-spring-boot-client</artifactId>
            <version>1.0.15</version>
        </dependency>

Eksempel

    @Bean
    public KontaktOgReservasjonsregisteretApi getKontaktOgReservasjonsregisteretApi(Maskinportenklient maskinportenklient) {
        return new KontaktOgReservasjonsregisteretApi(maskinportenklient);
    }

Konfigurasjon - application.yaml

virksomhetsertifikat.sertifikater:
- sertifikat-type: AUTH
  keystore-password: <KEYSTORE_PASSWORD>
  keystore-path: <KEYSTORE_PATH>
  certificate-alias: <CERTIFICATE_ALIAS>
  private-key-alias: <PRIVATE_KEY_ALIAS>
  private-key-password: <PRIVATE_KEY_PASSWORD>

maskinporten:
  audience: <AUDIENCE>
  tokenEndpoint: <TOKEN_ENDPOINT>
  issuer: <ISSUER>
  numberOfSecondsLeftBeforeExpire: <NUMBER_OF_SECOUNDS>

I fra versjon 1.0.16 er det også mulig å oppgi "consumerOrg" dersom man skal opptre på vegne av en annen aktør (delegering). Settes i så fall til orgnr til aktør man skal opptre på vegne av. Krever også at oppgitt Maskinporten scope er satt opp til å kreve dette.

no.ks.fiks

KS

Versions

Version
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0