I came across this approach and I would appreciate it if someone can test it as I am unable to at the moment.
GOAL:
- Enable Kerberos (SPNEGO) in Ignition for user authentication
- Use Kerberos tickets to authenticate REST API requests (e.g., using
curl
, PowerShell, or a browser)
Step 1: Prerequisites
Make sure that:
- Ignition is installed and running on the domain-joined Windows machine.
- The domain controller has DNS and reverse DNS entries for your Ignition server.
- You have admin access to Ignition and the Windows server.
- A Service Principal Name (SPN) is created for the Ignition server.
- Kerberos keytab is available or can be created.
Step 2: Create an SPN and Keytab
On the domain controller, open PowerShell as Administrator and run:
powershell:
setspn -A HTTP/ignition-hostname.domain.com DOMAIN\IgnitionServiceAccount
- Replace:
ignition-hostname.domain.com
= FQDN of your Ignition serverDOMAIN\\IgnitionServiceAccount
= the AD account running Ignition Gateway
Then, generate a keytab file:
powershell:
ktpass -princ HTTP/ignition-hostname.domain.com@DOMAIN.COM -mapuser DOMAIN\IgnitionServiceAccount -pass YourPasswordHere -out C:\path\to\http.keytab -ptype KRB5_NT_PRINCIPAL -crypto AES256-SHA1
Place
http.keytab
somewhere accessible by the Ignition Gateway service.
Step 3: Configure Identity Provider in Ignition
- Open Ignition Gateway in browser → Go to Config > Security > Identity Providers
- Click Create New Identity Provider
- Choose Web Browser SSO
- Set up the provider:
- Provider Name:
KerberosSSO
- Login Type:
SSO Only
- Kerberos Realm:
DOMAIN.COM
- KDC Hostname:
your-domain-controller.domain.com
- SPN:
HTTP/ignition-hostname.domain.com
- Keytab File Path:
C:\\path\\to\\http.keytab
- Save
Ensure the Ignition service has read access to the
.keytab
.
Step 4: Set Up Security Levels (Optional but Recommended)
- Go to Config > Security > Security Levels
- Create a mapping to assign authenticated users to roles or levels
- Map domain groups or usernames to appropriate roles
Step 5: Enable Authentication for REST API Access
- Go to Config > Gateway Settings
- Under HTTP Settings:
Check “Enable Authentication for Web Services”
- Choose “Identity Provider” under Session Validation
- Select your Kerberos IdP (e.g.,
KerberosSSO
) - Save changes
Step 6: Test REST API with Kerberos Ticket
-Using curl
from a domain-joined machine:
bash
curl --negotiate -u : -X GET https://ignition-hostname.domain.com:8088/system/gwinfo
* `--negotiate`: Tells `curl` to use SPNEGO/Kerberos
* `-u :` → sends ticket without prompting for username
* Must be run from a user **logged in with a valid Kerberos ticket**
To confirm ticket:
bash
klist
Optional: Test via Browser or Postman
* Modern browsers (like Chrome or Edge) support SPNEGO automatically if the Ignition FQDN is in the **intranet zone**
* Postman **does not** support Kerberos/SPNEGO natively — use `curl` or a tool like **httpie** or **custom code** (e.g., Python `requests_kerberos`)
---
## 🛠 Troubleshooting Tips
|**Problem**|**Solution**|
| -------------- | -------------- |
|❌ `401 Unauthorized`|Check SPN, keytab, realm spelling|
|❌ `KRB5KDC_ERR_S_PRINCIPAL_UNKNOWN`|SPN not registered or mismatch|
|❌ `KDC not reachable`|Wrong KDC hostname or firewall issue|
|❌ Ticket expired|Run `kinit` again or re-login|
|🔒 Keytab permission error|Ensure Ignition has read access|
Would this work and enable kerberos in Ignition?