SAML Single Sign-On

SAML Single Sign-On

This functionality is Live and ready to use in production.

SAML Single Sign-On (SSO) allows enterprise merchant users to access the TableCheck Manager in-restaurant application using their existing corporate login session. This uses the SAML 2.0 (Security Assertion Markup Language) authentication mechanism, without requiring an additional password. This is also referred to as a “Federated Login”.

Important: SAML SSO for merchants should not be confused with TableCheck Booking Page SSO for diners. For the latter, please refer to the Web Booking v1 API.

Target Audience

SAML Single Sign-On is recommended for use by large enterprises such as hotel brands who have a corporate network environment.

The below is a partial list of authentication systems which can support SAML 2.0:

  • Active Directory Federation Services (ADFS)

  • Auth0

  • Azure Active Directory

  • Bitium

  • Centrify

  • Duo Security

  • Entrust

  • Google Workspace (formerly G Suite)

  • F5 Big-IP

  • Okta

  • OneLogin

  • PortalGuard

  • SecureAuth

  • Zoho

Implementation Guide

Core Concepts

In a SAML 2.0 authentication flow:

  • Your authentication service acts as the Identity Provider (“IdP”). It provides trusted information about the user’s identity.

  • TableCheck acts as the Service Provider (“SP”). We are the service which the user wishes to access.

  • When your user accesses the TableCheck Manager via the web, TableCheck communicates with your IdP system using SAML to verify the user’s identity. Specifically we require their email address, which is used as the login username in our system.

  • All SAML requests a digitally signed, meaning that we as the SP can trust the user is who your IdP says he/she is and securely log them into our system.

Implementation Workflow

Step 1. Prepare your IdP Service and IdP Metadata XML

Please generate a SAML IdP Metadata XML file using your Authentication Service. Kindly refer to your Authentication Service Provider’s documentation regarding specific configurations.

IdP Service Configuration

Please ensure that your IdP service is configured as follows:

  • Your SAML IdP endpoints (SingleSignOnService, etc.) must use HTTPS.

  • Your SAML IdP system must have “signing” enabled on messages.

  • We prefer for your SAML IdP system disable “encryption”. If your policy requires it, please ensure it is possible to disable during testing in order to facilitate troubleshooting.

IdP Metadata XML Format

Your IdP Metadata XML MUST include the elements as specified in the below table. Please check each item carefully. Please refer to Appendix I for sample IdP metadata file. Note that the namespaces ds: and md: may vary depending on your file. Please inform us if your authentication provider does not allow you to meet any specific requirement below.

XML Element

Required?

Meaning

XML Element

Required?

Meaning

<ds:Signature>

Yes

The digital signature of the metadata file.

<md:IDPSSODescriptor>

Yes

Indicates that this is an IdP metadata file.

<md:KeyDescriptor use="encryption">

Do not want

We prefer to disable encryption, so this element should not be present in your SAML.

<md:KeyDescriptor use="signing">

Yes

Your public key used to verify digitally-signed SAML messages.

<md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</md:NameIDFormat>

Yes

We prefer that you use that you use NameIDFormat as emailAddress, however, other values are also possible (see below.) We also require that the corresponding <NameID> element is present your IdP Assertion message.

<md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="..."/>

Yes

The URL of your single sign-on service. We prefer to use HTTP-Redirect binding but can also support HTTP-POST. If both bindings are specified we will use HTTP-Redirect. Note we do not support Shibboleth protocol or other non-SAML protocols.

<md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="..."/>

No

The URL of your single logout service. Optional but recommended. As per above we prefer HTTP-Redirect binding.

Step 2. Determine your NameIDFormat value in your IdP Metadata XML

In order to login via SAML, TableCheck matches the NameID (user ID) in your IdP Assertion with the user IDs in TableCheck system. Your NameIDFormat specified in your IdP Metadata XML specifies what value you send TableCheck as the user ID (e.g. email, employee ID, etc.) TableCheck typically uses email addresses as our identifier for our user accounts.

We can support several patterns of NameIDFormat. Please read the below carefully to determine which is appropriate for your use case.

Pattern A: Use NameIDFormat “emailAddress” (preferred)

If you all your users have a standardized email address, please set NameIDFormat as urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress in your IdP Metadata XML. We will directly match the email in your SAML to TableCheck user accounts (case-insensitive.)

Pattern B: Use an employee ID and create dummy email accounts in TableCheck

If your users do not have a standardized email address, and you use an alternative identifier such as an employee ID, we recommend to setup TableCheck user accounts with “dummy” email addresses. For example, if your employee’s ID is ABC123, we would create a TableCheck user account as abc123@your-company.com. (Such user accounts do not need to have a real-world email inbox.)

