HTTPS Edge Route SAML Module
Replace HTTPS Edge Route SAML Module
Request
PUT /edges/https/{edge_id}/routes/{id}/saml
Example Request
curl \
-X PUT \
-H "Authorization: Bearer {API_KEY}" \
-H "Content-Type: application/json" \
-H "Ngrok-Version: 2" \
-d '{"enabled":true,"idp_metadata":"\n\u003cEntityDescriptor xmlns=\"urn:oasis:names:tc:SAML:2.0:metadata\" validUntil=\"2020-09-14T12:53:23.691Z\" cacheDuration=\"PT1M\" entityID=\"http://127.0.0.1:12345/metadata\"\u003e\u003cIDPSSODescriptor xmlns=\"urn:oasis:names:tc:SAML:2.0:metadata\" protocolSupportEnumeration=\"urn:oasis:names:tc:SAML:2.0:protocol\"\u003e\u003cNameIDFormat\u003eurn:oasis:names:tc:SAML:2.0:nameid-format:transient\u003c/NameIDFormat\u003e\u003cSingleSignOnService Binding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\" Location=\"http://127.0.0.1:12345/sso\"\u003e\u003c/SingleSignOnService\u003e\u003cSingleSignOnService Binding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST\" Location=\"http://127.0.0.1:12345/sso\"\u003e\u003c/SingleSignOnService\u003e\u003c/IDPSSODescriptor\u003e\u003c/EntityDescriptor\u003e\n"}' \
https://api.ngrok.com/edges/https/edghts_2TMGJY7TKoSfmTpXzRFnUCCW9VF/routes/edghtsrt_2TMGJUPej4x1xp3fii7jEbNISxk/saml
Parameters
enabled | boolean | true if the module will be applied to traffic, false to disable. default true if unspecified |
options_passthrough | boolean | Do not enforce authentication on HTTP OPTIONS requests. necessary if you are supporting CORS. |
cookie_prefix | string | the prefix of the session cookie that ngrok sets on the http client to cache authentication. default is 'ngrok.' |
inactivity_timeout | uint32 | Integer number of seconds of inactivity after which if the user has not accessed the endpoint, their session will time out and they will be forced to reauthenticate. |
maximum_duration | uint32 | Integer number of seconds of the maximum duration of an authenticated session. After this period is exceeded, a user must reauthenticate. |
idp_metadata | string | The full XML IdP EntityDescriptor. Your IdP may provide this to you as a a file to download or as a URL. |
force_authn | boolean | If true, indicates that whenever we redirect a user to the IdP for authentication that the IdP must prompt the user for authentication credentials even if the user already has a valid session with the IdP. |
allow_idp_initiated | boolean | If true, the IdP may initiate a login directly (e.g. the user does not need to visit the endpoint first and then be redirected). The IdP should set the RelayState parameter to the target URL of the resource they want the user to be redirected to after the SAML login assertion has been processed. |
authorized_groups | List<string> | If present, only users who are a member of one of the listed groups may access the target endpoint. |
nameid_format | string | Defines the name identifier format the SP expects the IdP to use in its assertions to identify subjects. If unspecified, a default value of urn:oasis:names:tc:SAML:2.0:nameid-format:persistent will be used. A subset of the allowed values enumerated by the SAML specification are supported. |
Response
Returns a 200 response on success
Example Response
{
"enabled": true,
"options_passthrough": false,
"cookie_prefix": "",
"inactivity_timeout": 0,
"maximum_duration": 0,
"idp_metadata_url": "",
"idp_metadata": "\n\u003cEntityDescriptor xmlns=\"urn:oasis:names:tc:SAML:2.0:metadata\" validUntil=\"2020-09-14T12:53:23.691Z\" cacheDuration=\"PT1M\" entityID=\"http://127.0.0.1:12345/metadata\"\u003e\u003cIDPSSODescriptor xmlns=\"urn:oasis:names:tc:SAML:2.0:metadata\" protocolSupportEnumeration=\"urn:oasis:names:tc:SAML:2.0:protocol\"\u003e\u003cNameIDFormat\u003eurn:oasis:names:tc:SAML:2.0:nameid-format:transient\u003c/NameIDFormat\u003e\u003cSingleSignOnService Binding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\" Location=\"http://127.0.0.1:12345/sso\"\u003e\u003c/SingleSignOnService\u003e\u003cSingleSignOnService Binding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST\" Location=\"http://127.0.0.1:12345/sso\"\u003e\u003c/SingleSignOnService\u003e\u003c/IDPSSODescriptor\u003e\u003c/EntityDescriptor\u003e\n",
"force_authn": false,
"allow_idp_initiated": true,
"authorized_groups": [],
"entity_id": "https://idp.local-ngrok.com/saml/edghtsrt_2TMGJUPej4x1xp3fii7jEbNISxk",
"assertion_consumer_service_url": "https://idp.local-ngrok.com/saml/edghtsrt_2TMGJUPej4x1xp3fii7jEbNISxk/acs",
"single_logout_url": "https://idp.local-ngrok.com/saml/edghtsrt_2TMGJUPej4x1xp3fii7jEbNISxk/slo",
"request_signing_certificate_pem": "-----BEGIN CERTIFICATE-----\nMIIEAzCCAuugAwIBAgIQBkew96upe1vByURPp+wyyzANBgkqhkiG9w0BAQsFADCB\noDFOMEwGA1UECgxFaHR0cHM6Ly9pZHAubG9jYWwtbmdyb2suY29tL3NhbWwvZWRn\naHRzcnRfMlRNR0pVUGVqNHgxeHAzZmlpN2pFYk5JU3hrMU4wTAYDVQQDDEVodHRw\nczovL2lkcC5sb2NhbC1uZ3Jvay5jb20vc2FtbC9lZGdodHNydF8yVE1HSlVQZWo0\neDF4cDNmaWk3akViTklTeGswIBcNMjMwNzMxMjMxNzQ1WhgPMjA1ODA3MjIyMzE3\nNDVaMIGgMU4wTAYDVQQKDEVodHRwczovL2lkcC5sb2NhbC1uZ3Jvay5jb20vc2Ft\nbC9lZGdodHNydF8yVE1HSlVQZWo0eDF4cDNmaWk3akViTklTeGsxTjBMBgNVBAMM\nRWh0dHBzOi8vaWRwLmxvY2FsLW5ncm9rLmNvbS9zYW1sL2VkZ2h0c3J0XzJUTUdK\nVVBlajR4MXhwM2ZpaTdqRWJOSVN4azCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC\nAQoCggEBAKpCUa9mSl576C1o0Gd/V0B9ZVqnjQBPZ9/pTT4JVnVzdmwAbvClG8mb\nXGxCrEI12wm4p5YL7ImZmN1vJR5qAsSZCme8zREjyAvu5wf/uq2zSZJAq4+kH0s5\nvYmUz0joc02we0SCQ7btsF2lUh+73AzsJI/wjoMnBiYGTfbcaCADD19tN/lUfPth\nGegQ3ONxsBaralqoZCR58l0iHkd3AoQ+HqMKg2BP3QN/iN56IVsWsEt2E0NFLlON\nSpauNfWwlfW3Km+bVVvVjEEKOgmuIVLzSOO2uMJ4L7iWv0qtgmIHedeRL5n9m7Uj\nF5HcUZ+FHTE/DhyAOoX9tz2DW4HusxMCAwEAAaM1MDMwDgYDVR0PAQH/BAQDAgeA\nMBMGA1UdJQQMMAoGCCsGAQUFBwMBMAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQEL\nBQADggEBAGlrraemN2vMOaUUoVSc+Q/rjhZi6jYtTzZ9WN3mdWn6MPRnzNwgJCyO\npWCPLfHFWhgfQMdX4D9jwXh3Yotn/aXAK8K9VOclOJfw8UlI7O8M/Sle4TIlFQQP\n2ozWsSmWy7X6ElkMbjvhUyy+5icKYIg0SYjpqRURPh1P+Zr5IczlqQrFA/O5OuPe\nRUJmHwXkPw9NSfH/S6h0xZmm7TxwZLxecrf7rgmoliaENIGlT022a2IcS/isL4p+\nTAHapCQWKLD3fY+tXFDTorVzK+l+MmaQruka9ebPtSIG/AGG0veaQtUrG6bOJsXy\nRPTFh+dwZp5X3PFQl7J3H6ivWpFDcEo=\n-----END CERTIFICATE-----\n",
"metadata_url": "https://idp.local-ngrok.com/saml/edghtsrt_2TMGJUPej4x1xp3fii7jEbNISxk",
"nameid_format": "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"
}
Fields
enabled | boolean | true if the module will be applied to traffic, false to disable. default true if unspecified |
options_passthrough | boolean | Do not enforce authentication on HTTP OPTIONS requests. necessary if you are supporting CORS. |
cookie_prefix | string | the prefix of the session cookie that ngrok sets on the http client to cache authentication. default is 'ngrok.' |
inactivity_timeout | uint32 | Integer number of seconds of inactivity after which if the user has not accessed the endpoint, their session will time out and they will be forced to reauthenticate. |
maximum_duration | uint32 | Integer number of seconds of the maximum duration of an authenticated session. After this period is exceeded, a user must reauthenticate. |
idp_metadata | string | The full XML IdP EntityDescriptor. Your IdP may provide this to you as a a file to download or as a URL. |
force_authn | boolean | If true, indicates that whenever we redirect a user to the IdP for authentication that the IdP must prompt the user for authentication credentials even if the user already has a valid session with the IdP. |
allow_idp_initiated | boolean | If true, the IdP may initiate a login directly (e.g. the user does not need to visit the endpoint first and then be redirected). The IdP should set the RelayState parameter to the target URL of the resource they want the user to be redirected to after the SAML login assertion has been processed. |
authorized_groups | List<string> | If present, only users who are a member of one of the listed groups may access the target endpoint. |
entity_id | string | The SP Entity's unique ID. This always takes the form of a URL. In ngrok's implementation, this URL is the same as the metadata URL. This will need to be specified to the IdP as configuration. |
assertion_consumer_service_url | string | The public URL of the SP's Assertion Consumer Service. This is where the IdP will redirect to during an authentication flow. This will need to be specified to the IdP as configuration. |
single_logout_url | string | The public URL of the SP's Single Logout Service. This is where the IdP will redirect to during a single logout flow. This will optionally need to be specified to the IdP as configuration. |
request_signing_certificate_pem | string | PEM-encoded x.509 certificate of the key pair that is used to sign all SAML requests that the ngrok SP makes to the IdP. Many IdPs do not support request signing verification, but we highly recommend specifying this in the IdP's configuration if it is supported. |
metadata_url | string | A public URL where the SP's metadata is hosted. If an IdP supports dynamic configuration, this is the URL it can use to retrieve the SP metadata. |
nameid_format | string | Defines the name identifier format the SP expects the IdP to use in its assertions to identify subjects. If unspecified, a default value of urn:oasis:names:tc:SAML:2.0:nameid-format:persistent will be used. A subset of the allowed values enumerated by the SAML specification are supported. |
Get HTTPS Edge Route SAML Module
Request
GET /edges/https/{edge_id}/routes/{id}/saml
Example Request
curl \
-X GET \
-H "Authorization: Bearer {API_KEY}" \
-H "Ngrok-Version: 2" \
https://api.ngrok.com/edges/https/edghts_2TMGJY7TKoSfmTpXzRFnUCCW9VF/routes/edghtsrt_2TMGJUPej4x1xp3fii7jEbNISxk/saml
Response
Returns a 200 response on success
Example Response
{
"enabled": true,
"options_passthrough": false,
"cookie_prefix": "",
"inactivity_timeout": 0,
"maximum_duration": 0,
"idp_metadata_url": "",
"idp_metadata": "\n\u003cEntityDescriptor xmlns=\"urn:oasis:names:tc:SAML:2.0:metadata\" validUntil=\"2020-09-14T12:53:23.691Z\" cacheDuration=\"PT1M\" entityID=\"http://127.0.0.1:12345/metadata\"\u003e\u003cIDPSSODescriptor xmlns=\"urn:oasis:names:tc:SAML:2.0:metadata\" protocolSupportEnumeration=\"urn:oasis:names:tc:SAML:2.0:protocol\"\u003e\u003cNameIDFormat\u003eurn:oasis:names:tc:SAML:2.0:nameid-format:transient\u003c/NameIDFormat\u003e\u003cSingleSignOnService Binding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\" Location=\"http://127.0.0.1:12345/sso\"\u003e\u003c/SingleSignOnService\u003e\u003cSingleSignOnService Binding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST\" Location=\"http://127.0.0.1:12345/sso\"\u003e\u003c/SingleSignOnService\u003e\u003c/IDPSSODescriptor\u003e\u003c/EntityDescriptor\u003e\n",
"force_authn": false,
"allow_idp_initiated": true,
"authorized_groups": [],
"entity_id": "https://idp.local-ngrok.com/saml/edghtsrt_2TMGJUPej4x1xp3fii7jEbNISxk",
"assertion_consumer_service_url": "https://idp.local-ngrok.com/saml/edghtsrt_2TMGJUPej4x1xp3fii7jEbNISxk/acs",
"single_logout_url": "https://idp.local-ngrok.com/saml/edghtsrt_2TMGJUPej4x1xp3fii7jEbNISxk/slo",
"request_signing_certificate_pem": "-----BEGIN CERTIFICATE-----\nMIIEAzCCAuugAwIBAgIQBkew96upe1vByURPp+wyyzANBgkqhkiG9w0BAQsFADCB\noDFOMEwGA1UECgxFaHR0cHM6Ly9pZHAubG9jYWwtbmdyb2suY29tL3NhbWwvZWRn\naHRzcnRfMlRNR0pVUGVqNHgxeHAzZmlpN2pFYk5JU3hrMU4wTAYDVQQDDEVodHRw\nczovL2lkcC5sb2NhbC1uZ3Jvay5jb20vc2FtbC9lZGdodHNydF8yVE1HSlVQZWo0\neDF4cDNmaWk3akViTklTeGswIBcNMjMwNzMxMjMxNzQ1WhgPMjA1ODA3MjIyMzE3\nNDVaMIGgMU4wTAYDVQQKDEVodHRwczovL2lkcC5sb2NhbC1uZ3Jvay5jb20vc2Ft\nbC9lZGdodHNydF8yVE1HSlVQZWo0eDF4cDNmaWk3akViTklTeGsxTjBMBgNVBAMM\nRWh0dHBzOi8vaWRwLmxvY2FsLW5ncm9rLmNvbS9zYW1sL2VkZ2h0c3J0XzJUTUdK\nVVBlajR4MXhwM2ZpaTdqRWJOSVN4azCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC\nAQoCggEBAKpCUa9mSl576C1o0Gd/V0B9ZVqnjQBPZ9/pTT4JVnVzdmwAbvClG8mb\nXGxCrEI12wm4p5YL7ImZmN1vJR5qAsSZCme8zREjyAvu5wf/uq2zSZJAq4+kH0s5\nvYmUz0joc02we0SCQ7btsF2lUh+73AzsJI/wjoMnBiYGTfbcaCADD19tN/lUfPth\nGegQ3ONxsBaralqoZCR58l0iHkd3AoQ+HqMKg2BP3QN/iN56IVsWsEt2E0NFLlON\nSpauNfWwlfW3Km+bVVvVjEEKOgmuIVLzSOO2uMJ4L7iWv0qtgmIHedeRL5n9m7Uj\nF5HcUZ+FHTE/DhyAOoX9tz2DW4HusxMCAwEAAaM1MDMwDgYDVR0PAQH/BAQDAgeA\nMBMGA1UdJQQMMAoGCCsGAQUFBwMBMAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQEL\nBQADggEBAGlrraemN2vMOaUUoVSc+Q/rjhZi6jYtTzZ9WN3mdWn6MPRnzNwgJCyO\npWCPLfHFWhgfQMdX4D9jwXh3Yotn/aXAK8K9VOclOJfw8UlI7O8M/Sle4TIlFQQP\n2ozWsSmWy7X6ElkMbjvhUyy+5icKYIg0SYjpqRURPh1P+Zr5IczlqQrFA/O5OuPe\nRUJmHwXkPw9NSfH/S6h0xZmm7TxwZLxecrf7rgmoliaENIGlT022a2IcS/isL4p+\nTAHapCQWKLD3fY+tXFDTorVzK+l+MmaQruka9ebPtSIG/AGG0veaQtUrG6bOJsXy\nRPTFh+dwZp5X3PFQl7J3H6ivWpFDcEo=\n-----END CERTIFICATE-----\n",
"metadata_url": "https://idp.local-ngrok.com/saml/edghtsrt_2TMGJUPej4x1xp3fii7jEbNISxk",
"nameid_format": "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"
}
Fields
enabled | boolean | true if the module will be applied to traffic, false to disable. default true if unspecified |
options_passthrough | boolean | Do not enforce authentication on HTTP OPTIONS requests. necessary if you are supporting CORS. |
cookie_prefix | string | the prefix of the session cookie that ngrok sets on the http client to cache authentication. default is 'ngrok.' |
inactivity_timeout | uint32 | Integer number of seconds of inactivity after which if the user has not accessed the endpoint, their session will time out and they will be forced to reauthenticate. |
maximum_duration | uint32 | Integer number of seconds of the maximum duration of an authenticated session. After this period is exceeded, a user must reauthenticate. |
idp_metadata | string | The full XML IdP EntityDescriptor. Your IdP may provide this to you as a a file to download or as a URL. |
force_authn | boolean | If true, indicates that whenever we redirect a user to the IdP for authentication that the IdP must prompt the user for authentication credentials even if the user already has a valid session with the IdP. |
allow_idp_initiated | boolean | If true, the IdP may initiate a login directly (e.g. the user does not need to visit the endpoint first and then be redirected). The IdP should set the RelayState parameter to the target URL of the resource they want the user to be redirected to after the SAML login assertion has been processed. |
authorized_groups | List<string> | If present, only users who are a member of one of the listed groups may access the target endpoint. |
entity_id | string | The SP Entity's unique ID. This always takes the form of a URL. In ngrok's implementation, this URL is the same as the metadata URL. This will need to be specified to the IdP as configuration. |
assertion_consumer_service_url | string | The public URL of the SP's Assertion Consumer Service. This is where the IdP will redirect to during an authentication flow. This will need to be specified to the IdP as configuration. |
single_logout_url | string | The public URL of the SP's Single Logout Service. This is where the IdP will redirect to during a single logout flow. This will optionally need to be specified to the IdP as configuration. |
request_signing_certificate_pem | string | PEM-encoded x.509 certificate of the key pair that is used to sign all SAML requests that the ngrok SP makes to the IdP. Many IdPs do not support request signing verification, but we highly recommend specifying this in the IdP's configuration if it is supported. |
metadata_url | string | A public URL where the SP's metadata is hosted. If an IdP supports dynamic configuration, this is the URL it can use to retrieve the SP metadata. |
nameid_format | string | Defines the name identifier format the SP expects the IdP to use in its assertions to identify subjects. If unspecified, a default value of urn:oasis:names:tc:SAML:2.0:nameid-format:persistent will be used. A subset of the allowed values enumerated by the SAML specification are supported. |
Delete HTTPS Edge Route SAML Module
Request
DELETE /edges/https/{edge_id}/routes/{id}/saml
Example Request
curl \
-X DELETE \
-H "Authorization: Bearer {API_KEY}" \
-H "Ngrok-Version: 2" \
https://api.ngrok.com/edges/https/edghts_2TMGJY7TKoSfmTpXzRFnUCCW9VF/routes/edghtsrt_2TMGJUPej4x1xp3fii7jEbNISxk/saml
Response
Returns a 204 response with no body on success