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