HTTP Security
What is HTTP Security Schema in AsyncAPI?
HTTP Security Schema in AsyncAPI is a collection of authentication mechanisms that can be used to secure HTTP-based communications. It encompasses three main types of HTTP authentication:
- Bearer Authentication: A token-based authentication scheme where the client sends a bearer token (typically a JWT) in the Authorization header.
- API Key Authentication: A scheme where a unique identifier (key) is sent in HTTP headers, query parameters, or cookies.
- Non-Bearer Authentication: Various HTTP authentication schemes including Basic, Digest, HOBA, Mutual, NTLM, Negotiate/SPNEGO, and SCRAM.
These security schemes provide different ways to authenticate clients in HTTP-based APIs and message brokers, allowing you to choose the most appropriate method based on your security requirements and constraints.
When to Use HTTP Security Schema in AsyncAPI
HTTP Security Schema is suitable for:
- HTTP-based APIs and services that require authentication
- RESTful APIs integrated with AsyncAPI
- WebSocket connections that start with an HTTP handshake
- HTTP-based message brokers
- Microservices architectures using HTTP for communication
- APIs that need to leverage existing HTTP authentication infrastructure
- Systems where HTTP is the primary transport protocol
- Applications that need to support various authentication methods
The specific HTTP security scheme you choose depends on your security requirements:
- Use Bearer Authentication for token-based authentication, especially with OAuth 2.0 or JWT
- Use API Key Authentication for simple client identification and rate limiting
- Use Basic Authentication for simple username/password authentication
- Use Digest Authentication for improved security without sending passwords in clear text
- Use Mutual Authentication for high-security environments requiring client certificates
- Use NTLM or Negotiate for Windows-integrated authentication
- Use SCRAM for strong password-based authentication with salted hashing
Examples
Here are examples of how to use different HTTP security schemes in AsyncAPI:
Bearer Authentication Example
{
"type": "http",
"scheme": "bearer",
"bearerFormat": "JWT",
"description": "JWT bearer token authentication"
}
API Key Authentication Example
{
"type": "httpApiKey",
"in": "header",
"name": "X-API-Key",
"description": "API Key for HTTP authentication"
}
Basic Authentication Example
{
"type": "http",
"scheme": "basic",
"description": "Basic authentication with username and password"
}
Digest Authentication Example
{
"type": "http",
"scheme": "digest",
"description": "Digest authentication with improved security"
}
AsyncAPI Schema for HTTP Security Schema
The AsyncAPI specification for HTTP security follows this JSON Schema:
{
"oneOf": [
{
"$ref": "https://asyncapi.pavelon.dev/schemas/v3/security/http/nonBearerHTTPSecuritySchema.json"
},
{
"$ref": "https://asyncapi.pavelon.dev/schemas/v3/security/http/bearerHTTPSecuritySchema.json"
},
{
"$ref": "https://asyncapi.pavelon.dev/schemas/v3/security/http/apiKeyHTTPSecuritySchema.json"
}
]
}
This schema indicates that an HTTP security scheme must be one of the following:
- A non-Bearer HTTP security scheme (Basic, Digest, etc.)
- A Bearer HTTP security scheme
- An API Key HTTP security scheme
For more detailed information about each specific HTTP security scheme, refer to: