Skip to content

Commit b4e3a98

Browse files
committed
fix(sso): add org membership guard on register route, fix SP entityID, remove fullError leak
1 parent 6183a98 commit b4e3a98

1 file changed

Lines changed: 14 additions & 2 deletions

File tree

  • apps/sim/app/api/auth/sso/register

apps/sim/app/api/auth/sso/register/route.ts

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1+
import { db, member } from '@sim/db'
12
import { createLogger } from '@sim/logger'
3+
import { and, eq } from 'drizzle-orm'
24
import { type NextRequest, NextResponse } from 'next/server'
35
import { z } from 'zod'
46
import { auth, getSession } from '@/lib/auth'
@@ -112,6 +114,17 @@ export async function POST(request: NextRequest) {
112114
const body = parseResult.data
113115
const { providerId, issuer, domain, providerType, mapping, orgId } = body
114116

117+
if (orgId) {
118+
const [membership] = await db
119+
.select({ organizationId: member.organizationId })
120+
.from(member)
121+
.where(and(eq(member.userId, session.user.id), eq(member.organizationId, orgId)))
122+
.limit(1)
123+
if (!membership) {
124+
return NextResponse.json({ error: 'Forbidden' }, { status: 403 })
125+
}
126+
}
127+
115128
const headers: Record<string, string> = {}
116129
request.headers.forEach((value, key) => {
117130
headers[key] = value
@@ -349,7 +362,7 @@ export async function POST(request: NextRequest) {
349362
})
350363

351364
const spMetadataXml = `<?xml version="1.0" encoding="UTF-8"?>
352-
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" entityID="${escapeXml(issuer)}">
365+
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" entityID="${escapeXml(getBaseUrl())}">
353366
<md:SPSSODescriptor AuthnRequestsSigned="false" WantAssertionsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
354367
<md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="${escapeXml(computedCallbackUrl)}" index="1"/>
355368
</md:SPSSODescriptor>
@@ -436,7 +449,6 @@ export async function POST(request: NextRequest) {
436449
{
437450
error: 'Failed to register SSO provider',
438451
details: error instanceof Error ? error.message : 'Unknown error',
439-
fullError: JSON.stringify(error),
440452
},
441453
{ status: 500 }
442454
)

0 commit comments

Comments
 (0)