In order to use this pattern:

  • Your IDs must be case-insensitive. For example, ABC123 and abc123 are considered the same ID.

  • Your IDs must never contain the @ character, as it would be confused with an email address.

  • Your ID should be unique for each employee (though not a hard requirement.)

  • You should include the employee’s email (if available) in your IdP Assertion as an Email SAML attribute.

If your wish to use this pattern, please set NameIDFormat in your IdP Metadata XML as one of the following values:

  • urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified

  • urn:oasis:names:tc:SAML:2.0:nameid-format:persistent

Lastly, it is possible to use both employee IDs and real email addresses on a per-user basis, however, please discuss with TableCheck’s API team first.

Pattern C: Other NameIDFormat or Attribute

If neither Pattern A nor B satisfies your requirements, please discuss with TableCheck’s API team. Kindly note that we cannot support temporary or single-use login IDs (e.g. urn:oasis:names:tc:SAML:2.0:nameid-format:transient)

Step 3. (Recommended) Prepare an IdP Metadata Web Service

Please prepare an HTTPS URL endpoint at which we may retrieve your latest IdP Metadata in XML format via a GET request. This helps to facilitate key rotation.

  • The URL should return your live IdP Metadata XML, reflecting any changes (config, key additions, etc.) made on your end in real-time.

  • The Content-Type response header must be application/xml, and the response body should contain only your IdP Metadata without additional items.

  • The endpoint should be publicly accessible, i.e. without authentication required.

  • Please provide separate endpoints for Production and Staging/QA/UAT environments, if applicable.

  • We will poll the endpoint for changes once per hour.

Please discuss with our team if you are unable to provide such an endpoint.

Step 4. Raise a request to TableCheck

Please send a mail to api@tablecheck with subject “<Your Company> SAML Integration Request”. Please include the following item:

  1. Your IdP Metadata XML.

    • Can be either as either a URL endpoint (recommended) or XML file.

    • Please include separate items for both Production and Staging/QA/UAT environments, if applicable.

    • If you are unable to provide a URL endpoint, please provide an email address at which we may notify when new signing certificates are issued.

  2. Your NameIDFormat and an explanation of we can match your user IDs to TableCheck user accounts (see above.)

  3. An explanation of your IdP certificate rotation methodology.

    • Refer to “Certificate Expiry and Rotation” section below.

  4. Your requirements for the SP digital signing certificates used by TableCheck, if any

    • Please check if your policy requires use of a specific certificate authority (e.g. in-house).

    • If not specified, we will use self-signed SP certificates.

  5. A list of email domains to whitelist for SAML access.

    • Please list an any subdomains explicitly.

    • Example: @your-company.com, @sub.your-company.com, @other.domain.com

  6. A list of emails (or user IDs) to create test user accounts for both Staging/QA/UAT and Production certification testing.

* Items 5 and 6 above may be provided during certification testing.

Step 5. TableCheck configures your SAML Integration

Upon receipt of Step 3, the TableCheck API Team will take approximately 5 business days to configure your SAML Metadata. If any issues are found with respect to the above requirements, we will ask you to re-submit your file and the process will be delayed.

When configuration is complete, we will reply by email with:

  • The list of test user accounts we have added in the TableCheck system.

  • Our SP Metadata URL.

Step 6. Upload and configure TableCheck’s SP Metadata in your system

Our SP Metadata is accessible via HTTPS endpoints resembling the below URLs. Our SP Metadata will be digitally signed as instructed in Step 3.

  • https://id.app.tablecheck.com/sso/saml/<your company>/metadata/sp
    Our SP Metadata XML specific to your SAML integration. Please use this to configure your SAML integration with us. Please also poll this endpoint regularly (i.e. once per hour) for any changes to keys.

  • https://id.app.tablecheck.com/sso/saml/<your company>/metadata/idp
    Our cache of your IdP Metadata XML. Useful for troubleshooting.

Please configure your authentication system to automatically poll these URLs for changes at a 1 hour interval. If this is not possible, you must manually copy the SP Metadata into your system.

Step 7. Certification Testing and Go-Live

Upon your acceptance of our SP Metadata in Step 5, we will schedule certification testing in both Staging and Production environments. As our system allows fully dynamic configuration, we prefer to coordinate testing both Staging and Production in the same session, if permitted by your Change Policy.

Upon successful Go-Live, we will send a Certification Sign-off email and will ask your reply on the same. Following Go-live, our Implementation Team will coordinate with your end-user venues and properties to activate SAML integration for their TableCheck user accounts.

Certificate Expiry and Rotation

This section is a draft. Specific rotation timing is still under discussion.

The IdP and SP XML metadata files contain each party’s certificates for which the opposite party should use when signing and/or encrypting its SAML messages. This section explains methodology by which we can exchange our respective metadata files, to ensure each party has an up-to-date copy of the other party’s certificates.

The digital signing certificates used to sign SAML messages expire after a given validity period, typically between 6 months and 3 years.

