saml-prepare-authentication-api.asciidoc 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. [role="xpack"]
  2. [[security-api-saml-prepare-authentication]]
  3. === SAML prepare authentication API
  4. ++++
  5. <titleabbrev>SAML prepare authentication</titleabbrev>
  6. ++++
  7. .New API reference
  8. [sidebar]
  9. --
  10. For the most up-to-date API details, refer to {api-es}/group/endpoint-security[Security APIs].
  11. --
  12. Creates a SAML authentication request (`<AuthnRequest>`) as a URL string, based on the configuration of the respective SAML realm in {es}.
  13. NOTE: This API is intended for use by custom web applications other than {kib}.
  14. If you are using {kib}, see the <<saml-guide-stack>>.
  15. [[security-api-saml-prepare-authentication-request]]
  16. ==== {api-request-title}
  17. `POST /_security/saml/prepare`
  18. [[security-api-saml-prepare-authentication-desc]]
  19. ==== {api-description-title}
  20. This API returns a URL pointing to the SAML Identity
  21. Provider. You can use the URL to redirect the browser of the user in order to
  22. continue the authentication process. The URL includes a single parameter named `SAMLRequest`,
  23. which contains a SAML Authentication request that is deflated and
  24. Base64 encoded. If the configuration dictates that SAML authentication requests
  25. should be signed, the URL has two extra parameters named `SigAlg` and
  26. `Signature`. These parameters contain the algorithm used for the signature and
  27. the signature value itself.
  28. It also returns a random string that uniquely identifies this SAML Authentication request. The
  29. caller of this API needs to store this identifier as it needs to used in a following step of
  30. the authentication process (see <<security-api-saml-authenticate,SAML authenticate API>>).
  31. {es} exposes all the necessary SAML related functionality via the SAML APIs.
  32. These APIs are used internally by {kib} in order to provide SAML based
  33. authentication, but can also be used by other custom web applications or other
  34. clients. See also <<security-api-saml-authenticate,SAML authenticate API>>,
  35. <<security-api-saml-invalidate,SAML invalidate API>>,
  36. <<security-api-saml-logout,SAML logout API>>, and
  37. <<security-api-saml-complete-logout, SAML complete logout API>>.
  38. [[security-api-saml-prepare-authentication-request-body]]
  39. ==== {api-request-body-title}
  40. `acs`::
  41. (Optional, string) The Assertion Consumer Service URL that matches the one of the SAML
  42. realms in {es}. The realm is used to generate the authentication request.
  43. You must specify either this parameter or the `realm` parameter.
  44. `realm`::
  45. (Optional, string) The name of the SAML realm in {es} for which the configuration is
  46. used to generate the authentication request. You must specify either this parameter or the `acs`
  47. parameter.
  48. `relay_state`::
  49. (Optional, string) A string that will be included in the redirect URL that this API returns
  50. as the `RelayState` query parameter. If the Authentication Request is signed, this value is
  51. used as part of the signature computation.
  52. [[security-api-saml-prepare-authentication-response-body]]
  53. ==== {api-response-body-title}
  54. `id`::
  55. (string) A unique identifier for the SAML Request to be stored by the caller
  56. of the API.
  57. `realm`::
  58. (string) The name of the {es} realm that was used to construct the
  59. authentication request.
  60. `redirect`::
  61. (string) The URL to redirect the user to.
  62. [[security-api-saml-prepare-authentication-example]]
  63. ==== {api-examples-title}
  64. The following example generates a SAML authentication request for the SAML realm with name `saml1`
  65. [source,console]
  66. --------------------------------------------------
  67. POST /_security/saml/prepare
  68. {
  69. "realm" : "saml1"
  70. }
  71. --------------------------------------------------
  72. The following example generates a SAML authentication request for the SAML realm with an Assertion
  73. Consuming Service URL matching `https://kibana.org/api/security/saml/callback
  74. [source,console]
  75. --------------------------------------------------
  76. POST /_security/saml/prepare
  77. {
  78. "acs" : "https://kibana.org/api/security/saml/callback"
  79. }
  80. --------------------------------------------------
  81. This API returns the following response:
  82. [source,js]
  83. -------------------------------------------------
  84. {
  85. "redirect": "https://my-idp.org/login?SAMLRequest=fVJdc6IwFP0rmbwDgUKLGbFDtc462%2B06FX3Yl50rBJsKCZsbrPbXL6J22hdfk%2FNx7zl3eL%2BvK7ITBqVWCfVdRolQuS6k2iR0mU2dmN6Phgh1FTQ8be2rehH%2FWoGWdESF%2FPST0NYorgElcgW1QG5zvkh%2FPfHAZbwx2upcV5SkiMLYzmqsFba1MAthdjIXy5enhL5a23DPOyo6W7kGBa7cwhZ2gO7G8OiW%2BR400kORt0bag7fzezAlk24eqcD2OxxlsNN5O3MdsW9c6CZnbq7rntF4d3s0D7BaHTZhIWN52P%2BcjiuGRbDU6cdj%2BEjJbJLQv4N4ADdhxBiEZbQuWclY4Q8iABbCXczCdSiKMAC%2FgyO2YqbQgrIJDZg%2FcFjsMD%2Fzb3gUcBa5sR%2F9oWR%2BzuJBqlPG14Jbn0DIf2TZ3Jn%2FXmSUrC5ddQB6bob37uZrJdeF4dIDHV3iuhb70Ptq83kOz53ubDLXlcwPJK0q%2FT42AqxIaAkVCkqm2tRgr49yfJGFU%2FZQ3hy3QyuUpd7obPv97kb%2FAQ%3D%3D"}",
  86. "realm": "saml1",
  87. "id": "_989a34500a4f5bf0f00d195aa04a7804b4ed42a1"
  88. }
  89. -------------------------------------------------
  90. // NOTCONSOLE