Reference
Configuration and authentication
Understand DS Plane landscape storage, JWT handling, configuration paths, and authentication fallback behavior.
DS Plane stores non-secret landscape configuration in a platform-specific configuration directory. It prefers your operating system’s credential service for JWTs.
Configuration directories
| Platform | Directory |
|---|---|
| Linux and macOS | $XDG_CONFIG_HOME/dsplane |
| Unix fallback | ~/.config/dsplane |
| Windows | %APPDATA%\dsplane |
On Linux and macOS, XDG_CONFIG_HOME must be an absolute path. DS Plane ignores a relative value and uses ~/.config instead.
The directory can contain:
| File | Purpose |
|---|---|
landscape-config.json |
Normalized landscape URLs and explicitly approved plaintext JWTs. |
devspaces.json |
Per-Dev Space prompts and local connection preferences. |
user.json |
Local user metadata used by the CLI. |
Landscape URL normalization
DS Plane accepts HTTP and HTTPS landscape URLs. It stores only the origin:
https://example.applicationstudio.cloud.sap/
Paths, query strings, and fragments are removed. Other URL schemes are rejected.
Browser authentication
When you confirm browser login, DS Plane opens:
<landscape-origin>/ext-login.html
The landscape posts the JWT to:
http://127.0.0.1:55532/ext-login
The callback listener closes after receiving a token, timing out, or cancelling the login attempt. The timeout is 180 seconds.
Manual JWT entry
If the browser does not return a token, DS Plane displays the landscape’s /jwt URL. Open it in an authenticated browser, copy the token, and paste it into the TUI.
Credential persistence
DS Plane uses Bun’s system secrets API with the service name:
com.github.danielnappa.dsplane
The landscape origin is the credential name.
If no system credential backend is available, DS Plane offers two choices:
- Save the JWT in
landscape-config.jsonwith file mode0600where supported. - Keep the JWT in memory for the current process only.
Saved-token behavior
DS Plane reuses a saved JWT only when it passes local validity checks. An absent, malformed, or expired token returns you to the authentication prompt.
Deleting a landscape removes its session token, stored credential, and landscape entry.