SP (TableCheck) Certificate Rotation

Three (3) months in advance of certificate expiry, we will publish new certificate(s) in our SP Metadata URL (see Step 5 above.) For the three month period prior to expiry, the SP Metadata XML will include <md:KeyDescriptor> elements for both the current and new certificate(s) listed in that order. The current certificate will be used to sign requests until midnight UTC one day before expiry, at which time the new certificate will take effect and the old certificate will be removed.

If you are unable to poll our HTTPS endpoint for changes, we can configure our system to send email alerts at the following timings:

  • Three (3) months before expiry (when the new certificate is published)

  • One (1) month before expiry

  • One (1) week before expiry

IdP (Your) Certificate Rotation

We ask that you follow a similar rotation methodology which includes the following:

  • Please publish new certificates alongside existing certificates in your IdP Metadata for a reasonable overlap period.

  • Please provide an HTTPS endpoint at which we may poll for updates to your IdP Metadata. If this is not possible, please provide some alternative method by which you push your updated IdP Metadata to us, e.g. as an attachment to an automated email.

  • As a shared goal between our companies, we wish to minimize the amount of communication and manual work necessary to perform rotation.

Appendix I: Sample IdP Metadata XML File

The IdP Metadata XML file which you generate should look similar to the following. This file is provided for references purposes only; signatures, etc. will not validate correctly.

<?xml version="1.0"?> <md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" ID="PRQ9YcZTbZEVxQOzpOMi1m4fT-z" cacheDuration="PT1440M" entityID="YOUR-IDP-ENTITY-HERE"> <?xml version="1.0" encoding="UTF-8"?> <md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" ID="_958b9b1b-83f0-4e80-b485-6f695d5924b4" entityID="https://www.your-company.com"> <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:SignedInfo> <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <ds:Reference URI="#_8b9b951b-8830-4ef0-b854-46f6992b45d5"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"> <ec:InclusiveNamespaces xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default samlp saml ds xs xsi md"/> </ds:Transform> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <ds:DigestValue>HZMF4fEN+2oQxqyD69g2RgQ0P4A=</ds:DigestValue> </ds:Reference> </ds:SignedInfo> <ds:SignatureValue>wDPBJoiIvHii+L5BCKH7KdCNws1MUGJcLKSsYIceLvJ87j/ONA6g3C3oLGDFi1Ujag4J56Os/EE3L6mo6M2lcJhLXz+jnkVy91EcP4BJ8KDJ9bve/NSw1lg86qSa2yQafNOCalUvyN+St/sn747jB9zVOGG1d1UsaemiGk4AYdNofYcAPG7H8g796vqos5d0p07C81pUZiyog2Rzi5qzHDeX0UTIp4d3Xj5a4mdj6ikySzuW5xLPm6m9uEqqCfPtJwQQH9bOjVxUxR9CQh0bHbGA3gTFMKcav5WO0ZZRcvYgPgjLFmUMEiYll4AmCUgp11XONABjJ9tScbuuHX8v0c+GYjZDWhSL98xgrTMmIdXL/BIRHJnTsHSD2o98a19LQXesY4i9BoqaRkKIOlKYjdGBhp7IfUda+St9WK86XqH4MlRXiN4pUgaISH/hzlgk5kSUSR72qaigqapvJYHbKwtafA3aDu7SZCIm9kapRc3cA7Jy2z1q+ShqIDZ6N5/7PcuH1lB/rWIVtI4zwT6GDLo7QtNDh9oXjmqbs3Me5xLKjnMNXB+eLRRF8PtyHkiswDo0Mf0N7S4diD/Vwesyp3FeGAhMhltgyST81dszw0wtJQvz42Xa7vizen1HaN8uGZluuI4AgnJVqdAygoKV7mKs73bj5KVqx1yyrAllkDA=</ds:SignatureValue> <ds:KeyInfo> <ds:X509Data> <ds:X509Certificate>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</ds:X509Certificate> </ds:X509Data> </ds:KeyInfo> </ds:Signature> <md:IDPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol" WantAuthnRequestsSigned="true"> <md:KeyDescriptor use="signing"> <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:X509Data> <ds:X509Certificate>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</ds:X509Certificate> </ds:X509Data> </ds:KeyInfo> </md:KeyDescriptor> <md:KeyDescriptor use="encryption"> <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:X509Data> <ds:X509Certificate>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</ds:X509Certificate> </ds:X509Data> </ds:KeyInfo> </md:KeyDescriptor> <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</md:NameIDFormat> <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://www.your-company.com/auth/idp/sso.saml2"/> <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://www.your-company.com/auth/idp/sso.saml2"/> <md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://www.your-company.com/auth/idp/logout.saml2"/> <md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://www.your-company.com/auth/idp/logout.saml2"/> </md:IDPSSODescriptor> <md:Organization> <md:OrganizationName xml:lang="en-US">Your Company Inc.</md:OrganizationName> <md:OrganizationDisplayName xml:lang="en-US">Your Company</md:OrganizationDisplayName> <md:OrganizationURL xml:lang="en-US">https://www.your-company.com</md:OrganizationURL> </md:Organization> <md:ContactPerson contactType="technical"> <md:GivenName>Your Team</md:GivenName> <md:EmailAddress>team@your-company.com</md:EmailAddress> </md:ContactPerson> </md:EntityDescriptor>

