@@ -81,8 +81,9 @@ export default function SecurityView() {
8181
8282 const enforceVirtualKeyChanged = localConfig . enforce_governance_header !== config . enforce_governance_header ;
8383 const allowDirectKeysChanged = localConfig . allow_direct_keys !== config . allow_direct_keys ;
84+ const enforceSCIMAuthChanged = localConfig . enforce_scim_auth !== config . enforce_scim_auth ;
8485
85- return originsChanged || headersChanged || authChanged || enforceVirtualKeyChanged || allowDirectKeysChanged ;
86+ return originsChanged || headersChanged || authChanged || enforceVirtualKeyChanged || allowDirectKeysChanged || enforceSCIMAuthChanged ;
8687 } , [ config , localConfig , authConfig , bifrostConfig ] ) ;
8788
8889 const needsRestart = useMemo ( ( ) => {
@@ -96,7 +97,9 @@ export default function SecurityView() {
9697 const serverHeaders = config . allowed_headers ?. slice ( ) . sort ( ) . join ( "," ) ;
9798 const headersChanged = localHeaders !== serverHeaders ;
9899
99- return originsChanged || headersChanged ;
100+ const enforceSCIMAuthChanged = localConfig . enforce_scim_auth !== config . enforce_scim_auth ;
101+
102+ return originsChanged || headersChanged || enforceSCIMAuthChanged ;
100103 } , [ config , localConfig ] ) ;
101104
102105 const handleAllowedOriginsChange = useCallback ( ( value : string ) => {
@@ -268,6 +271,25 @@ export default function SecurityView() {
268271 />
269272 </ div >
270273 ) }
274+ { /* Enforce SCIM Auth on Inference (Enterprise Only) */ }
275+ { IS_ENTERPRISE && (
276+ < div className = "flex items-center justify-between space-x-2 rounded-lg border p-4" >
277+ < div className = "space-y-0.5" >
278+ < label htmlFor = "enforce-scim-auth" className = "text-sm font-medium" >
279+ Enforce SCIM Auth on Inference
280+ </ label >
281+ < p className = "text-muted-foreground text-sm" >
282+ Require authentication (API keys or SCIM/OAuth tokens) for all inference endpoints. When enabled, unauthenticated requests
283+ to chat completions, embeddings, etc. will be rejected.
284+ </ p >
285+ </ div >
286+ < Switch
287+ id = "enforce-scim-auth"
288+ checked = { localConfig . enforce_scim_auth }
289+ onCheckedChange = { ( checked ) => handleConfigChange ( "enforce_scim_auth" , checked ) }
290+ />
291+ </ div >
292+ ) }
271293 { /* Allow Direct API Keys */ }
272294 < div className = "flex items-center justify-between space-x-2 rounded-lg border p-4" >
273295 < div className = "space-y-0.5" >
0 commit comments