Konfiguration
NSP Access Handler konfigureres i de i installationsvejledningen beskrevne filer. Alle filer findes i Wildfly modulet.
Opsætning
Følgende filer styrer forskellige aspekter af opsætningen af NSP Access Handler.
Tomme linier og linier der starter med et #-tegn ignoreres.
handler.properties
| Property | Betydning |
|---|---|
| buffersize | Størrelsen på hver del-buffer. Kan ændres til et mindre tal hvis vi oplever stor GC overhead. |
accesslog.properties
| Property | Betydning |
|---|---|
| logCategory | Den log kategori der skal access logges til. |
| limit | Det maksimale antal log entries der må ligge i memory inden et flush tvinges igennem. |
| delay | Hvor ofte der skal skrives til disk. ISO-8601 Duration format. |
audit.properties
| Property | Betydning |
|---|---|
| logCategoryPrefix | Den log kategori prefix der bruges til at udregne den endelige log kategori. |
cra.properties
| Property | Betydning |
|---|---|
| datasource | Den datasource der bruges til at få fat i CRA databasen |
| refreshInterval | Hvor ofte skal CRA data læses fra databasen |
| ttl | Hvor mange minutter CRA data replikering maks må være bagud |
jtph.properties
| Property | Betydning |
|---|---|
| jtph.enabled | Skal være sat til true for at Access Handleren parser JTP-H sikkerhedsbilleter og udstiller dem gennem Security API |
| jtph.keys.[KeyAlias].type | Typen af nøglen. Mulige værdier er secret og pkcs12 |
| jtph.keys.[KeyAlias].file | Filnavnet på det Java KeyStore hvor nøglen er placeret. Anvendes ikke ved typen secret |
| jtph.keys.[KeyAlias].secret | Den delte hemmelige streng (Shared Secret) hvis typen er secret |
| jtph.keys.[KeyAlias].password | Kodeordet til den konfigurerede Java KeyStore. |
| jtph.keys.[KeyAlias].alias | Aliaset for det valget certifikat i den konfigurerede Java KeyStore. |
| jtph.issuers.[IssuerAlias].name | Navnet på udstederen af JTP-H sikkerhedsbilletter. Værdien skal være præcis som angivet i billetten. |
| jtph.issuers.[IssuerAlias].audience | Navnet på modtageren af JTP-H sikkerhedsbilletten. Værdien skal forefindes i billettens liste af modtagere. |
| jtph.issuers.[IssuerAlias].ttl | Hvor gammel en billet maks må være for at Access Handleren vil tage imod den. ISO-8601 format (f.eks. PT15M for 15 minutter) |
| jtph.issuers.[IssuerAlias].assurance.level | Den tilladte værdi af "National Standard for Identiteters Sikringsniveauer". |
| jtph.issuers.[IssuerAlias].issuance.policy | Den tilladte værdi af "Udsteldelsespolitikken for komponenten" |
Det kan i nogle tilfælde være nødvendigt at konfigurere flere nøgler, og i sjældne tilfælde flere udstedere. Dette sker ved at angive forskellige værdier for [KeyAlias] og [IssuerAlias].
Værdien der bruges som [IssuerAlias] har i sig selv ikke nogen betydning, men værdien der bruges som [KeyAlias] skal matche den "Key Identifier" udstederen har angivet i sikkerhedsbilletten.
Da det er muligt at anvende tegn i billetten, som ikke kan anvendes i en Java Properties fil, bliver værdien af "Key Identifier" modificeret med følgende algoritme inden den anvendes som nøgle i filen:
- Fjern tegn fra enden af strengen så den maks er 256 tegn lang.
- Konverter strengen til små bogstaver.
- fjern alle tegn der ikke er et bogstav fra a-z eller et tal fra 0-9.
- Fjern tegn fra enden af strengen så den maks er 32 tegn lang.
Det er muligt at angive flere værdier for de to properties .assurance.level og .issuance.policy ved blot at tilføje .1, .2 til propertien som vist i dette eksempel:
jtph.issuers.sdsoidcserver1.issuance.policy.1=politik jtph.issuers.sdsoidcserver1.issuance.policy.2=kultur
Access Log
De følgende filer indeholder hver et antal elementer der udvælger de værdier fra requestet der logges ifm adgangslogning.
Hvert element kan mappes til et alias der derved anvendes som attributnavn i det JSON object der produceres, dette gøres på formen:
element -> alias
Hvis der ikke findes en mapning anvendes elementet som attributnavn.
Tomme linier og linier der starter med et #-tegn ignoreres.
httpheaders.config
Hver linie indeholder navnet på en HTTP Header der skal logges.
elementtexts.config
Hver linie indeholder namespace og navn på et XML element hvis tekstuelle indhold logges.
attributevalues.config
Hver linie indeholder navnet på en SAML attribut hvis værdi logges.
jsonwebtoken.config
Hver linie indeholder navnet på en JSON attribut hvis værdi logges.
Skip
De følgende filer indeholder URL patterns.
Tomme linier og linier der starter med et #-tegn ignoreres.
handler.skip
Hvis et request matcher en af disse URL patterns, springes alt funktionalitet i NSP Access Handler over.
log.skip
Hvis et request matcher en af disse URL patterns, springes Access og Audit log over.
crl.skip
Hvis et request matcher en af disse URL patterns, springes CRL tjekket over.
Access Log
NSP Access Handler producerer en access log der ligner den fra den tidligere HTTP Handler, blot med flere elementer. Det er vigtigt at denne log opsamles i splunk.
Audit Log
NSP Access Handler producerer en eller flere audit logs. Det er vigtigt at disse logs opsamles i splunk.
For hver komponent der anvender NSP Audit API bør der defineres en specifik fil i Wildfly konfigurationen (standalone.xml).
Følgende eksempel viser hvordan der defineres en logfil og en kategori til en komponent med navnet "test"
<!-- Eksempel på en logfil til en komponent med forkortelsen TEST -->
<size-rotating-file-handler name="AUDITLOG_TEST" autoflush="true">
<file relative-to="jboss.server.log.dir" path="test-audit.log"/>
<append value="true"/>
<rotate-size value="1m"/>
<max-backup-index value="50"/>
<formatter>
<pattern-formatter pattern="%s"/>
</formatter>
</size-rotating-file-handler>
<!-- Eksempel på en kategori til en komponent med forkortelsen TEST -->
<logger category="dk.sds.nsp.audit.log.test" use-parent-handlers="false">
<level name="DEBUG" />
<handlers>
<handler name="AUDITLOG_TEST"/>
</handlers>
</logger>
Det er vigtigt at pattern ikke ændres fra %s for den nye logfil.
Overvågning
NSP Access Handler er et platforms tool og har derfor ikke en almindelig NSP overvågningssnitflade. Overvågning sker derfor gennem logfilen accesshandler.log.