102 lines
2.4 KiB
Markdown
102 lines
2.4 KiB
Markdown
# Bruno: Session zur i-doit aufbauen
|
||
|
||
In Bruno bekommst du eine "Session" über eine Kombination aus **Environment-Variablen** und dem **API-Key-Login von i-doit**. i-doit selbst nutzt keine klassischen Cookie-Sessions für die JSON-RPC-API, sondern authentifiziert jeden Request per Header – der "Session-Charakter" kommt also über gespeicherte Variablen, die alle Requests teilen.
|
||
|
||
## 1. Environment anlegen
|
||
|
||
Anlegen eines Environment `demo-idoit` mit:
|
||
|
||
```
|
||
base_url: https://demo.i-doit.com/src/jsonrpc.php
|
||
apikey: c1ia5q
|
||
username: admin
|
||
password: admin
|
||
```
|
||
|
||

|
||
|
||

|
||
|
||
|
||
## 2. Login-Request (holt die Session-ID)
|
||
|
||
i-doit unterstützt eine echte Session über `idoit.login`. Der Response liefert einen `X-RPC-Auth-Session`-Header, den du für Folge-Requests wiederverwendest.
|
||
|
||
**POST** `{{base_url}}`
|
||
|
||
Headers:
|
||
|
||
```
|
||
Content-Type: application/json
|
||
X-RPC-Auth-Username: {{username}}
|
||
X-RPC-Auth-Password: {{password}}
|
||
```
|
||
|
||

|
||
|
||
|
||
Body (JSON):
|
||
|
||
```json
|
||
{
|
||
"version": "2.0",
|
||
"method": "idoit.login",
|
||
"params": { "apikey": "{{apikey}}" },
|
||
"id": 1
|
||
}
|
||
```
|
||
|
||
Im **Script → Post Response** die Session-ID in eine Variable schreiben:
|
||
|
||
```javascript
|
||
bru.setEnvVar("session_id", res.getHeader("x-rpc-auth-session"));
|
||
```
|
||
|
||
## 3. Folge-Requests mit der Session
|
||
|
||
Alle weiteren Requests nutzen dann statt Username/Passwort nur noch:
|
||
|
||
```
|
||
Content-Type: application/json
|
||
X-RPC-Auth-Session: {{session_id}}
|
||
```
|
||
|
||
Body z. B. für eine Objektabfrage:
|
||
|
||
```json
|
||
{
|
||
"version": "2.0",
|
||
"method": "cmdb.objects.read",
|
||
"params": { "apikey": "{{apikey}}", "filter": { "type": 5 } },
|
||
"id": 1
|
||
}
|
||
```
|
||
|
||
## 4. Logout (optional)
|
||
|
||
```json
|
||
{ "version": "2.0", "method": "idoit.logout", "params": { "apikey": "{{apikey}}" }, "id": 1 }
|
||
```
|
||
|
||
mit Header `X-RPC-Auth-Session: {{session_id}}`.
|
||
|
||
---
|
||
|
||
**Kernpunkt:** Die Session-ID aus dem Login-Response wird per Post-Response-Script als Environment-Variable gespeichert und von allen Requests im selben Environment geteilt. Damit sparst du dir den Login-Roundtrip pro Abfrage und hast quasi eine durchgehende Session.
|
||
|
||
|
||
#############
|
||
|
||
# Stolperstein
|
||
|
||
Während der Arbeiten an Bruno ( zu Hause ) bin ich über folgendes Problem gestolpert.
|
||
Nach dem holen der Session-ID kam immer ein 500er-Fehler. Das lag daran das ich
|
||
1. die ID geholt habe
|
||
2. Bruno wohl die Cookies speichert
|
||
|
||
Die Cookies kann man in Bruno über die folgenden Punkte ausschalten:
|
||
1. 
|
||
2. 
|
||
|
||
|