The Elastic Stack supports the SAML 2.0 Web Browser SSO and the SAML 2.0 Single Logout profiles and can integrate with any Identity Provider (IdP) that supports at least the SAML 2.0 Web Browser SSO Profile. It has been tested with a number of popular IdP implementations, such as Microsoft Active Directory Federation Services (ADFS).
This guide assumes that you have an existing IdP and wish to add Kibana as a Service Provider.
The Elastic Stack uses a standard SAML metadata document, in XML format that defines the capabilities and features of your IdP. You should be able to download or generate such a document within your IdP administration interface.
Download the IdP metadata document and store it within the
config directory on
each Elasticsearch node. For the purposes of this guide, we will assume that you are
storing it as
The IdP will have been assigned an identifier (EntityID in SAML terminology)
which is most commonly expressed in Uniform Resource Identifier (URI) form.
Your admin interface may tell you what this is, or you might need to
read the metadata document to find it - look for the
entityID attribute on the
Most IdPs will provide an appropriate metadata file with all the features that the Elastic Stack requires, and should only require the configuration steps described below. For completeness sake, the minimum requirements that the Elastic Stack has for the IdP’s metadata are:
entityIDthat matches the Elasticsearch configuration
<IDPSSODescriptor>that supports the SAML 2.0 protocol (
At least one
<KeyDescriptor>that is configured for signing (that is, it has
use="signing"or leaves the
<SingleSignOnService>with binding of HTTP-Redirect (
If you wish to support Single Logout, a
<SingleLogoutService>with binding of HTTP-Redirect (
The Elastic Stack requires that all messages from the IdP are signed.
<Response> messages, the signature may be applied to either
the response itself, or to the individual assertions.
<LogoutRequest> messages, the message itself must be signed, and the
signature should be provided as a URL parameter, as required by the HTTP-Redirect