Re: nikita med beta versjon av fulltesktsøk

Thomas Sødring tsodring at oslomet.no
Sun Jun 27 17:58:22 CEST 2021


Hei Ole,

En gjennomgang av OAuth2/OICD er litt for mye å ta på en epost på listen 
så jeg svarer overordnet. Husk at nikita er en spring-boot application 
og bruker alt spring har å tilby. Det stemmer at spring lar deg bruke  
JWT eller "opaque" tokens. Tidligere har vi brukt JWT, men for en stund 
tilbake gikk vi over til "opaque" tokens.

I forhold til OAuth2 er nikita både en resource server og en 
authorization server. Med single-sign-on så er  single-sign-on serverene 
authorization serveren, og nikita vil kun være en resource server. For å 
gjøre det enkelt for folk å laste ned og teste nikita så har jeg valgt å 
la nikita være både resource server og authorization server. Nikita 
prøver å forholde seg til OIDC og utifra hvordan jeg tolker OIDC så har 
vi laget en korrekt beskrivelse av en OIDC endepunkt for å fortelle 
hvordan du logger på.

Se feks: 
https://nikita.oslomet.no/noark5v5/.well-known/openid-configuration som 
gir følgende:

{
   "issuer": "https://nikita.oslomet.no/noark5v5/",
   "authorization_endpoint": 
"https://nikita.oslomet.no/noark5v5/oauth/token",
   "registration_endpoint": 
"https://nikita.oslomet.no/noark5v5/api/admin/ny-bruker",
   "grant_types_supported": [
     "password",
     "authorization_code",
     "refresh_token"
   ],
   "token_endpoint_auth_methods_supported": [
     "client_secret_basic"
   ],
   "introspection_endpoint": 
"https://nikita.oslomet.no/noark5v5/oauth/check_token",
   "revocation_endpoint": 
"https://nikita.oslomet.no/noark5v5/oauth/revoke-token",
   "request_parameter_supported": true
}

Her får du vite at du logger på med endepunktet:

  https://nikita.oslomet.no/noark5v5/oauth/token

Dersom du logger på nikita riktig med feks

curl -H 'Authorization: Basic bmlraXRhLWNsaWVudDpzZWNyZXQ=' -X POST 
'https://nikita.oslomet.no/noark5v5/oauth/token?grant_type=password&client_id=nikita-client&username=admin@example.com&password=password'

så vil du få tilbake en token som du kan bruke for videre samhandling.

{
   "access_token": "a7ZLQFollqxDHta5zcpdnS8mff0",
   "token_type": "bearer",
   "refresh_token": "25mchfmpnq1ZJCJ0VGkp32_J8y4",
   "expires_in": 25634,
   "scope": "all"
}

Da kan du samhandle med nikita på følgende vis:

curl -H 'Accept:application/vnd.noark5+json' --header "Authorization: 
Bearer a7ZLQFollqxDHta5zcpdnS8mff0" -X GET 
https://nikita.oslomet.no/noark5v5/api/arkivstruktur/

Jeg håper dette svaret spørsmålet ditt om hvordan du oppretter en gyldig 
token for bruk med samhandling til nikita.

  - Thomas


