Ontwikkel een OpenAPI Specificatie voor Geavanceerde API Authenticatie en Autorisatie
description
Met deze prompt kun je een OpenAPI specificatie ontwerpen die geavanceerde beveiligingsmaatregelen voor authenticatie en autorisatie beschrijft. Dit helpt je API beschermen tegen ongeautoriseerde toegang, verhoogt de controle over wie welke resources kan gebruiken en maakt de integratie met beveiligingsprotocollen eenvoudiger. Het is effectiever dan standaard specificaties omdat het expliciet complexe beveiligingsregels documenteert, wat ontwikkelaars en beveiligingsteams ondersteunt.
prompt
Help me een OpenAPI specificatie te maken die geavanceerde authenticatie- en autorisatiemechanismen beschrijft om de veiligheid van mijn API te verbeteren.
API Naam: <voer de naam van mijn API in>
Authenticatie Methodes (bijv. OAuth2, JWT, API keys): <beschrijf de authenticatie methoden>
Autorisat ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
openapi: 3.0.3
info:
title: E-commerce API
version: 1.0.0
description: >
Deze API ondersteunt geavanceerde authenticatie- en autorisatiemechanismen voor een veilige toegang tot e-commerce gegevens.
servers:
- url: https://api.voorbeeld.com
description: Productie server
components:
securitySchemes:
OAuth2Auth:
type: oauth2
flows:
authorizationCode:
authorizationUrl: https://auth.voorbeeld.com/oauth/authorize
tokenUrl: https://auth.voorbeeld.com/oauth/token
scopes:
read: Lees toegang tot gegevens
write: Schrijftoegang tot gegevens
ApiKeyAuth:
type: apiKey
in: header
name: X-API-Key
security:
- OAuth2Auth:
- read
- ApiKeyAuth: []
paths:
/producten:
get:
summary: Lijst van producten
description: Haalt een lijst op van producten. Vereist 'read' scope.
security:
- OAuth2Auth:
- read
- ApiKeyAuth: []
responses:
'200':
description: Een lijst met producten
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Product'
post:
summary: Voeg een nieuw product toe
description: Voegt een nieuw product toe. Vereist 'write' scope.
security:
- OAuth2Auth:
- write
- ApiKeyAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Product'
responses:
'201':
description: Product succesvol aangemaakt
components:
schemas:
Product:
type: object
properties:
id:
type: string
description: Unieke identifier van het product
naam:
type: string
prijs:
type: number
format: float
voorraad:
type: integer
description: Hoeveelheid op voorraad
```
provider: deepseek
model: deepseek-chat
Zeker, hier is een OpenAPI 3.0.0-specificatie in YAML voor jouw E-commerce API met de gevraagde beveiligingsmechanismen:
```yaml
openapi: 3.0.0
info:
title: E-commerce API
description: Veilige E-commerce API met geavanceerde authenticatie en autorisatie
version: 1.0.0
contact:
name: API Support
email: support@ecommerce-api.nl
servers:
- url: https://api.ecommerce.nl/v1
description: Beveiligde productieserver
paths:
/products:
get:
summary: Productenlijst ophalen
description: Haal een lijst van producten op (lezen rechten vereist)
security:
- OAuth2: [products:read]
- ApiKeyAuth: []
responses:
'200':
description: Succesvolle response
'401':
description: Niet geauthenticeerd
'403':
description: Geen toegangsrechten
post:
summary: Nieuw product toevoegen
description: Voeg een nieuw product toe (schrijven rechten vereist)
security:
- OAuth2: [products:write]
responses:
'201':
description: Product succesvol aangemaakt
'401':
description: Niet geauthenticeerd
'403':
description: Geen schrijfrechten
/orders:
get:
summary: Bestellingen ophalen
description: Haal bestellingen op (lezen rechten vereist)
security:
- OAuth2: [orders:read]
- ApiKeyAuth: []
responses:
'200':
description: Succesvolle response
'401':
description: Niet geauthenticeerd
'403':
description: Geen toegangsrechten
components:
securitySchemes:
OAuth2:
type: oauth2
description: OAuth2 authorization code flow met rolgebaseerde toegang
flows:
authorizationCode:
authorizationUrl: https://auth.ecommerce.nl/authorize
tokenUrl: https://auth.ecommerce.nl/token
scopes:
products:read: Producten lezen
products:write: Producten schrijven
orders:read: Bestellingen lezen
orders:write: Bestellingen schrijven
users:read: Gebruikersgegevens lezen
ApiKeyAuth:
type: apiKey
in: header
name: X-API-Key
description: API key voor beperkte toegang tot leesoperaties
schemas:
Product:
type: object
properties:
id:
type: integer
format: int64
name:
type: string
price:
type: number
format: float
category:
type: string
Order:
type: object
properties:
id:
type: integer
format: int64
productId:
type: integer
quantity:
type: integer
status:
type: string
enum: [pending, confirmed, shipped, delivered]
responses:
UnauthorizedError:
description: Authenticatie token ontbreekt of is ongeldig
content:
application/json:
schema:
type: object
properties:
error:
type: string
example: "Unauthorized"
message:
type: string
example: "Authenticatie vereist"
ForbiddenError:
description: Gebruiker heeft onvoldoende rechten voor deze actie
content:
application/json:
schema:
type: object
properties:
error:
type: string
example: "Forbidden"
message:
type: string
example: "Onvoldoende rechten"
security:
- OAuth2: []
- ApiKeyAuth: []
```
**Belangrijke kenmerken van deze specificatie:**
1. **Beveiligingsschema's**:
- OAuth2 met authorization code flow voor gebruikersauthenticatie
- API Key authenticatie voor service-to-service communicatie
2. **Rolgebaseerde toegang met scopes**:
- `products:read` - Producten lezen
- `products:write` - Producten aanmaken/bewerken
- `orders:read` - Bestellingen lezen
- `orders:write` - Bestellingen beheren
3. **Veiligheidsmaatregelen**:
- HTTPS verplicht (zie servers URL)
- X-API-Key header voor API key authenticatie
- Duidelijke foutresponses voor autorisatiefouten
4. **Flexibele beveiliging**:
- Endpoints kunnen zowel OAuth2 als API Key authenticatie accepteren
- Globale beveiliging gecombineerd met endpoint-specifieke vereisten
Deze specificatie biedt een robuust kader voor het implementeren van veilige toegangscontrole in jouw E-commerce API.