Skip to content

Commit 8925bde

Browse files
authored
docs: document signed saml authentication requests for enterprise sso (#1464)
Refs LOG-13892
1 parent 615f0e7 commit 8925bde

6 files changed

Lines changed: 49 additions & 0 deletions

File tree

docs/integrations/sso/entra-id-saml/README.mdx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ tutorial_config_name: Azure AD SSO application
1010

1111
import GuideTip from '../../fragments/_sso_guide_tip.mdx';
1212

13+
import SignedAuthnRequest from './_signed-authn-request.mdx';
1314
import Step1 from './_step-1.mdx';
1415
import Step2 from './_step-2.mdx';
1516
import Step3 from './_step-3.mdx';
@@ -41,3 +42,7 @@ With minimal configuration efforts, this connector allows integration with Micro
4142
## Step 5: Set email domains and enable the SSO connector \{#step-5-set-email-domains-and-enable-the-sso-connector}
4243

4344
<Step5 />
45+
46+
## Optional: Enforce signed authentication requests \{#optional-enforce-signed-authentication-requests}
47+
48+
<SignedAuthnRequest />

docs/integrations/sso/entra-id-saml/_integration.mdx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import SignedAuthnRequest from './_signed-authn-request.mdx';
12
import Step1 from './_step-1.mdx';
23
import Step2 from './_step-2.mdx';
34
import Step3 from './_step-3.mdx';
@@ -23,3 +24,7 @@ import Step5 from './_step-5.mdx';
2324
### Step 5: Set email domains and enable the SSO connector \{#step-5-set-email-domains-and-enable-the-sso-connector}
2425

2526
<Step5 />
27+
28+
### Optional: Enforce signed authentication requests \{#optional-enforce-signed-authentication-requests}
29+
30+
<SignedAuthnRequest />
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
Microsoft Entra ID can require signed SAML authentication requests. To use this with Logto, follow this order to avoid any sign-in interruption:
2+
3+
1. In the Logto connector's `Connection` tab, click **Generate new key** under **Request signing certificate**, and download the certificate of the active key.
4+
2. In the Entra ID application's single sign-on settings, upload the certificate under **Verification certificates**. See [Enforce signed SAML authentication requests](https://learn.microsoft.com/en-us/entra/identity/enterprise-apps/howto-enforce-signed-saml-authentication).
5+
3. Back in Logto, enable **Sign authentication request** on the connector and save.
6+
4. In Entra ID, check **Require verification certificates**, then test the sign-in flow.
7+
8+
Entra ID only verifies requests signed with RSA-SHA256 (Logto's default algorithm), and enforces the requirement for SP-initiated sign-in requests. For the full setup and certificate rotation flow, see [Sign the SAML authentication request](https://docs.logto.io/integrations/saml-sso#optional-sign-the-saml-authentication-request).

docs/integrations/sso/saml/README.mdx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ tutorial_config_name: SAML SSO application on your IdP
1010

1111
import GuideTip from '../../fragments/_sso_guide_tip.mdx';
1212

13+
import SignedAuthnRequest from './_signed-authn-request.mdx';
1314
import Step1 from './_step-1.mdx';
1415
import Step2 from './_step-2.mdx';
1516
import Step3 from './_step-3.mdx';
@@ -37,6 +38,10 @@ With minimal configuration efforts, this connector allows integration with any S
3738

3839
<Step4 />
3940

41+
## Optional: Sign the SAML authentication request \{#optional-sign-the-saml-authentication-request}
42+
43+
<SignedAuthnRequest />
44+
4045
## Related resources \{#related-resources}
4146

4247
<Url href="https://blog.logto.io/saml-security-cheat-sheet">SAML security cheat sheet</Url>

docs/integrations/sso/saml/_integration.mdx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import SignedAuthnRequest from './_signed-authn-request.mdx';
12
import Step1 from './_step-1.mdx';
23
import Step2 from './_step-2.mdx';
34
import Step3 from './_step-3.mdx';
@@ -18,3 +19,7 @@ Step 1: Create a SAML SSO application on your IdP \{#step-1-create-a-saml-sso-ap
1819
### Step4: Set email domains and enable the SSO connector \{#step4-set-email-domains-and-enable-the-sso-connector}
1920

2021
<Step4 />
22+
23+
### Optional: Sign the SAML authentication request \{#optional-sign-the-saml-authentication-request}
24+
25+
<SignedAuthnRequest />
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
By default, Logto sends SAML authentication requests (AuthnRequests) unsigned. If your IdP requires signed authentication requests, Logto can sign them with a generated Service Provider (SP) certificate. Signing is controlled entirely by the connector's **Sign authentication request** setting — Logto does not read the `WantAuthnRequestsSigned` flag from the IdP metadata.
2+
3+
Set it up in this order to avoid any sign-in interruption:
4+
5+
1. In the connector's `Connection` tab, find the **Request signing certificate** section and click **Generate new key**. The first key is activated automatically; keys generated later are staged as inactive for rotation.
6+
2. Download the active key's certificate and register it with your IdP.
7+
3. Enable **Sign authentication request** and save. Enabling requires an active signing key — saving without one is rejected.
8+
4. If your IdP has a separate option to require or verify signed requests, turn it on now, then test the sign-in flow.
9+
10+
:::warning
11+
Keep the two sides in step. Enabling **Sign authentication request** before the certificate is registered — or requiring verification at the IdP before Logto signs — breaks sign-in through this connection until the other side catches up. IdPs that do not verify request signatures simply ignore the signature.
12+
:::
13+
14+
Key management works independently of the toggle:
15+
16+
- At most one key is **active**, and the active key signs every request. Key operations (generate, activate, deactivate, delete) take effect immediately.
17+
- To rotate certificates without downtime: generate a new key (staged as inactive), register its certificate with your IdP, then activate it — the previous key deactivates automatically and can be deleted afterwards.
18+
- The active key cannot be deleted, and it cannot be deactivated while **Sign authentication request** is enabled — disable signing first.
19+
- Turning the toggle off keeps all keys, so re-enabling resumes signing with the same certificate — no IdP-side rework needed.
20+
21+
Logto signs requests with RSA-SHA256 by default. To use RSA-SHA512, set `requestSignatureAlgorithm` to `http://www.w3.org/2001/04/xmldsig-more#rsa-sha512` in the connector config via the Logto Management API.

0 commit comments

Comments
 (0)