Authenticatie
De DAMS Collection API gebruikt OAuth 2.0 met Bearer Tokens voor authenticatie. Elke API request moet een geldig access token bevatten.
Access Token verkrijgen
Via Keycloak
Open Vlacc gebruikt Keycloak als identity provider. Vraag een access token aan:
bash
curl -X POST \
"https://auth.cultuurconnect.be/realms/vlacc/protocol/openid-connect/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials" \
-d "client_id=YOUR_CLIENT_ID" \
-d "client_secret=YOUR_CLIENT_SECRET"Response:
json
{
"access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI...",
"expires_in": 3600,
"token_type": "Bearer"
}Token gebruiken
Voeg het token toe aan de Authorization header:
bash
curl -X GET \
"https://cultuur-connect-vlacc-uat.cloud.inuits.dev/collection/v1/entities" \
-H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI..."Token vernieuwen
Tokens verlopen na de aangegeven expires_in tijd (standaard 3600 seconden). Vraag voor het verlopen een nieuw token aan.
Best practice: Token caching
python
import time
import requests
class APIClient:
def __init__(self, client_id, client_secret):
self.client_id = client_id
self.client_secret = client_secret
self.token = None
self.token_expires = 0
def get_token(self):
# Gebruik cached token als nog geldig
if self.token and time.time() < self.token_expires - 60:
return self.token
# Vraag nieuw token aan
response = requests.post(
"https://auth.cultuurconnect.be/realms/vlacc/protocol/openid-connect/token",
data={
"grant_type": "client_credentials",
"client_id": self.client_id,
"client_secret": self.client_secret
}
)
data = response.json()
self.token = data["access_token"]
self.token_expires = time.time() + data["expires_in"]
return self.token
def request(self, method, endpoint, **kwargs):
headers = kwargs.pop("headers", {})
headers["Authorization"] = f"Bearer {self.get_token()}"
return requests.request(method, endpoint, headers=headers, **kwargs)API Credentials aanvragen
Om API toegang te krijgen:
- Neem contact op met developers@inuits.eu
- Beschrijf je use case
- Je ontvangt een
client_idenclient_secret
Beveiliging
- Bewaar je credentials veilig (gebruik environment variables)
- Deel nooit je
client_secret - Gebruik HTTPS voor alle requests
Scopes en rechten
API tokens kunnen verschillende scopes hebben:
| Scope | Rechten |
|---|---|
read | Alleen lezen |
write | Lezen en schrijven |
admin | Volledige toegang inclusief verwijderen |
Foutafhandeling
401 Unauthorized
json
{
"error": "Unauthorized",
"message": "Invalid or expired token"
}Oplossing: Vraag een nieuw token aan.
403 Forbidden
json
{
"error": "Forbidden",
"message": "Insufficient permissions"
}Oplossing: Controleer je scopes of vraag uitgebreidere rechten aan.