1. Authentication and Sessions
This tutorial covers user authentication in the dAIEDGE Middleware, including account creation, login, session management, and logout.
Overview
The dAIEDGE Middleware API uses session-based authentication. After logging in, you receive a session_id token that must be included in the x-session-id header for authenticated requests.
Authentication Flow
1. Sign Up → Receive session_id
2. Use session_id in x-session-id header
3. Make authenticated API calls
4. Logout when done (optional)Prerequisites
- Access to a dAIEDGE Middleware API endpoint
- HTTP client (curl, Postman, etc.) or the
daiedge-middleware-clientPython package
Python Setup
pip install daiedge-middleware-clientimport asyncio
import daiedge_middleware_client
configuration = daiedge_middleware_client.Configuration(
host="https://middleware-daiedge.bisite.usal.es/api/v1"
)Step 1: User Registration
Create a new user account on the platform.
Endpoint
POST /api/v1/auth/signupRequest
curl -X POST https://middleware-daiedge.bisite.usal.es/api/v1/auth/signup \
-H "Content-Type: application/json" \
-d '{
"email": "alice@example.com",
"username": "alice",
"password": "SecurePass123!"
}'Request Body
| Field | Type | Required | Description |
|---|---|---|---|
email | string | Yes | Valid email address (must be unique) |
username | string | Yes | Username (must be unique, valid format) |
password | string | Yes | Password (minimum 6 characters) |
Validation Rules
- Email: Must be valid email format and not already registered
- Username: Must follow valid username format and not be taken
- Password: Minimum 6 characters (8+ recommended)
Response (200 OK)
{
"uid": "0000019a95ee982dc1729b661cfc3116",
"session_id": "8KpNqZ3vW92mxR5bLtYfHj-nMcPw6DsVg4TuEaBhI7e_pXzQrFdKjYvNsLhWcOiUfGgTq9rJ2MsXkPv8uZaF9g"
}| Field | Description |
|---|---|
uid | Unique user identifier |
session_id | Session token for authenticated requests |
Error Responses
| Code | Error | Cause |
|---|---|---|
| 400 | EMAIL_INVALID | Email format is invalid |
| 400 | EMAIL_IN_USE | Email already registered |
| 400 | USERNAME_INVALID | Username format is invalid |
| 400 | USERNAME_IN_USE | Username already taken |
| 400 | WEAK_PASSWORD | Password too short (< 6 chars) |
Step 2: User Login
Log in with existing credentials to obtain a session token.
Endpoint
POST /api/v1/auth/loginRequest
curl -X POST https://middleware-daiedge.bisite.usal.es/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{
"username": "alice",
"password": "SecurePass123!"
}'Request Body
| Field | Type | Required | Description |
|---|---|---|---|
username | string | Yes | Username or email address |
password | string | Yes | Account password |
Response (200 OK)
{
"uid": "0000019a95ee982dc1729b661cfc3116",
"session_id": "2LmRpT7wX51nxV8bQtZgKd-pNcYx3FsWh6UvFcDiJ9f_qYaRsGeLkZwOtMiXdPjVgHhUs1sK4NtYlQw9vAbG2h"
}Error Responses
| Code | Error | Cause |
|---|---|---|
| 400 | INVALID_CREDENTIALS | Username not found or password incorrect |
| 403 | INVALID_CREDENTIALS | Authentication failed |
| 403 | USER_BANNED | User account has been banned |
Step 3: Using Your Session
Include the session_id in the x-session-id header for all authenticated requests.
Example: Get Authentication Context
curl -X GET https://middleware-daiedge.bisite.usal.es/api/v1/auth/context \
-H "x-session-id: {SESSION_ID}"Response (200 OK)
{
"status": "LOGGED_IN",
"uid": "0000019a95ee982dc1729b661cfc3116",
"username": "alice",
"email": "alice@example.com",
"role": "user"
}Possible Status Values
| Status | Meaning |
|---|---|
LOGGED_IN | User authenticated and active |
UNAUTHORIZED | No valid session |
USER_NOT_FOUND | Session exists but user deleted |
Step 4: Session Persistence
Sessions are stored with the following properties:
- Duration: 24 hours from creation
- Storage: Server-side session management
- Cookie: Session can also be set as HTTP cookie
Checking Session Status
curl -X GET https://middleware-daiedge.bisite.usal.es/api/v1/auth/context \
-H "x-session-id: {SESSION_ID}"Step 5: Logout
End your session when finished (optional but recommended).
Endpoint
POST /api/v1/auth/logoutRequest
curl -X POST https://middleware-daiedge.bisite.usal.es/api/v1/auth/logout \
-H "x-session-id: {SESSION_ID}"Response (200 OK)
{}Success returns an empty response.
Error Responses
| Code | Error | Cause |
|---|---|---|
| 404 | SESSION_NOT_FOUND | Invalid or already expired session |
Full Python Example
import asyncio
import daiedge_middleware_client
configuration = daiedge_middleware_client.Configuration(
host="https://middleware-daiedge.bisite.usal.es/api/v1"
)
async def main():
async with daiedge_middleware_client.ApiClient(configuration) as api_client:
auth_api = daiedge_middleware_client.AuthApi(api_client)
# Step 1: Sign up
signup = await auth_api.auth_signup_post(
daiedge_middleware_client.SignupRequest(
email="alice@example.com",
username="alice",
password="SecurePass123!",
)
)
print(f"Signed up - uid: {signup.uid}")
# Step 2: Login
login = await auth_api.auth_login_post(
daiedge_middleware_client.LoginRequest(
username="alice",
password="SecurePass123!",
)
)
configuration.api_key["AuthToken"] = login.session_id
print(f"Logged in - session_id: {login.session_id[:20]}...")
# Step 3: Check session
context = await auth_api.auth_context_get()
print(f"Status: {context.status}, role: {context.role}")
# Step 4: Logout
await auth_api.auth_logout_post()
print("Logged out")
asyncio.run(main())Next Steps
Now that you have authentication working, proceed to:
- Wallet Management - Create wallets for blockchain interactions
- Identity Management - Manage blockchain identities
Related Topics
- Role Management - Understanding user roles and permissions