diff --git a/pages/api/saml/metadata/index.ts b/pages/api/saml/metadata/index.ts new file mode 100644 index 0000000..a17cc04 --- /dev/null +++ b/pages/api/saml/metadata/index.ts @@ -0,0 +1,27 @@ +import type { NextApiRequest, NextApiResponse } from 'next'; +import saml from '@boxyhq/saml20'; + +import config from 'lib/env'; +import type { IdPMetadata } from 'types'; +import { createIdPMetadataXML } from 'utils'; + +export default async function handler(req: NextApiRequest, res: NextApiResponse) { + switch (req.method) { + case 'GET': + return await MetadataUrl(); + default: + return res.status(405).end(`Method ${req.method} Not Allowed`); + } + + // Metadata URL + async function MetadataUrl() { + const xml = await createIdPMetadataXML({ + idpEntityId: config.entityId, + idpSsoUrl: config.ssoUrl, + certificate: saml.stripCertHeaderAndFooter(config.publicKey), + }); + + res.setHeader('Content-type', 'text/xml'); + res.send(xml); + } +} diff --git a/pages/index.tsx b/pages/index.tsx index 90bac1a..e848840 100644 --- a/pages/index.tsx +++ b/pages/index.tsx @@ -13,25 +13,32 @@ const Home: React.FC<{ metadata: IdPMetadata }> = ({ metadata }) => {

A free SAML 2.0 Identity Provider for testing SAML SSO integrations.

-
- - - - - - Download Metadata - - +
+
+ + + + + + Download Metadata + + + + + Metadata URL + + +
Test IdP Login diff --git a/styles/globals.css b/styles/globals.css index 9a8f38c..22e4d7e 100644 --- a/styles/globals.css +++ b/styles/globals.css @@ -43,5 +43,6 @@ a { .btn { @apply rounded; + text-transform: none; } }