content/operate/rs/references/rest-api/requests/cluster/sso.md
| Method | Path | Description |
|---|---|---|
| GET | /v1/cluster/sso | Get SSO configuration |
| PUT | /v1/cluster/sso | Set or update SSO configuration |
| DELETE | /v1/cluster/sso | Clear SSO configuration |
| GET | /v1/cluster/sso/saml/metadata/sp | Get SAML service provider metadata |
| POST | /v1/cluster/sso/saml/metadata/idp | Upload SAML identity provider metadata |
GET /v1/cluster/sso
Get the single sign-on configuration as JSON.
| Permission name | Roles |
|---|---|
| [view_sso]({{< relref "/operate/rs/references/rest-api/permissions#view_sso" >}}) | admin |
| user_manager |
GET /v1/cluster/sso
| Key | Value | Description |
|---|---|---|
| Host | cnm.cluster.fqdn | Domain name |
| Accept | application/json | Accepted media type |
Returns an [SSO object]({{< relref "/operate/rs/references/rest-api/objects/sso" >}}).
{
"control_plane": true,
"protocol": "saml2",
"enforce_control_plane": false,
"issuer": {
"id": "urn:sso:example:idp",
"login_url": "https://idp.example.com/sso/saml",
"logout_url": "https://idp.example.com/sso/slo",
"metadata": "<base64 encoded metadata>"
},
"service": {
"address": "https://hostname:port",
"saml2": {
"entity_id": "https://cnm.cluster.fqdn/sp",
"acs_url": "https://cnm.cluster.fqdn/v1/cluster/sso/saml/acs",
"slo_url": "https://cnm.cluster.fqdn/v1/cluster/sso/saml/slo"
}
}
}
| Code | Description |
|---|---|
| 200 OK | Success |
PUT /v1/cluster/sso
Set or update the cluster single sign-on configuration.
| Permission name | Roles |
|---|---|
| [config_sso]({{< relref "/operate/rs/references/rest-api/permissions#config_sso" >}}) | admin |
| user_manager |
PUT /v1/cluster/sso
{
"control_plane": false,
"protocol": "saml2",
"enforce_control_plane": false,
"issuer": {
"id": "urn:sso:example:idp",
"login_url": "https://idp.example.com/sso/saml",
"logout_url": "https://idp.example.com/sso/slo"
},
"service": {
"address": "https://hostname:port"
}
}
| Key | Value | Description |
|---|---|---|
| Host | cnm.cluster.fqdn | Domain name |
| Accept | application/json | Accepted media type |
Include an [SSO object]({{< relref "/operate/rs/references/rest-api/objects/sso" >}}) with updated fields in the request body.
Returns a status code. If an error occurs, the response body can include an error code and message with more details.
Possible error_code values:
| Code | Description |
|---|---|
| missing_param | A required parameter is missing while SSO is being enabled |
| missing_certificate | SSO certificate is not found while SSO is being enabled |
| Code | Description |
|---|---|
| 200 OK | Success, SSO config has been set |
| 400 Bad Request | Bad or missing configuration parameters |
| 406 Not Acceptable | Missing required certificate |
DELETE /v1/cluster/sso
Clear the single sign-on configuration.
| Permission name | Roles |
|---|---|
| [config_sso]({{< relref "/operate/rs/references/rest-api/permissions#config_sso" >}}) | admin |
| user_manager |
DELETE /v1/cluster/sso
| Key | Value | Description |
|---|---|---|
| Host | cnm.cluster.fqdn | Domain name |
| Accept | application/json | Accepted media type |
Returns a status code.
Possible error_code values:
| Code | Description |
|---|---|
| delete_certificate_error | An error occurred during SSO certificate deletion |
| Code | Description |
|---|---|
| 200 OK | Success |
| 500 Internal Server Error | Error during deletion |
GET /v1/cluster/sso/saml/metadata/sp
Generates and returns the SAML2 service provider metadata XML.
| Permission name | Roles |
|---|---|
| [view_sso]({{< relref "/operate/rs/references/rest-api/permissions#view_sso" >}}) | admin |
| user_manager |
GET /v1/cluster/sso/saml/metadata/sp
| Key | Value | Description |
|---|---|---|
| Host | cnm.cluster.fqdn | Domain name |
| Accept | application/samlmetadata+xml | Accepted media type |
Returns SAML2 service provider metadata as XML.
<?xml version="1.0" encoding="UTF-8"?>
<md:EntityDescriptor
xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata">
...
</md:EntityDescriptor>
Possible error_code values:
| Code | Description |
|---|---|
| missing_certificate | Service certificate is missing |
| saml_metadata_generation_error | An error occurred while generating the XML metadata |
| Code | Description |
|---|---|
| 200 OK | Success |
| 406 Not Acceptable | Missing required service certificate |
| 500 Internal Server Error | Unexpected error when generating metadata |
POST /v1/cluster/sso/saml/metadata/idp
Uploads and validates the SAML2 identity provider metadata XML.
| Permission name | Roles |
|---|---|
| [config_sso]({{< relref "/operate/rs/references/rest-api/permissions#config_sso" >}}) | admin |
| user_manager |
POST /v1/cluster/sso/saml/metadata/idp
{
"idp_metadata": "YWp3cjkwcHR1eWF3MHJ0eTkwYXc0eXQwOW4..."
}
| Key | Value | Description |
|---|---|---|
| Host | cnm.cluster.fqdn | Domain name |
| Accept | application/json | Accepted media type |
| Name | Type/Value | Description |
|---|---|---|
| idp_metadata | string | Base64-encoded SAML2 identity provider metadata XML |
Returns an [SSO object]({{< relref "/operate/rs/references/rest-api/objects/sso" >}}) with the updated configuration.
{
"control_plane": true,
"protocol": "saml2",
"enforce_control_plane": false,
"issuer": {
"id": "urn:sso:example:idp",
"login_url": "https://idp.example.com/sso/saml",
"logout_url": "https://idp.example.com/sso/slo"
},
"service": {
"saml2": {
"entity_id": "https://cnm.cluster.fqdn/sp",
"acs_url": "https://cnm.cluster.fqdn/v1/cluster/sso/saml/acs",
"slo_url": "https://cnm.cluster.fqdn/v1/cluster/sso/saml/slo"
}
}
}
Possible error_code values:
| Code | Description |
|---|---|
| saml_metadata_validation_error | IdP metadata failed configuration validation checks |
| saml_metadata_parsing_error | IdP metadata is not a valid base64-encoded XML |
| missing_certificate | SSO certificate is not found while SSO is being enabled |
| Code | Description |
|---|---|
| 200 OK | Success |
| 400 Bad Request | Bad or missing parameters |
| 406 Not Acceptable | Missing required service certificate |