On 6/27/21 4:45 PM, Ole Aamot wrote:
> On Jun 27, 2021, at 1:23 PM, Petter Reinholdtsen <pere at hungry.com 
> <mailto:pere at hungry.com>> wrote:
>>
>> [Ole Aamot]
>>> Stavefeil i "Accept:application/vnd.noark5+json"?
>>
>> Kanskje.  Hva tenker du på?  Manglende mellomrom etter : virker litt
>> suspekt.
>
> $ curl --header "Accept: application/vnd.noark5+json" --header 
> "Authorization: Bearer esg7Qhv8hM0edCfxqPFxDDrTmsA" -X GET 
> "https://nikita.oslomet.no/noark5v5/api/arkivstruktur/dokumentobjekt?%24search=arkivverket 
> <https://nikita.oslomet.no/noark5v5/api/arkivstruktur/dokumentobjekt?%24search=arkivverket>"
> {"error":"invalid_token","error_description":"Invalid access token: 
> esg7Qhv8hM0edCfxqPFxDDrTmsA”}*%*
>
>>> Hvordan bygger jeg CHECKSUM i Authorization: Bearer <CHECKSUM>?
>>
>> Det er vel en JWT-signatur, ikke en sjekksum.  Har ikke satt meg inn i
>> detaljene, bruker stort sett et jwt-bibliotek til slikt.
>
> OK.  Jeg fant relevant kode i 
> src/main/java/nikita/webapp/config/WebappProperties.java
>
>   public static class Security {
>
>       private final Authentication authentication = new Authentication();
>
>       public Authentication getAuthentication() {
>           return authentication;
>       }
>
>       public static class Authentication {
>
>           private final Jwt jwt = new Jwt();
>
>           public Jwt getJwt() {
>               return jwt;
>           }
>
>           public static class Jwt {
>
>               private String secret;
>
>               private long tokenValidityInSeconds = 1800;
>               private long tokenValidityInSecondsForRememberMe = 2592000;
>
>               public String getSecret() {
>                   return secret;
>               }
>
>               public void setSecret(String secret) {
>                   this.secret = secret;
>               }
>
>               public long getTokenValidityInSeconds() {
>                   return tokenValidityInSeconds;
>               }
>
>               public void setTokenValidityInSeconds(long 
> tokenValidityInSeconds) {
>                   this.tokenValidityInSeconds = tokenValidityInSeconds;
>               }
>
>               public long getTokenValidityInSecondsForRememberMe() {
>                   return tokenValidityInSecondsForRememberMe;
>               }
>
>               public void setTokenValidityInSecondsForRememberMe(long 
> tokenValidityInSecondsForRememberMe) {
>                   this.tokenValidityInSecondsForRememberMe = 
> tokenValidityInSecondsForRememberMe;
>               }
>           }
>       }
>   }
>
> Hvordan oppretter jeg en gyldig access token (Jwt.secret) til 
> autentisering mot Nikita Noark5 Core via curl?
>
> Ellers må jeg vel benytte username og passord?
>
> Logger du inn med en standard konto (admin at example.com 
> <mailto:admin at example.com>) i lib/n5core/endpoint.py i noark5-tester 
> siden search-test fungerer uten access token?
>
> search-test:       self.login()
> […]
> lib/n5core/endpoint.py:   def login(self, username = None, password = 
> None):
> [...]
>               if username is None:
>                     username = 'admin at example.com 
> <mailto:admin at example.com>'
>                 if password is None:
>                     password = 'password'
>
>>
>>> Fulltekstsøket fungerer.
>>
>> Godt. :)
>
> Det fungerer ikke uten autentisering enten med access token (og det er 
> litt uklart hvordan en
> oppretter en access tokens til Nikita Noark5 Core i Jwt) eller med 
> standard konto med kjent
> username/password.
>
>> Ole Aamot
> Aamot Software
> Mobile phone: +4745049800
> Web: www.aamotsoftware.no 
> <https://eur02.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.aamotsoftware.no%2F&data=04%7C01%7Ctsodring%40oslomet.no%7C79d2618fa4484997ef9b08d9397a45e2%7Cfec81f12628645508911f446fcdafa1f%7C0%7C1%7C637604019609420984%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C2000&sdata=F3mVveo9iOEHlBwPFjquLMjuVy7cBOJNiX1Ny9lSfdw%3D&reserved=0>
>
> _______________________________________________
> nikita-noark mailing list
> nikita-noark at nuug.no
> https://lists.nuug.no/mailman/listinfo/nikita-noark
-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://lists.nuug.no/pipermail/nikita-noark/attachments/20210627/b1baa21a/attachment-0001.htm 


More information about the nikita-noark mailing list