mirror of
https://github.com/NVIDIA/OpenShell.git
synced 2026-10-02 07:34:45 +08:00
* refactor(inference): remove managed inference routes Closes #3172 Remove the inference route control plane, inference.local data path, built-in router crate, and SDK surface. Move inference workloads to explicitly imported provider profiles and native endpoints, with migration cleanup and updated tests and documentation. Signed-off-by: John Myers <9696606+johntmyers@users.noreply.github.com> * fix(policy): preserve alternate upstream isolation Restore the provider policy activation guard so legacy OpenAI and Anthropic providers configured for alternate base URLs do not grant egress to the built-in public vendor endpoints. Signed-off-by: John Myers <9696606+johntmyers@users.noreply.github.com> --------- Signed-off-by: John Myers <9696606+johntmyers@users.noreply.github.com>
395 lines
11 KiB
JSON
395 lines
11 KiB
JSON
{
|
|
"realm": "openshell",
|
|
"enabled": true,
|
|
"sslRequired": "none",
|
|
"registrationAllowed": false,
|
|
"loginWithEmailAllowed": true,
|
|
"duplicateEmailsAllowed": false,
|
|
"resetPasswordAllowed": false,
|
|
"editUsernameAllowed": false,
|
|
"bruteForceProtected": false,
|
|
"accessTokenLifespan": 300,
|
|
"ssoSessionIdleTimeout": 1800,
|
|
"ssoSessionMaxLifespan": 36000,
|
|
"offlineSessionIdleTimeout": 2592000,
|
|
"roles": {
|
|
"realm": [
|
|
{
|
|
"name": "openshell-admin",
|
|
"description": "Full administrative access to OpenShell"
|
|
},
|
|
{
|
|
"name": "openshell-user",
|
|
"description": "Standard user access to OpenShell"
|
|
}
|
|
]
|
|
},
|
|
"defaultRoles": ["openshell-user"],
|
|
"clientScopes": [
|
|
{
|
|
"name": "openid",
|
|
"description": "OpenID Connect scope",
|
|
"protocol": "openid-connect",
|
|
"attributes": {
|
|
"include.in.token.scope": "true"
|
|
},
|
|
"protocolMappers": [
|
|
{
|
|
"name": "sub",
|
|
"protocol": "openid-connect",
|
|
"protocolMapper": "oidc-sub-mapper",
|
|
"consentRequired": false,
|
|
"config": {
|
|
"introspection.token.claim": "true",
|
|
"access.token.claim": "true"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "profile",
|
|
"description": "OpenID Connect built-in scope: profile",
|
|
"protocol": "openid-connect",
|
|
"attributes": {
|
|
"include.in.token.scope": "true"
|
|
},
|
|
"protocolMappers": [
|
|
{
|
|
"name": "preferred_username",
|
|
"protocol": "openid-connect",
|
|
"protocolMapper": "oidc-usermodel-attribute-mapper",
|
|
"consentRequired": false,
|
|
"config": {
|
|
"user.attribute": "username",
|
|
"claim.name": "preferred_username",
|
|
"jsonType.label": "String",
|
|
"id.token.claim": "true",
|
|
"access.token.claim": "true",
|
|
"userinfo.token.claim": "true"
|
|
}
|
|
},
|
|
{
|
|
"name": "given name",
|
|
"protocol": "openid-connect",
|
|
"protocolMapper": "oidc-usermodel-attribute-mapper",
|
|
"consentRequired": false,
|
|
"config": {
|
|
"user.attribute": "firstName",
|
|
"claim.name": "given_name",
|
|
"jsonType.label": "String",
|
|
"id.token.claim": "true",
|
|
"access.token.claim": "true",
|
|
"userinfo.token.claim": "true"
|
|
}
|
|
},
|
|
{
|
|
"name": "family name",
|
|
"protocol": "openid-connect",
|
|
"protocolMapper": "oidc-usermodel-attribute-mapper",
|
|
"consentRequired": false,
|
|
"config": {
|
|
"user.attribute": "lastName",
|
|
"claim.name": "family_name",
|
|
"jsonType.label": "String",
|
|
"id.token.claim": "true",
|
|
"access.token.claim": "true",
|
|
"userinfo.token.claim": "true"
|
|
}
|
|
},
|
|
{
|
|
"name": "full name",
|
|
"protocol": "openid-connect",
|
|
"protocolMapper": "oidc-full-name-mapper",
|
|
"consentRequired": false,
|
|
"config": {
|
|
"id.token.claim": "true",
|
|
"access.token.claim": "true",
|
|
"userinfo.token.claim": "true"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "email",
|
|
"description": "OpenID Connect built-in scope: email",
|
|
"protocol": "openid-connect",
|
|
"attributes": {
|
|
"include.in.token.scope": "true"
|
|
},
|
|
"protocolMappers": [
|
|
{
|
|
"name": "email",
|
|
"protocol": "openid-connect",
|
|
"protocolMapper": "oidc-usermodel-attribute-mapper",
|
|
"consentRequired": false,
|
|
"config": {
|
|
"user.attribute": "email",
|
|
"claim.name": "email",
|
|
"jsonType.label": "String",
|
|
"id.token.claim": "true",
|
|
"access.token.claim": "true",
|
|
"userinfo.token.claim": "true"
|
|
}
|
|
},
|
|
{
|
|
"name": "email verified",
|
|
"protocol": "openid-connect",
|
|
"protocolMapper": "oidc-usermodel-attribute-mapper",
|
|
"consentRequired": false,
|
|
"config": {
|
|
"user.attribute": "emailVerified",
|
|
"claim.name": "email_verified",
|
|
"jsonType.label": "boolean",
|
|
"id.token.claim": "true",
|
|
"access.token.claim": "true",
|
|
"userinfo.token.claim": "true"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "roles",
|
|
"description": "OpenID Connect scope for roles",
|
|
"protocol": "openid-connect",
|
|
"attributes": {
|
|
"include.in.token.scope": "false"
|
|
},
|
|
"protocolMappers": [
|
|
{
|
|
"name": "realm roles",
|
|
"protocol": "openid-connect",
|
|
"protocolMapper": "oidc-usermodel-realm-role-mapper",
|
|
"consentRequired": false,
|
|
"config": {
|
|
"multivalued": "true",
|
|
"claim.name": "realm_access.roles",
|
|
"jsonType.label": "String",
|
|
"id.token.claim": "true",
|
|
"access.token.claim": "true",
|
|
"userinfo.token.claim": "true"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "web-origins",
|
|
"description": "OpenID Connect scope for allowed web origins",
|
|
"protocol": "openid-connect",
|
|
"attributes": {
|
|
"include.in.token.scope": "false"
|
|
},
|
|
"protocolMappers": [
|
|
{
|
|
"name": "allowed web origins",
|
|
"protocol": "openid-connect",
|
|
"protocolMapper": "oidc-allowed-origins-mapper",
|
|
"consentRequired": false,
|
|
"config": {}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "acr",
|
|
"description": "OpenID Connect scope for ACR",
|
|
"protocol": "openid-connect",
|
|
"attributes": {
|
|
"include.in.token.scope": "false"
|
|
}
|
|
},
|
|
{
|
|
"name": "sandbox:read",
|
|
"description": "Read sandbox resources",
|
|
"protocol": "openid-connect",
|
|
"attributes": {
|
|
"include.in.token.scope": "true",
|
|
"display.on.consent.screen": "true"
|
|
}
|
|
},
|
|
{
|
|
"name": "sandbox:write",
|
|
"description": "Write sandbox resources",
|
|
"protocol": "openid-connect",
|
|
"attributes": {
|
|
"include.in.token.scope": "true",
|
|
"display.on.consent.screen": "true"
|
|
}
|
|
},
|
|
{
|
|
"name": "provider:read",
|
|
"description": "Read provider resources",
|
|
"protocol": "openid-connect",
|
|
"attributes": {
|
|
"include.in.token.scope": "true",
|
|
"display.on.consent.screen": "true"
|
|
}
|
|
},
|
|
{
|
|
"name": "provider:write",
|
|
"description": "Write provider resources",
|
|
"protocol": "openid-connect",
|
|
"attributes": {
|
|
"include.in.token.scope": "true",
|
|
"display.on.consent.screen": "true"
|
|
}
|
|
},
|
|
{
|
|
"name": "config:read",
|
|
"description": "Read configuration resources",
|
|
"protocol": "openid-connect",
|
|
"attributes": {
|
|
"include.in.token.scope": "true",
|
|
"display.on.consent.screen": "true"
|
|
}
|
|
},
|
|
{
|
|
"name": "config:write",
|
|
"description": "Write configuration resources",
|
|
"protocol": "openid-connect",
|
|
"attributes": {
|
|
"include.in.token.scope": "true",
|
|
"display.on.consent.screen": "true"
|
|
}
|
|
},
|
|
{
|
|
"name": "workspace:read",
|
|
"description": "Read workspace resources",
|
|
"protocol": "openid-connect",
|
|
"attributes": {
|
|
"include.in.token.scope": "true",
|
|
"display.on.consent.screen": "true"
|
|
}
|
|
},
|
|
{
|
|
"name": "workspace:write",
|
|
"description": "Write workspace resources",
|
|
"protocol": "openid-connect",
|
|
"attributes": {
|
|
"include.in.token.scope": "true",
|
|
"display.on.consent.screen": "true"
|
|
}
|
|
},
|
|
{
|
|
"name": "openshell:all",
|
|
"description": "Full access to all OpenShell resources",
|
|
"protocol": "openid-connect",
|
|
"attributes": {
|
|
"include.in.token.scope": "true",
|
|
"display.on.consent.screen": "true"
|
|
}
|
|
}
|
|
],
|
|
"clients": [
|
|
{
|
|
"clientId": "openshell-cli",
|
|
"name": "OpenShell CLI",
|
|
"description": "Public client for interactive CLI login (Authorization Code + PKCE)",
|
|
"enabled": true,
|
|
"publicClient": true,
|
|
"standardFlowEnabled": true,
|
|
"directAccessGrantsEnabled": true,
|
|
"serviceAccountsEnabled": false,
|
|
"redirectUris": ["http://127.0.0.1:*", "http://localhost:*"],
|
|
"webOrigins": ["http://127.0.0.1:*", "http://localhost:*"],
|
|
"attributes": {
|
|
"pkce.code.challenge.method": "S256"
|
|
},
|
|
"protocol": "openid-connect",
|
|
"fullScopeAllowed": true,
|
|
"protocolMappers": [
|
|
{
|
|
"name": "openshell-cli audience",
|
|
"protocol": "openid-connect",
|
|
"protocolMapper": "oidc-audience-mapper",
|
|
"consentRequired": false,
|
|
"config": {
|
|
"included.client.audience": "openshell-cli",
|
|
"id.token.claim": "true",
|
|
"access.token.claim": "true",
|
|
"introspection.token.claim": "true"
|
|
}
|
|
}
|
|
],
|
|
"defaultClientScopes": ["openid", "profile", "email", "roles", "web-origins", "acr"],
|
|
"optionalClientScopes": ["sandbox:read", "sandbox:write", "provider:read", "provider:write", "config:read", "config:write", "workspace:read", "workspace:write", "openshell:all"]
|
|
},
|
|
{
|
|
"clientId": "openshell-ci",
|
|
"name": "OpenShell CI",
|
|
"description": "Confidential client for CI/automation (Client Credentials grant)",
|
|
"enabled": true,
|
|
"publicClient": false,
|
|
"secret": "ci-test-secret",
|
|
"standardFlowEnabled": false,
|
|
"directAccessGrantsEnabled": false,
|
|
"serviceAccountsEnabled": true,
|
|
"protocol": "openid-connect",
|
|
"fullScopeAllowed": true,
|
|
"protocolMappers": [
|
|
{
|
|
"name": "openshell-ci audience",
|
|
"protocol": "openid-connect",
|
|
"protocolMapper": "oidc-audience-mapper",
|
|
"consentRequired": false,
|
|
"config": {
|
|
"included.client.audience": "openshell-cli",
|
|
"id.token.claim": "true",
|
|
"access.token.claim": "true",
|
|
"introspection.token.claim": "true"
|
|
}
|
|
}
|
|
],
|
|
"defaultClientScopes": ["openid", "profile", "email", "roles", "web-origins", "acr", "openshell:all"]
|
|
}
|
|
],
|
|
"users": [
|
|
{
|
|
"username": "admin@test",
|
|
"email": "admin@test",
|
|
"emailVerified": true,
|
|
"enabled": true,
|
|
"firstName": "Admin",
|
|
"lastName": "User",
|
|
"credentials": [
|
|
{
|
|
"type": "password",
|
|
"value": "admin",
|
|
"temporary": false
|
|
}
|
|
],
|
|
"realmRoles": ["openshell-admin", "openshell-user"]
|
|
},
|
|
{
|
|
"username": "user@test",
|
|
"email": "user@test",
|
|
"emailVerified": true,
|
|
"enabled": true,
|
|
"firstName": "Regular",
|
|
"lastName": "User",
|
|
"credentials": [
|
|
{
|
|
"type": "password",
|
|
"value": "user",
|
|
"temporary": false
|
|
}
|
|
],
|
|
"realmRoles": ["openshell-user"]
|
|
},
|
|
{
|
|
"username": "user-b@test",
|
|
"email": "user-b@test",
|
|
"emailVerified": true,
|
|
"enabled": true,
|
|
"firstName": "Second",
|
|
"lastName": "User",
|
|
"credentials": [
|
|
{
|
|
"type": "password",
|
|
"value": "user-b",
|
|
"temporary": false
|
|
}
|
|
],
|
|
"realmRoles": ["openshell-user"]
|
|
}
|
|
]
|
|
}
|