Authenticatie
Veilige Toegang tot de mindzieAPI
Leer hoe u kunt authenticeren met de mindzieAPI met Bearer tokens, beheertenant- en projecttoegang, en implementeer veilige API-integratiepatronen.
Overzicht Authenticatie
De mindzieAPI gebruikt Bearer token authenticatie gecombineerd met tenant- en projectidentificatoren om veilige, multi-tenant toegang tot mindzie resources te bieden.
API Sleuteltypen
De mindzieAPI ondersteunt twee soorten API-sleutels met verschillende toegangsrechten:
Tenant API-sleutels (Standaard)
Tenant API-sleutels zijn beperkt tot een specifieke tenant en worden gebruikt voor de meeste API-acties:
- Toegang tot projecten, datasets, onderzoeken en dashboards binnen de tenant
- Notebooks en blocks uitvoeren
- Beheer van projectniveau resources
Aanmaken via: Instellingen -> API Keys (binnen mindzieStudio)
Globale API-sleutels (Server API Keys)
Globale API-sleutels hebben systeem-brede administratieve toegang en zijn vereist voor:
- Tenant API - Tenants aanmaken, weergeven, bijwerken en verwijderen
- User API (Globaal) - Gebruikers aanmaken en beheren over alle tenants heen
- Gebruikers toewijzen aan tenants
Aanmaken via: /admin/global-api-keys (Administratorrechten vereist)
BELANGRIJK: De Tenant API endpoints (/api/tenant) vereisen een Global API Key. Gewone tenant-specifieke API-sleutels hebben geen toegang tot deze endpoints en krijgen een 401 Unauthorized respons.
Vereiste Headers
Voor Tenant-Gebonden Acties
Authorization: Bearer YOUR_TENANT_API_KEY
Content-Type: application/json
Het tenant ID wordt doorgaans opgenomen in het URL-pad (bijv. /api/{tenantId}/project).
Voor Global Acties (Tenant-/Gebruikersbeheer)
Authorization: Bearer YOUR_GLOBAL_API_KEY
Content-Type: application/json
Beveiligingsopmerking: Gebruik altijd HTTPS bij API-aanvragen om uw toegangstokens tijdens verzending te beschermen.
Toegangstokens Verkrijgen
Enterprise Server
Voor Enterprise Server implementaties, neem contact op met uw mindzie beheerder om te verkrijgen:
- API toegangstoken
- Tenant ID (GUID-formaat)
- Project ID (GUID-formaat)
- Basis API URL voor uw instantie
SaaS Deployment
Voor SaaS-gebruikers kunnen toegangstokens worden gegenereerd via:
- mindzie Studio gebruikersinterface (Instellingen → API Keys)
- Contact opnemen met uw accountbeheerder
- Gebruik van de authenticatie endpoints (indien ingeschakeld)
Authenticatie Testen
Gebruik de ping endpoints om uw authenticatie-instellingen te verifiëren:
Basis Connectiviteitstest
curl -X GET "https://your-mindzie-instance.com/api/Action/ping"
Geauthenticeerde Test
curl -X GET "https://your-mindzie-instance.com/api/Action/ping/authenticated" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "X-Tenant-Id: YOUR_TENANT_GUID" \
-H "X-Project-Id: YOUR_PROJECT_GUID"
Succesvolle Respons
{
"status": "authenticated",
"timestamp": "2024-01-15T10:30:00Z",
"tenantId": "12345678-1234-1234-1234-123456789012",
"projectId": "87654321-4321-4321-4321-210987654321",
"userId": "user@company.com",
"permissions": ["read", "write", "admin"]
}
Beveiligingsbest practices
Token Beveiliging
Bewaar tokens veilig via omgevingsvariabelen of beveiligde credential management systemen.
Token Verloop
Houd token verloop in de gaten en implementeer vernieuwingmechanismen om ononderbroken toegang te waarborgen.
Multi-Tenant
Elk token is beperkt tot specifieke tenants en projecten voor veilige data-isolatie.
Implementatievoorbeelden
JavaScript/Node.js
const apiConfig = {
baseURL: process.env.MINDZIE_API_URL,
token: process.env.MINDZIE_ACCESS_TOKEN,
tenantId: process.env.MINDZIE_TENANT_ID,
projectId: process.env.MINDZIE_PROJECT_ID
};
const makeAuthenticatedRequest = async (endpoint, options = {}) => {
const url = `${apiConfig.baseURL}${endpoint}`;
const headers = {
'Authorization': `Bearer ${apiConfig.token}`,
'X-Tenant-Id': apiConfig.tenantId,
'X-Project-Id': apiConfig.projectId,
'Content-Type': 'application/json',
...options.headers
};
try {
const response = await fetch(url, {
...options,
headers
});
if (!response.ok) {
throw new Error(`API request failed: ${response.status} ${response.statusText}`);
}
return await response.json();
} catch (error) {
console.error('API request error:', error);
throw error;
}
};
Python
import os
import requests
from typing import Dict, Any
class MindzieAPIClient:
def __init__(self):
self.base_url = os.getenv('MINDZIE_API_URL')
self.token = os.getenv('MINDZIE_ACCESS_TOKEN')
self.tenant_id = os.getenv('MINDZIE_TENANT_ID')
self.project_id = os.getenv('MINDZIE_PROJECT_ID')
if not all([self.base_url, self.token, self.tenant_id, self.project_id]):
raise ValueError("Missing required environment variables")
def _get_headers(self) -> Dict[str, str]:
return {
'Authorization': f'Bearer {self.token}',
'X-Tenant-Id': self.tenant_id,
'X-Project-Id': self.project_id,
'Content-Type': 'application/json'
}
def make_request(self, method: str, endpoint: str, **kwargs) -> Dict[str, Any]:
url = f"{self.base_url.rstrip('/')}{endpoint}"
headers = self._get_headers()
if 'headers' in kwargs:
headers.update(kwargs['headers'])
kwargs['headers'] = headers
try:
response = requests.request(method, url, **kwargs)
response.raise_for_status()
return response.json()
except requests.exceptions.RequestException as e:
raise Exception(f"API request failed: {e}")
# Usage
client = MindzieAPIClient()
result = client.make_request('GET', '/api/Action/ping/authenticated')
C#/.NET
using System;
using System.Net.Http;
using System.Text.Json;
using System.Threading.Tasks;
public class MindzieApiClient
{
private readonly HttpClient _httpClient;
private readonly string _baseUrl;
private readonly string _tenantId;
private readonly string _projectId;
public MindzieApiClient(string baseUrl, string accessToken, string tenantId, string projectId)
{
_baseUrl = baseUrl.TrimEnd('/');
_tenantId = tenantId;
_projectId = projectId;
_httpClient = new HttpClient();
_httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {accessToken}");
_httpClient.DefaultRequestHeaders.Add("X-Tenant-Id", tenantId);
_httpClient.DefaultRequestHeaders.Add("X-Project-Id", projectId);
}
public async Task<T> GetAsync<T>(string endpoint)
{
var response = await _httpClient.GetAsync($"{_baseUrl}{endpoint}");
response.EnsureSuccessStatusCode();
var content = await response.Content.ReadAsStringAsync();
return JsonSerializer.Deserialize<T>(content);
}
public async Task<T> PostAsync<T>(string endpoint, object data)
{
var json = JsonSerializer.Serialize(data);
var content = new StringContent(json, System.Text.Encoding.UTF8, "application/json");
var response = await _httpClient.PostAsync($"{_baseUrl}{endpoint}", content);
response.EnsureSuccessStatusCode();
var responseContent = await response.Content.ReadAsStringAsync();
return JsonSerializer.Deserialize<T>(responseContent);
}
}
// Usage
var client = new MindzieApiClient(
Environment.GetEnvironmentVariable("MINDZIE_API_URL"),
Environment.GetEnvironmentVariable("MINDZIE_ACCESS_TOKEN"),
Environment.GetEnvironmentVariable("MINDZIE_TENANT_ID"),
Environment.GetEnvironmentVariable("MINDZIE_PROJECT_ID")
);
Foutafhandeling
Veelvoorkomende Authenticatiefouten
| Statuscode | Fout | Beschrijving | Oplossing |
|---|---|---|---|
401 |
Unauthorized | Ongeldig of ontbrekend toegangstoken | Controleer token en zorg dat deze niet verlopen is |
403 |
Forbidden | Geldige token, maar onvoldoende rechten | Controleer tenant/project toegang of vraag rechten aan |
400 |
Bad Request | Ontbrekende vereiste headers | Zorg dat X-Tenant-Id en X-Project-Id zijn meegegeven |
Voorbeeld Foutrespons
{
"error": "invalid_token",
"message": "The provided access token is invalid or expired",
"timestamp": "2024-01-15T10:30:00Z",
"requestId": "req_12345"
}
Volgende Stappen
Zodra authenticatie werkt, probeer de Quick Start Guide om uw eerste API-aanroepen te doen of verken de Response Formats documentatie.