Appendix II: Sample TableCheck SP Metadata XML File

TableCheck’s SP Metadata XML will look similar to the following. This file is provided for references purposes only; signatures, etc. will not validate correctly. Note that this file contains TableCheck’s certificates.

<?xml version="1.0"?> <md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" ID="_23068e34-c3eb-428e-a749-5b98591093c7" entityID="https://www.tablecheck.com/tablecheck_manager"> <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:SignedInfo> <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <ds:Reference URI="#_23068e34-c3eb-428e-a749-5b98591093c7"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"> <ec:InclusiveNamespaces xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default samlp saml ds xs xsi md"/> </ds:Transform> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <ds:DigestValue>5N6zMkpNqbgs+UClAljmKLW2l80=</ds:DigestValue> </ds:Reference> </ds:SignedInfo> <ds:SignatureValue>eMjaHs5UYVT9UTEULM/YeZmqMKM0q1kl32f3vIMeafl8k9wdWIbH36seelb/qrcHx8oQf4NyNj1+H+jJ1miJv+WScpTPpWtBYu0bJszJRAG7Fd2e1I+bYoYpuDOZLvcujTaGm5qbAOGI5BR7E1218Xz3D5M2rsxrCEmbWqxE/ujV8jxf/3Vd/sxhhcRXL+vSPxJ5IzQJ46pgV6dcDZWEuuVbdeX4Z0pXenAzMf558zE6P16hUO/KCioO9cLSDxuLc6v3CAMdAkGpxCJv0KQihfQbGYDxd7cXPOdykH+l5rAR2cFuTWQ49agEUoFZ/A1jZWmk93w3dRaAkVpaPhJEAQ6I+exwI+ZyUK6e8fJEwotLAtlUsi4gfX5JPOJ0l/v9/S/OGVpggI7kklSHa6pCq1yFdv2Gz7DIiDEPhdeHlgOjuPgaE0ePbkRP7Vht1IuHdUo9TbcgSGBAan0iqGU7Md6sUWXS9cW6HMRbTZ/HBhaLWGDFLYtP/P5Hs63piu/X4eHGLhHMYL0klZ1QY78HDiclrGqHlulzZ501uku1xe5ELXWNdU2G7TZj9i14Lv5zS93BJiepkr/df3+xHM864e83RBra5I3K5NH6BpIcrQBgBUmVgT498an+Mfg26OTJ4tbrot6O8fVxQrDzB+rhhgtObYK+rZntclL8fm0In/M=</ds:SignatureValue> <ds:KeyInfo> <ds:X509Data> <ds:X509Certificate>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</ds:X509Certificate> </ds:X509Data> </ds:KeyInfo> </ds:Signature> <md:SPSSODescriptor AuthnRequestsSigned="true" WantAssertionsSigned="true" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"> <md:KeyDescriptor use="signing"> <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:X509Data> <ds:X509Certificate>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</ds:X509Certificate> </ds:X509Data> </ds:KeyInfo> </md:KeyDescriptor> <md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://id.app.tablecheck.com/sso/saml/fourseasons/logout" ResponseLocation="https://id.app.tablecheck.com/sso/saml/fourseasons/logout"/> <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</md:NameIDFormat> <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://id.app.tablecheck.com/sso/saml/fourseasons" index="0" isDefault="true"/> </md:SPSSODescriptor> <md:Organization> <md:OrganizationName xml:lang="en-US">TableCheck Inc.</md:OrganizationName> <md:OrganizationDisplayName xml:lang="en-US">TableCheck</md:OrganizationDisplayName> <md:OrganizationURL xml:lang="en-US">https://www.tablecheck.com</md:OrganizationURL> </md:Organization> <md:ContactPerson contactType="technical"> <md:GivenName>TableCheck API Team</md:GivenName> <md:EmailAddress>api@tablecheck.com</md:EmailAddress> </md:ContactPerson> <md:ContactPerson contactType="support"> <md:GivenName>TableCheck Support Team</md:GivenName> <md:EmailAddress>support@tablecheck.com</md:EmailAddress> </md:ContactPerson> </md:EntityDescriptor>

For further inquiries and assistance, please contact api@Tablecheck.com.

Looking for labels? They can now be found in the details panel on the floating action bar.

Related content