Let your team sign in to the Partner Portal through your own identity provider with SAML 2.0 or OpenID Connect.
Single sign-on (SSO) lets your team sign in to the LI.FI Partner Portal with the credentials they already use at work. You connect your identity provider (IdP) once, and members whose email matches your company domains sign in through it.The portal supports two protocols: OpenID Connect (OIDC) and SAML 2.0. Both work with Okta, Microsoft Entra ID, Google Workspace, and any other standards-compliant provider. If you have no preference, use OIDC. It needs one URL and a set of credentials, with no certificates to rotate.
You are an Owner of your organisation in the Partner Portal. Only Owners can see and edit SSO settings.
SSO is enabled for your organisation. Open Settings → Single sign-on. If the page shows Request access, contact the LI.FI team and we enable it for you.
You have admin access to your identity provider, or someone who does.
You know the email domains your team uses, for example example.com and example-corp.com.
Sign-in always starts at the portal. Members open portal.li.fi and enter their work email.
In Required mode, members whose email matches one of your domains are redirected to your identity provider automatically.
In Optional mode, members see a Continue with SSO option under the password field and choose how to sign in.
Settings → Single sign-on also shows an SSO sign-in link while your connection is active. Share it with your team to start an SSO sign-in directly. It does not appear on the public login page.
Sign-in that starts from your identity provider, such as an Okta or Entra application tile, is not supported. Members must start at the portal or use the SSO sign-in link.
The email address is the account key. Your identity provider must release the user’s email on every sign-in, or the portal cannot match the user to your organisation.
Go to Settings → Single sign-on and select SAML 2.0 as the protocol.
2
Copy the values from Service provider metadata
The card shows your organisation’s SP Entity ID, Assertion Consumer Service (ACS) URL, and SAML metadata URL. They have this shape, where org-<your-org-id> is specific to your organisation:
SP Entity ID urn:auth0:lifi-prod:org-<your-org-id>ACS URL https://auth-prod.portal.li.fi/login/callback?connection=org-<your-org-id>SAML metadata URL https://auth-prod.portal.li.fi/samlp/metadata?connection=org-<your-org-id>
Copy the values from your own settings page rather than from this example.
If your provider accepts a metadata URL, paste the SAML metadata URL and the rest is filled in for you. Otherwise enter the SP Entity ID as the audience and the ACS URL as the single sign-on or reply URL.
2
Set the Name ID to the user's email
Use the email address as the Name ID, with the emailAddress format.
3
Add attribute statements
Add an attribute named email that carries the user’s email address. Optionally add given_name and family_name for the user’s first and last name.
The Name ID alone is not enough. If your identity provider does not send the email as an attribute, members are created without an email address and cannot use the portal.
4
Download the IdP metadata
Most providers offer a metadata XML file or URL for the application. Download it, or note the Entity ID, sign-in URL, and X.509 signing certificate.
Paste the full metadata XML from your identity provider into IdP metadata XML. The fields below it are populated from the metadata when you save.If you have no metadata file, fill in IdP Entity ID, IdP Sign-in URL, and X.509 signing certificate (PEM format, including the BEGIN CERTIFICATE and END CERTIFICATE lines). IdP Sign-out URL is optional.
2
Map the attributes
Set Email attribute to the attribute name that carries the email in your assertion. The default is email. Optionally set First name attribute and Last name attribute.
The SSO mode card controls how members of your organisation can sign in.
Mode
Behaviour
Disabled
Standard sign-in only. SSO is configured but inactive.
Optional
Members can sign in via SSO or password. Use during rollout.
Required
Members must sign in via SSO. Password login is blocked for this organisation.
We recommend this rollout:
Save your connection and switch to Optional.
Sign in through your identity provider with one member to confirm the connection works.
Switch to Required.
In Required mode, everyone in your organisation must sign in through your identity provider from their next sign-in onwards, and anyone whose email matches your domains is redirected to it automatically. Test the connection in Optional mode first.
“IdP-Initiated login is not enabled for connection …”
The member started the sign-in from your identity provider, for example an Okta or Entra tile. Start at portal.li.fi or use the SSO sign-in link from your settings page instead.In Okta, you can make the tile work by opening the application’s General settings, setting Login initiated by to Either Okta or App, ticking Redirect to app to initiate login (SP-initiated), and setting the Login URL to https://portal.li.fi.
Entering my email does not redirect to our identity provider
Automatic redirection only happens in Required mode. In Optional mode, choose Continue with SSO under the password field, or switch the mode to Required.
“An error occurred during the authorization flow” (OIDC)
Your identity provider rejected the request. Check that both redirect URIs are registered on the application and that the Authorization Code grant is enabled.
“We couldn’t finish your single sign-on”
The account returned by your identity provider could not be matched to your organisation. Check that the email it releases matches one of your configured Email domains. If it does, contact the LI.FI team.
A member signed in but has no name or email
For SAML, check the attribute statements and the Email attribute, First name attribute, and Last name attribute mapping. For OIDC, make sure the application grants the profile and email scopes.
Follow additions and updates to the Partner Portal.
Contact the LI.FI team
Request SSO for your organisation or get help with your setup.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"LI.FI","description":"Get the best price execution for any swaps and bridging across EVM chains, Solana, Bitcoin and alt-VMs. Enable trading across all DEX aggregators, bridges, and intent-systems and save hundreds of developer hours.","colors":{"primary":"#5C67FF","light":"#fab6f4","dark":"#5C67FF"},"logo":{"light":"https://mintcdn.com/lifi/EmProAEgMrruLUbI/logo/light.png?fit=max\u0026auto=format\u0026n=EmProAEgMrruLUbI\u0026q=85\u0026s=f435348680e682acea6e3b9af339ed7a","dark":"https://mintcdn.com/lifi/EmProAEgMrruLUbI/logo/dark.png?fit=max\u0026auto=format\u0026n=EmProAEgMrruLUbI\u0026q=85\u0026s=d02539147db168291d7c711beb45d10b"},"favicon":"https://mintcdn.com/lifi/jEGN0oG6bNsdv0a3/logo/favicon.svg?fit=max\u0026auto=format\u0026n=jEGN0oG6bNsdv0a3\u0026q=85\u0026s=35fb6353ca8815e24daf1025135fef38","api":{"openapi":"openapi.yaml"},"appearance":{"default":"dark"},"background":{"color":{"light":"#FAFAFF","dark":"#000B29"}},"navbar":{"links":[{"href":"https://lifihelp.zendesk.com/hc/en-us","label":"Support"}],"primary":{"type":"button","label":"Get Started","href":"https://portal.li.fi/signup"}},"footer":{"socials":{"x":"https://x.com/lifiprotocol","github":"https://github.com/lifinance","website":"https://li.fi/"},"links":[{"header":"Company","items":[{"label":"Careers","href":"https://li.fi/careers"},{"label":"Brand Assets","href":"https://li.fi/brand-assets"},{"label":"About","href":"https://li.fi/"}]},{"header":"Tools","items":[{"label":"LI.FI Explorer","href":"https://explorer.li.fi/?utm_source=lifi\u0026utm_medium=footer_link_tools\u0026utm_campaign=lifi_to_explorer"}]},{"header":"Legal","items":[{"label":"Privacy Policy","href":"https://li.fi/legal/privacy-policy"},{"label":"Terms of Service","href":"https://li.fi/legal/terms-and-conditions"},{"label":"Imprint","href":"https://li.fi/legal/imprint"}]}]},"styling":{"eyebrows":"section","codeblocks":"system","latex":false},"integrations":{"ga4":{"measurementId":"G-NTE1P73M4Q"}},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"navigation":{"languages":[{"language":"en","href":"introduction/introduction"},{"language":"zh-Hans","href":"zh-Hans/introduction/introduction"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"lifi","hasAudioNarration":false,"actualSubdomain":"lifi","customDomains":["docs.li.fi"],"gitSource":{"type":"github","owner":"lifinance","repo":"public-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ad85784d8114caf479e3730","collectionId":"b5a740fa-f6f0-423b-9b32-f7f29e591d2d","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ad85784d8114caf479e3730"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ad85784d8114caf479e3730","clientVersion":"0.0.3990","searchFilterCounts":[{"language":"en","tag":"Composer","count":46},{"language":"zh-Hans","tag":"Composer","count":46},{"language":"en","tag":"Overview","count":38},{"language":"en","tag":"API Reference","count":34},{"language":"zh-Hans","tag":"概述","count":34},{"language":"en","tag":"Intents \u0026 Solvers","count":32},{"language":"zh-Hans","tag":"意图与求解器","count":32},{"language":"en","tag":"Integrate via Composer API","count":30},{"language":"zh-Hans","tag":"通过 Composer API 集成","count":30},{"language":"zh-Hans","tag":"API 参考","count":29},{"language":"en","tag":"Reference","count":23},{"language":"en","tag":"For Agents","count":21},{"language":"en","tag":"Widget","count":20},{"language":"zh-Hans","tag":"Widget","count":20},{"language":"zh-Hans","tag":"参考文档","count":19},{"language":"en","tag":"Getting Started","count":16},{"language":"en","tag":"General API","count":16},{"language":"zh-Hans","tag":"通用 API","count":16},{"language":"zh-Hans","tag":"企业级功能","count":15},{"language":"zh-Hans","tag":"入门","count":14}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"enterprise/partner-portal/sso","slug":"/enterprise/partner-portal/sso","pageMetadata":{"title":"Single sign-on","description":"Let your team sign in to the Partner Portal through your own identity provider with SAML 2.0 or OpenID Connect.","href":"/enterprise/partner-portal/sso"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Let your team sign in to the Partner Portal through your own identity provider with SAML 2.0 or OpenID Connect.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,em:`em`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Accordion,AccordionGroup,Card,CardGroup,CodeBlock,Heading,Note,Step,Steps,Table,Warning}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!AccordionGroup)_missingMdxReference(`AccordionGroup`,true);if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Single sign-on (SSO) lets your team sign in to the `,_jsx(_components.a,{href:`https://portal.li.fi/`,children:`LI.FI Partner Portal`}),` with the credentials they already use at work. You connect your identity provider (IdP) once, and members whose email matches your company domains sign in through it.`]}),`\n`,_jsxs(_components.p,{children:[`The portal supports two protocols: `,_jsx(_components.strong,{children:`OpenID Connect (OIDC)`}),` and `,_jsx(_components.strong,{children:`SAML 2.0`}),`. Both work with Okta, Microsoft Entra ID, Google Workspace, and any other standards-compliant provider. If you have no preference, use OIDC. It needs one URL and a set of credentials, with no certificates to rotate.`]}),`\n`,_jsx(Heading,{level:`2`,id:`before-you-start`,children:`Before you start`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`You are an `,_jsx(_components.strong,{children:`Owner`}),` of your organisation in the Partner Portal. Only Owners can see and edit SSO settings.`]}),`\n`,_jsxs(_components.li,{children:[`SSO is enabled for your organisation. Open `,_jsx(_components.strong,{children:`Settings → Single sign-on`}),`. If the page shows `,_jsx(_components.strong,{children:`Request access`}),`, `,_jsx(_components.a,{href:`https://li.fi/contact-us/`,children:`contact the LI.FI team`}),` and we enable it for you.`]}),`\n`,_jsx(_components.li,{children:`You have admin access to your identity provider, or someone who does.`}),`\n`,_jsxs(_components.li,{children:[`You know the email domains your team uses, for example `,_jsx(_components.code,{children:`example.com`}),` and `,_jsx(_components.code,{children:`example-corp.com`}),`.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`how-sign-in-works`,children:`How sign-in works`}),`\n`,_jsxs(_components.p,{children:[`Sign-in always starts at the portal. Members open `,_jsx(_components.a,{href:`https://portal.li.fi/`,children:`portal.li.fi`}),` and enter their work email.`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`In `,_jsx(_components.strong,{children:`Required`}),` mode, members whose email matches one of your domains are redirected to your identity provider automatically.`]}),`\n`,_jsxs(_components.li,{children:[`In `,_jsx(_components.strong,{children:`Optional`}),` mode, members see a `,_jsx(_components.strong,{children:`Continue with SSO`}),` option under the password field and choose how to sign in.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Settings → Single sign-on`}),` also shows an `,_jsx(_components.strong,{children:`SSO sign-in link`}),` while your connection is active. Share it with your team to start an SSO sign-in directly. It does not appear on the public login page.`]}),`\n`,_jsx(Note,{children:_jsx(_components.p,{children:`Sign-in that starts from your identity provider, such as an Okta or Entra application tile, is not supported. Members must start at the portal or use the SSO sign-in link.`})}),`\n`,_jsx(_components.p,{children:`The email address is the account key. Your identity provider must release the user’s email on every sign-in, or the portal cannot match the user to your organisation.`}),`\n`,_jsx(Heading,{level:`2`,id:`set-up-openid-connect`,children:`Set up OpenID Connect`}),`\n`,_jsx(Heading,{level:`3`,id:`in-your-identity-provider`,children:`In your identity provider`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Create a web application`,children:_jsxs(_components.p,{children:[`Create a new OIDC application of type `,_jsx(_components.strong,{children:`Web`}),` (also called `,_jsx(_components.em,{children:`confidential client`}),`). Enable the `,_jsx(_components.strong,{children:`Authorization Code`}),` grant. The implicit grant is not used.`]})}),_jsxs(Step,{title:`Register both redirect URIs`,children:[_jsx(_components.p,{children:`Add both of these as allowed redirect (callback) URIs:`}),_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`3`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`https://auth-prod.portal.li.fi/login/callback`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`https://lifi-prod.eu.auth0.com/login/callback`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})})]}),_jsx(Step,{title:`Allow the required scopes`,children:_jsxs(_components.p,{children:[`Grant the `,_jsx(_components.code,{children:`openid`}),`, `,_jsx(_components.code,{children:`profile`}),`, and `,_jsx(_components.code,{children:`email`}),` scopes. The `,_jsx(_components.code,{children:`email`}),` claim must be present in the ID token.`]})}),_jsx(Step,{title:`Leave initiate-login and sign-out URLs empty`,children:_jsx(_components.p,{children:`The portal does not use an initiate-login URI or a sign-out URL. Leave them blank.`})}),_jsx(Step,{title:`Copy the credentials`,children:_jsxs(_components.p,{children:[`Note the `,_jsx(_components.strong,{children:`Client ID`}),` and `,_jsx(_components.strong,{children:`Client Secret`}),`, and your provider’s discovery URL. It has the form `,_jsx(_components.code,{children:`https://\u003cyour-idp>/.well-known/openid-configuration`}),`.`]})})]}),`\n`,_jsx(Heading,{level:`3`,id:`in-the-partner-portal`,children:`In the Partner Portal`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Open the SSO settings`,children:_jsxs(_components.p,{children:[`Go to `,_jsx(_components.strong,{children:`Settings → Single sign-on`}),` and select `,_jsx(_components.strong,{children:`OpenID Connect`}),` as the protocol.`]})}),_jsx(Step,{title:`Enter the discovery URL`,children:_jsxs(_components.p,{children:[`Paste your provider’s `,_jsx(_components.code,{children:`/.well-known/openid-configuration`}),` URL into `,_jsx(_components.strong,{children:`Discovery URL`}),`. The issuer, signing keys, and endpoints are resolved from it.`]})}),_jsx(Step,{title:`Enter the credentials`,children:_jsxs(_components.p,{children:[`Fill in `,_jsx(_components.strong,{children:`Client ID`}),` and `,_jsx(_components.strong,{children:`Client Secret`}),`. The secret is never shown again after saving. Enter a new value only when you rotate it.`]})}),_jsx(Step,{title:`Add your email domains`,children:_jsxs(_components.p,{children:[`Under `,_jsx(_components.strong,{children:`Email domains`}),`, enter one domain per line. Members with a matching email are routed to your identity provider.`]})}),_jsx(Step,{title:`Save`,children:_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Save`}),`. Then follow `,_jsx(_components.a,{href:`#choose-an-sso-mode`,children:`Choose an SSO mode`}),` to turn SSO on.`]})})]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`Service provider metadata`}),` card on the same page (SP Entity ID, ACS URL, SAML metadata URL) applies to SAML only. You can ignore it for OIDC.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`set-up-saml-2-0`,children:`Set up SAML 2.0`}),`\n`,_jsx(Heading,{level:`3`,id:`copy-the-service-provider-details`,children:`Copy the service provider details`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Open the SSO settings`,children:_jsxs(_components.p,{children:[`Go to `,_jsx(_components.strong,{children:`Settings → Single sign-on`}),` and select `,_jsx(_components.strong,{children:`SAML 2.0`}),` as the protocol.`]})}),_jsxs(Step,{title:`Copy the values from Service provider metadata`,children:[_jsxs(_components.p,{children:[`The card shows your organisation’s `,_jsx(_components.strong,{children:`SP Entity ID`}),`, `,_jsx(_components.strong,{children:`Assertion Consumer Service (ACS) URL`}),`, and `,_jsx(_components.strong,{children:`SAML metadata URL`}),`. They have this shape, where `,_jsx(_components.code,{children:`org-\u003cyour-org-id>`}),` is specific to your organisation:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`4`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`SP Entity ID urn:auth0:lifi-prod:org-\u003cyour-org-id>`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`ACS URL https://auth-prod.portal.li.fi/login/callback?connection=org-\u003cyour-org-id>`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`SAML metadata URL https://auth-prod.portal.li.fi/samlp/metadata?connection=org-\u003cyour-org-id>`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),_jsx(_components.p,{children:`Copy the values from your own settings page rather than from this example.`})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`in-your-identity-provider-2`,children:`In your identity provider`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Create a SAML 2.0 application`,children:_jsxs(_components.p,{children:[`If your provider accepts a metadata URL, paste the `,_jsx(_components.strong,{children:`SAML metadata URL`}),` and the rest is filled in for you. Otherwise enter the `,_jsx(_components.strong,{children:`SP Entity ID`}),` as the audience and the `,_jsx(_components.strong,{children:`ACS URL`}),` as the single sign-on or reply URL.`]})}),_jsx(Step,{title:`Set the Name ID to the user's email`,children:_jsxs(_components.p,{children:[`Use the email address as the Name ID, with the `,_jsx(_components.code,{children:`emailAddress`}),` format.`]})}),_jsxs(Step,{title:`Add attribute statements`,children:[_jsxs(_components.p,{children:[`Add an attribute named `,_jsx(_components.code,{children:`email`}),` that carries the user’s email address. Optionally add `,_jsx(_components.code,{children:`given_name`}),` and `,_jsx(_components.code,{children:`family_name`}),` for the user’s first and last name.`]}),_jsx(Warning,{children:_jsx(_components.p,{children:`The Name ID alone is not enough. If your identity provider does not send the email as an attribute, members are created without an email address and cannot use the portal.`})})]}),_jsx(Step,{title:`Download the IdP metadata`,children:_jsxs(_components.p,{children:[`Most providers offer a metadata XML file or URL for the application. Download it, or note the `,_jsx(_components.strong,{children:`Entity ID`}),`, `,_jsx(_components.strong,{children:`sign-in URL`}),`, and `,_jsx(_components.strong,{children:`X.509 signing certificate`}),`.`]})})]}),`\n`,_jsx(Heading,{level:`3`,id:`back-in-the-partner-portal`,children:`Back in the Partner Portal`}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Paste the IdP metadata XML`,children:[_jsxs(_components.p,{children:[`Paste the full metadata XML from your identity provider into `,_jsx(_components.strong,{children:`IdP metadata XML`}),`. The fields below it are populated from the metadata when you save.`]}),_jsxs(_components.p,{children:[`If you have no metadata file, fill in `,_jsx(_components.strong,{children:`IdP Entity ID`}),`, `,_jsx(_components.strong,{children:`IdP Sign-in URL`}),`, and `,_jsx(_components.strong,{children:`X.509 signing certificate`}),` (PEM format, including the `,_jsx(_components.code,{children:`BEGIN CERTIFICATE`}),` and `,_jsx(_components.code,{children:`END CERTIFICATE`}),` lines). `,_jsx(_components.strong,{children:`IdP Sign-out URL`}),` is optional.`]})]}),_jsx(Step,{title:`Map the attributes`,children:_jsxs(_components.p,{children:[`Set `,_jsx(_components.strong,{children:`Email attribute`}),` to the attribute name that carries the email in your assertion. The default is `,_jsx(_components.code,{children:`email`}),`. Optionally set `,_jsx(_components.strong,{children:`First name attribute`}),` and `,_jsx(_components.strong,{children:`Last name attribute`}),`.`]})}),_jsx(Step,{title:`Add your email domains`,children:_jsxs(_components.p,{children:[`Under `,_jsx(_components.strong,{children:`Email domains`}),`, enter one domain per line.`]})}),_jsx(Step,{title:`Save`,children:_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Save`}),`. Then follow `,_jsx(_components.a,{href:`#choose-an-sso-mode`,children:`Choose an SSO mode`}),` to turn SSO on.`]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`choose-an-sso-mode`,children:`Choose an SSO mode`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`SSO mode`}),` card controls how members of your organisation can sign in.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Mode`}),_jsx(_components.th,{children:`Behaviour`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Disabled`})}),_jsx(_components.td,{children:`Standard sign-in only. SSO is configured but inactive.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Optional`})}),_jsx(_components.td,{children:`Members can sign in via SSO or password. Use during rollout.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Required`})}),_jsx(_components.td,{children:`Members must sign in via SSO. Password login is blocked for this organisation.`})]})]})]}),`\n`,_jsx(_components.p,{children:`We recommend this rollout:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Save your connection and switch to `,_jsx(_components.strong,{children:`Optional`}),`.`]}),`\n`,_jsx(_components.li,{children:`Sign in through your identity provider with one member to confirm the connection works.`}),`\n`,_jsxs(_components.li,{children:[`Switch to `,_jsx(_components.strong,{children:`Required`}),`.`]}),`\n`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`In `,_jsx(_components.strong,{children:`Required`}),` mode, everyone in your organisation must sign in through your identity provider from their next sign-in onwards, and anyone whose email matches your domains is redirected to it automatically. Test the connection in Optional mode first.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`troubleshooting`,children:`Troubleshooting`}),`\n`,_jsxs(AccordionGroup,{children:[_jsxs(Accordion,{title:`“IdP-Initiated login is not enabled for connection …”`,id:`idp-initiated-login-is-not-enabled-for-connection`,children:[_jsxs(_components.p,{children:[`The member started the sign-in from your identity provider, for example an Okta or Entra tile. Start at `,_jsx(_components.a,{href:`https://portal.li.fi/`,children:`portal.li.fi`}),` or use the `,_jsx(_components.strong,{children:`SSO sign-in link`}),` from your settings page instead.`]}),_jsxs(_components.p,{children:[`In Okta, you can make the tile work by opening the application’s `,_jsx(_components.strong,{children:`General`}),` settings, setting `,_jsx(_components.strong,{children:`Login initiated by`}),` to `,_jsx(_components.em,{children:`Either Okta or App`}),`, ticking `,_jsx(_components.strong,{children:`Redirect to app to initiate login (SP-initiated)`}),`, and setting the `,_jsx(_components.strong,{children:`Login URL`}),` to `,_jsx(_components.code,{children:`https://portal.li.fi`}),`.`]})]}),_jsx(Accordion,{title:`Entering my email does not redirect to our identity provider`,id:`entering-my-email-does-not-redirect-to-our-identity-provider`,children:_jsxs(_components.p,{children:[`Automatic redirection only happens in `,_jsx(_components.strong,{children:`Required`}),` mode. In `,_jsx(_components.strong,{children:`Optional`}),` mode, choose `,_jsx(_components.strong,{children:`Continue with SSO`}),` under the password field, or switch the mode to Required.`]})}),_jsx(Accordion,{title:`“An error occurred during the authorization flow” (OIDC)`,id:`an-error-occurred-during-the-authorization-flow-oidc`,children:_jsxs(_components.p,{children:[`Your identity provider rejected the request. Check that both redirect URIs are registered on the application and that the `,_jsx(_components.strong,{children:`Authorization Code`}),` grant is enabled.`]})}),_jsx(Accordion,{title:`“We couldn’t finish your single sign-on”`,id:`we-couldnt-finish-your-single-sign-on`,children:_jsxs(_components.p,{children:[`The account returned by your identity provider could not be matched to your organisation. Check that the email it releases matches one of your configured `,_jsx(_components.strong,{children:`Email domains`}),`. If it does, `,_jsx(_components.a,{href:`https://li.fi/contact-us/`,children:`contact the LI.FI team`}),`.`]})}),_jsx(Accordion,{title:`A member signed in but has no name or email`,id:`a-member-signed-in-but-has-no-name-or-email`,children:_jsxs(_components.p,{children:[`For SAML, check the attribute statements and the `,_jsx(_components.strong,{children:`Email attribute`}),`, `,_jsx(_components.strong,{children:`First name attribute`}),`, and `,_jsx(_components.strong,{children:`Last name attribute`}),` mapping. For OIDC, make sure the application grants the `,_jsx(_components.code,{children:`profile`}),` and `,_jsx(_components.code,{children:`email`}),` scopes.`]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`next-steps`,children:`Next steps`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Partner Portal changelog`,icon:`list`,href:`/changelog/partner-portal`,children:_jsx(_components.p,{children:`Follow additions and updates to the Partner Portal.`})}),_jsx(Card,{title:`Contact the LI.FI team`,icon:`envelope`,href:`https://li.fi/contact-us/`,children:_jsx(_components.p,{children:`Request SSO for your organisation or get help with your setup.`})})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":"system","config":{},"pageMetadata":{"title":"Single sign-on","description":"Let your team sign in to the Partner Portal through your own identity provider with SAML 2.0 or OpenID Connect.","href":"/enterprise/partner-portal/sso"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Before you start","slug":"before-you-start","depth":2,"children":[]},{"title":"How sign-in works","slug":"how-sign-in-works","depth":2,"children":[]},{"title":"Set up OpenID Connect","slug":"set-up-openid-connect","depth":2,"children":[{"title":"In your identity provider","slug":"in-your-identity-provider","depth":3,"children":[]},{"title":"In the Partner Portal","slug":"in-the-partner-portal","depth":3,"children":[]}]},{"title":"Set up SAML 2.0","slug":"set-up-saml-2-0","depth":2,"children":[{"title":"Copy the service provider details","slug":"copy-the-service-provider-details","depth":3,"children":[]},{"title":"In your identity provider","slug":"in-your-identity-provider-2","depth":3,"children":[]},{"title":"Back in the Partner Portal","slug":"back-in-the-partner-portal","depth":3,"children":[]}]},{"title":"Choose an SSO mode","slug":"choose-an-sso-mode","depth":2,"children":[]},{"title":"Troubleshooting","slug":"troubleshooting","depth":2,"children":[]},{"title":"Next steps","slug":"next-steps","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/lifi/951d8dd0c2dbce84/plausible.js","/_mintlify/custom/lifi/8e3c41579c236ea7/scripts/translate-docs.js","/_mintlify/custom/lifi/b34903975490ec23/scripts/generate-md-redirects.js","/_mintlify/custom/lifi/516472b23ab068ad/scripts/check-links.js","/_mintlify/custom/lifi/70364f7a7384bb43/scripts/markdown-chunker.js","/_mintlify/custom/lifi/6c99617851837b30/scripts/translation-config.js","/_mintlify/custom/lifi/8f88293865b45873/scripts/verify-translation-coverage.js"],"subdomain":"lifi","siteName":"LI.FI","title":"Single sign-on - LI.FI","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/enterprise/partner-portal/sso","matchLevel":0},"zh-Hans":{"href":"/zh-Hans/enterprise/partner-portal/sso","matchLevel":1}}},"lastModified":"2026-09-17T10:08:00.398Z","originalFileLocation":"enterprise/partner-portal/sso.mdx","locale":"en"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Let your team sign in to the Partner Portal through your own identity provider with SAML 2.0 or OpenID Connect.\">\u003cmeta data-mint-head name=\"application-name\" content=\"LI.FI\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/lifi/uhSlA1vHRUBoEVMw/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/lifi/uhSlA1vHRUBoEVMw/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/lifi/uhSlA1vHRUBoEVMw/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/lifi/uhSlA1vHRUBoEVMw/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/lifi/uhSlA1vHRUBoEVMw/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/lifi/uhSlA1vHRUBoEVMw/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/lifi/uhSlA1vHRUBoEVMw/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/lifi/uhSlA1vHRUBoEVMw/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/lifi/uhSlA1vHRUBoEVMw/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Single sign-on - LI.FI\">\u003cmeta data-mint-head property=\"og:description\" content=\"Let your team sign in to the Partner Portal through your own identity provider with SAML 2.0 or OpenID Connect.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"LI.FI\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.li.fi/enterprise/partner-portal/sso\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://lifi.mintlify.app/_mintlify/api/og/v2?division=Partner+Portal\u0026amp;title=Single+sign-on\u0026amp;description=Let+your+team+sign+in+to+the+Partner+Portal+through+your+own+identity+provider+with+SAML+2.0+or+OpenID+Connect.\u0026amp;theme=bbd760f308f6962e114ab426\u0026amp;signature=9be55f1205b085639a25346d4c8b3d6f7ef272642be77dc18b4d9e77179fd150\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Single sign-on - LI.FI\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Let your team sign in to the Partner Portal through your own identity provider with SAML 2.0 or OpenID Connect.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://lifi.mintlify.app/_mintlify/api/og/v2?division=Partner+Portal\u0026amp;title=Single+sign-on\u0026amp;description=Let+your+team+sign+in+to+the+Partner+Portal+through+your+own+identity+provider+with+SAML+2.0+or+OpenID+Connect.\u0026amp;theme=bbd760f308f6962e114ab426\u0026amp;signature=9be55f1205b085639a25346d4c8b3d6f7ef272642be77dc18b4d9e77179fd150\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/lifi/uhSlA1vHRUBoEVMw/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"LI.FI\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#5C67FF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.li.fi/enterprise/partner-portal/sso\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/enterprise/partner-portal/sso.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://docs.li.fi/enterprise/partner-portal/sso\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"zh-Hans\" href=\"https://docs.li.fi/zh-Hans/enterprise/partner-portal/sso\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://docs.li.fi/enterprise/partner-portal/sso\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.li.fi/#organization\",\"name\":\"LI.FI\",\"url\":\"https://docs.li.fi\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/lifi/EmProAEgMrruLUbI/logo/light.png?fit=max\u0026auto=format\u0026n=EmProAEgMrruLUbI\u0026q=85\u0026s=f435348680e682acea6e3b9af339ed7a\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.li.fi#website\",\"name\":\"LI.FI\",\"url\":\"https://docs.li.fi\",\"publisher\":{\"@id\":\"https://docs.li.fi/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.li.fi/enterprise/partner-portal/sso#webpage\",\"url\":\"https://docs.li.fi/enterprise/partner-portal/sso\",\"name\":\"Single sign-on\",\"description\":\"Let your team sign in to the Partner Portal through your own identity provider with SAML 2.0 or OpenID Connect.\",\"dateModified\":\"2026-09-17T10:08:00.398Z\",\"isPartOf\":{\"@id\":\"https://docs.li.fi#website\"},\"breadcrumb\":{\"@id\":\"https://docs.li.fi/enterprise/partner-portal/sso#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.li.fi/enterprise/partner-portal/sso#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"LI.FI\",\"item\":\"https://docs.li.fi\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Single sign-on\",\"item\":\"https://docs.li.fi/enterprise/partner-portal/sso\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.li.fi/enterprise/partner-portal/sso#article\",\"headline\":\"Single sign-on\",\"name\":\"Single sign-on\",\"description\":\"Let your team sign in to the Partner Portal through your own identity provider with SAML 2.0 or OpenID Connect.\",\"url\":\"https://docs.li.fi/enterprise/partner-portal/sso\",\"mainEntityOfPage\":{\"@id\":\"https://docs.li.fi/enterprise/partner-portal/sso#webpage\"},\"dateModified\":\"2026-09-17T10:08:00.398Z\",\"publisher\":{\"@id\":\"https://docs.li.fi/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.li.fi#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"LI.FI\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"LI.FI","nav":{"global":null,"languages":[{"language":"en","tabs":[{"tab":"Overview","pages":[{"title":"Overview","href":"/introduction/introduction"}]},{"tab":"Enterprise (New)","groups":[{"group":"Enterprise Features","pages":[{"title":"Overview","href":"/enterprise/overview"},{"title":"Quote Simulation","href":"/enterprise/quote-simulation"},{"title":"Smart Slippage","href":"/enterprise/smart-slippage"},{"title":"Smart Deposit Addresses","href":"/enterprise/smart-deposit-address"},{"title":"Stablecoin 1:1","href":"/enterprise/stablecoin-1-1"},{"title":"Real World Assets (RWA)","href":"/enterprise/real-world-assets"},{"title":"Dynamic Pricing","description":"Flexible, case-by-case commercial models for LI.FI's enterprise features.","href":"/enterprise/dynamic-pricing"}]},{"group":"Partner Portal","pages":[{"title":"Single sign-on","href":"/enterprise/partner-portal/sso"}]}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/introduction"}]},{"tab":"SDK","pages":[{"title":"SDK","href":"/sdk/overview"}]},{"tab":"Widget","pages":[{"title":"Widget","href":"/widget/overview"}]},{"tab":"Composer","pages":[{"title":"Composer","href":"/composer/overview"}]},{"tab":"Earn","pages":[{"title":"Earn","href":"/earn/overview"}]},{"tab":"Perps","pages":[{"title":"Perps","href":"/perps/overview"}]},{"tab":"Intents \u0026 Solvers","pages":[{"title":"Intents \u0026 Solvers","href":"/lifi-intents/introduction"}]},{"tab":"For Agents","pages":[{"title":"For Agents","href":"/agents/overview"}]},{"tab":"Widget Playground","href":"https://playground.li.fi/"},{"tab":"Bigmi","pages":[{"title":"Bigmi","href":"/bigmi/overview"}]},{"tab":"Guides","pages":[{"title":"Guides","href":"/guides/gas-options"}]},{"tab":"FAQs","pages":[{"title":"FAQs","href":"/faqs/fees-monetization"}]}]},{"language":"zh-Hans","pages":[{"title":"zh-Hans","href":"/zh-Hans/enterprise/partner-portal/sso"}]}]},"title":"Single sign-on - LI.FI","buildId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","deploymentId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","dynamics":[],"chunks":[]}