Authentifizierung
Die neuroflash API verwendet OAuth2 Client Credentials zur Authentifizierung, bereitgestellt durch Zitadel. Sie tauschen eine Client-ID und ein Secret gegen einen Access Token ein und fügen diesen Token dann in alle API-Anfragen ein.
Anmeldedaten erhalten
- Melden Sie sich in der neuroflash App an
- Erstellen Sie einen neuen Service Account
- Kopieren Sie die
client_idund dasclient_secret
Bewahren Sie Ihre Anmeldedaten sicher auf. Committen Sie diese niemals in die Versionskontrolle und legen Sie sie nicht in clientseitigem Code offen.
Access Token anfordern
Tauschen Sie Ihre Anmeldedaten gegen einen Access Token ein, indem Sie eine POST-Anfrage an den Zitadel-Token-Endpoint senden:
POST https://id.neuroflash.com/oauth/v2/token
- cURL
- Python
- Node.js
- Go
curl -X POST https://id.neuroflash.com/oauth/v2/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials" \
-d "client_id=YOUR_CLIENT_ID" \
-d "client_secret=YOUR_CLIENT_SECRET" \
-d "scope=openid"
import requests
response = requests.post(
"https://id.neuroflash.com/oauth/v2/token",
data={
"grant_type": "client_credentials",
"client_id": "YOUR_CLIENT_ID",
"client_secret": "YOUR_CLIENT_SECRET",
"scope": "openid",
},
)
token = response.json()["access_token"]
print(f"Access token: {token}")
const response = await fetch("https://id.neuroflash.com/oauth/v2/token", {
method: "POST",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
body: new URLSearchParams({
grant_type: "client_credentials",
client_id: "YOUR_CLIENT_ID",
client_secret: "YOUR_CLIENT_SECRET",
scope: "openid",
}),
});
const { access_token } = await response.json();
console.log(`Access token: ${access_token}`);
package main
import (
"encoding/json"
"fmt"
"net/http"
"net/url"
"strings"
)
func main() {
data := url.Values{
"grant_type": {"client_credentials"},
"client_id": {"YOUR_CLIENT_ID"},
"client_secret": {"YOUR_CLIENT_SECRET"},
"scope": {"openid"},
}
resp, _ := http.Post(
"https://id.neuroflash.com/oauth/v2/token",
"application/x-www-form-urlencoded",
strings.NewReader(data.Encode()),
)
defer resp.Body.Close()
var result struct {
AccessToken string `json:"access_token"`
}
json.NewDecoder(resp.Body).Decode(&result)
fmt.Printf("Access token: %s\n", result.AccessToken)
}
Token-Antwort
{
"access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "Bearer",
"expires_in": 14399
}
| Feld | Beschreibung |
|---|---|
access_token | Der Bearer Token, der in API-Anfragen eingefügt wird |
token_type | Immer Bearer |
expires_in | Gültigkeitsdauer des Tokens in Sekunden (ungefähr 4 Stunden) |
Token verwenden
Fügen Sie den Access Token im Authorization-Header jeder API-Anfrage ein:
- cURL
- Python
- Node.js
- Go
curl https://app.neuroflash.com/api/digital-twin-service/v1/static-groups \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
import requests
headers = {"Authorization": f"Bearer {token}"}
response = requests.get(
"https://app.neuroflash.com/api/digital-twin-service/v1/static-groups",
headers=headers,
)
print(response.json())
const response = await fetch(
"https://app.neuroflash.com/api/digital-twin-service/v1/static-groups",
{
headers: { Authorization: `Bearer ${access_token}` },
}
);
const data = await response.json();
console.log(data);
req, _ := http.NewRequest("GET",
"https://app.neuroflash.com/api/digital-twin-service/v1/static-groups", nil)
req.Header.Set("Authorization", "Bearer "+token)
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
var data any
json.NewDecoder(resp.Body).Decode(&data)
fmt.Println(data)
Token-Ablauf
Access Tokens laufen nach ungefähr 4 Stunden ab (expires_in: 14399 Sekunden). Wenn Ihr Token abläuft, gibt die API eine 401 Unauthorized-Antwort zurück. Fordern Sie einen neuen Token mit demselben Client-Credentials-Flow an.
Cachen Sie Ihren Access Token und verwenden Sie ihn wieder, bis er abläuft. Es ist nicht notwendig, für jeden API-Aufruf einen neuen Token anzufordern.
Scopes
Der erforderliche Scope für die neuroflash API lautet:
openid
Dieser Scope gewährt Zugriff auf alle neuroflash API-Services, für die Ihr Service Account bereitgestellt wurde.