HTTP Status 403 - Forbidden

Der HTTP-Status-Code 403 Forbidden signalisiert, dass der Server den Request versteht, aber den Zugriff verweigert. Client ist typischerweise authenticated, hat aber nicht die erforderlichen Permissions. Unterscheidet sich von 401 (fehlende Authentication).

Typ

Response-Status-Code

Syntax

Der Status Code wird zurückgegeben, wenn Authorization fehlschlägt.

http
HTTP/1.1 403 Forbidden

Direktiven

Der 403 Forbidden Status Code wird für Authorization-Failures verwendet.

Authorization Failure
Client ist authenticated (hat gültige Credentials/Token), aber nicht authorized für diese spezifische Resource oder Action. Server verweigert Zugriff basierend auf Permissions, Roles oder Policies.
Permanent Denial
Im Gegensatz zu temporären Errors signalisiert 403, dass Re-Request mit gleichen Credentials keinen Erfolg haben wird. Client benötigt andere Permissions oder muss Administrator kontaktieren.
Permission-Based Access
Verwendet für Role-Based Access Control (RBAC), Attribute-Based Access Control (ABAC), Resource-Ownership Checks. Client hat falsche Role oder fehlende Permissions.

Beispiele

Nachfolgend finden Sie praktische Anwendungsbeispiele für Status 403.

Beispiel 1 Insufficient Role Permissions

http
DELETE /api/users/42 HTTP/1.1
Host: api.example.com
Authorization: Bearer token_user_role

HTTP/1.1 403 Forbidden
Content-Type: application/json

{
  "error": "insufficient_permissions",
  "message": "Admin role required to delete users",
  "required_role": "admin",
  "current_role": "user"
}

Beispiel 2 Resource Ownership Violation

http
PUT /api/documents/doc-123 HTTP/1.1
Host: api.example.com
Authorization: Bearer token_user_alice

HTTP/1.1 403 Forbidden
Content-Type: application/json

{
  "error": "access_denied",
  "message": "You can only edit your own documents",
  "document_owner": "bob",
  "current_user": "alice"
}

Beispiel 3 IP Whitelist Restriction

http
GET /api/admin HTTP/1.1
Host: api.example.com
Authorization: Bearer valid_token
X-Forwarded-For: 203.0.113.42

HTTP/1.1 403 Forbidden
Content-Type: application/json

{
  "error": "ip_not_allowed",
  "message": "Admin API only accessible from whitelisted IPs",
  "client_ip": "203.0.113.42",
  "allowed_ranges": ["192.0.2.0/24", "198.51.100.0/24"]
}

Authorization Failure Flow

403 Forbidden Response bei Authorization Failure trotz Authentication

Vorteile für die Systemarchitektur

  • Clear Authorization Semantics: Unterscheidet Authentication (401) von Authorization (403). Client weiß, dass Credentials gültig sind, aber Permissions fehlen.
  • RBAC Enforcement: Ermöglicht granulare Access-Control auf API-Level. Gateway kann Requests basierend auf Roles, Permissions oder Attributes blocken.
  • Security by Default: Explizite Permission-Checks verhindern unauthorized Access zu sensitive Resources. Fail-Closed Approach für unbekannte Resources.

Spezifikation

RFC 9110, Section 15.5.4 – HTTP Semantics https://www.rfc-editor.org/rfc/rfc9110.html#name-403-forbidden

Weitere Spezifikationen

HTTP Status 401 - Unauthorized, HTTP Status 404 - Not Found, Authorization Header