- Primeros pasos
- Requisitos
- Mejores prácticas
- Instalación
- Actualizando
- Servidor de identidad
- Solución de problemas de errores de inicio
Identity Server AppSettings.json
appsettings.json
(C:\Program Files (x86)\UiPath\Orchestrator\Identity
) contiene los ajustes de configuración listos para usarse para Identity Server. Un segundo archivo idéntico, appsettings.Production.json
, es el que contiene tu configuración específica de Identity Server.
-
Para configurar Identity Server a tu gusto, debes modificar el archivo
appsettings.Production.json
. Este archivo anula cualquier configuración preexistente dentro deappsettings.json
después de cada proceso de instalación. -
Si utilizas las versiones 2023.4 y posteriores y has modificado
applicationhost.config
añadiendoX-Content-Type-Options
, debes eliminarlo del archivo Identityappsettings.Production.json
. Consulta el siguiente ejemplo:<?xml version="1.0" encoding="utf-8"?> <configuration> <location path="." inheritInChildApplications="false"> <system.webServer> <httpProtocol> <customHeaders> <remove name="X-Powered-By" /> <!-- <add name="X-Content-Type-Options" value="nosniff" /> --> </customHeaders>
<?xml version="1.0" encoding="utf-8"?> <configuration> <location path="." inheritInChildApplications="false"> <system.webServer> <httpProtocol> <customHeaders> <remove name="X-Powered-By" /> <!-- <add name="X-Content-Type-Options" value="nosniff" /> --> </customHeaders>
Recomendamos que solo los administradores cambien los valores de estos parámetros.
appsettings.Production.json
configuración en cualquier caso.
Los parámetros que no se documentan en esta página no deben cambiarse.
Todos los parámetros distinguen entre mayúsculas y minúsculas.
Puedes cambiar la configuración en varios lugares. Aquí se muestran las prioridades que utiliza Identity Server al determinar el valor de una configuración, desde la alta (1) hasta la baja (3):
- Valor dentro del archivo
appsettings.Production.json
- Valor dentro del archivo
appsettings.json
- Valor predeterminado establecido en el código. Solo se utiliza si no se puede encontrar una configuración específica dentro de
appsettings.Production.json
oappsettings.json
.
appsettings.json
tiene una estructura interna compuesta de varias secciones JSON separadas por una coma.
ConnectionStrings
se utiliza para almacenar la cadena de conexión de la base de datos de Identity Server. El instalador es quien rellena este valor.
appsettings.Production.json
y appsettings.json
.
"ConnectionStrings": { "DefaultConnection": "Server=.\\sqlexpress;Database=IdentityServer;User ID=<username>;Password=<password>;" }
"ConnectionStrings": { "DefaultConnection": "Server=.\\sqlexpress;Database=IdentityServer;User ID=<username>;Password=<password>;" }
EncryptionSettings
sección se utiliza para almacenar las claves de cifrado de los tenants. Los valores se migrarán automáticamente desde UiPath.Orchestrator.dll.config
de Orchestrator durante la instalación.
appsettings.Production.json
y appsettings.json
.
"EncryptionSettings": {
"EncryptionKey": "3wkO1hkaXLwR9LZoRZIueIxG3GIEB/YMDZUWhD9AR8g="
}
"EncryptionSettings": {
"EncryptionKey": "3wkO1hkaXLwR9LZoRZIueIxG3GIEB/YMDZUWhD9AR8g="
}
Identity Server puede configurarse para utilizar una clave local (ver más arriba) o una Azure Key Vault (ver más abajo), igual que Orchestrator.
"EncryptionSettings": {
"MultiTenantEncryptionKeyProvider": "AzureKeyVault",
"EncryptionKeyPerTenant": true,
"AzureKeyVaultAddress": "keyVaultAddress",
"AzureKeyVaultCertificateThumbprint": "keyvaultCertificateThumbprint",
"AzureKeyVaultClientId" : "azureClientId"
},
"EncryptionSettings": {
"MultiTenantEncryptionKeyProvider": "AzureKeyVault",
"EncryptionKeyPerTenant": true,
"AzureKeyVaultAddress": "keyVaultAddress",
"AzureKeyVaultCertificateThumbprint": "keyvaultCertificateThumbprint",
"AzureKeyVaultClientId" : "azureClientId"
},
MultiTenantEncryptionKeyProvider
: indica en qué aplicación de administración de claves almacenar las claves de cifrado generadas por tenant desde Orchestrator. De forma predeterminada, esta configuración tiene el valorConfigFileKey
como parte del código. Los valores aceptados sonAzureKeyVault
yConfigFileKey
. Durante la instalación de Identity Server, el valor se copiará desde la configuraciónEncryptionKeyPerTenant.KeyProvider
de UiPath.Orchestrator.dll.config.
UiPath.Orchestrator.dll.config
de:
Clave de Identity Server |
Clave de Orchestrator |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
UiPath.Orchestrator.dll.config
se ha establecido como LocalMachine
, asegúrate de que AzureKeyVaultCertificateStoreLocation
en appsettings.Production.json
tenga el mismo valor.
UiPath.Orchestrator.dll.config
Orchestrator, también deberás actualizar de Identity Server appsettings.Production.json
con los mismos valores.
Logging
configura el nivel de registro de cada componente utilizado por Identity Server. Esta es una configuración de registro genérica.Más información aquí.
appsettings.json
.
"Logging": {
"LogLevel": {
"Default": "Trace",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
}
"Logging": {
"LogLevel": {
"Default": "Trace",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
}
Microsoft
y Microsoft.Hosting.Lifetime
.
NLog
se utiliza para definir cómo se registra la información en Identity Server a través de los valores de destino de NLog, igual que en Orchestrator.
appsettings.json
.
json
"NLog": {
"IncludeScopes": true,
"throwConfigExceptions": false,
"targets": {
"EventLog": {
"type": "EventLog",
"source": "IdentityService",
"layout": "${longdate} ${logger} ${message}${onexception:${newline}${exception:maxInnerExceptionLevel=10:format=shortType,message,stacktrace:separator=*:innerExceptionSeparator=
	}}"
}
},
"rules": [
{
"logger": "*",
"minLevel": "Info",
"writeTo": "EventLog"
}
]
},
json
"NLog": {
"IncludeScopes": true,
"throwConfigExceptions": false,
"targets": {
"EventLog": {
"type": "EventLog",
"source": "IdentityService",
"layout": "${longdate} ${logger} ${message}${onexception:${newline}${exception:maxInnerExceptionLevel=10:format=shortType,message,stacktrace:separator=*:innerExceptionSeparator=
	}}"
}
},
"rules": [
{
"logger": "*",
"minLevel": "Info",
"writeTo": "EventLog"
}
]
},
De forma predeterminada, NLog se configura para escribir registros en ApplicationEvents. Aquí podrás encontrar más información sobre cómo configurar NLog utilizando una sección JSON.
AppSettings
es la sección de configuración principal de Identity Server. Esta sección tiene valores dentro de appsettings.Production.json
y appsettings.json
.
-
IdentityServerAddress
: representa la audiencia que Identity Server comprueba cuando valida el token utilizado para llamar a la API de Identity Server. Durante la instalación, este campo se rellenará automáticamente dentro deappsettings.Production.json
con la dirección de Identity Server. No modifiques este valor, ya que se rompería la propagación de datos de Orchestrator.Esta configuración tiene valores dentro deappsettings.Production.json
yappsettings.json
.Nota: Asegúrate de proporcionar una URL en minúsculas como valor paraIdentityServerAddress
; de lo contrario, se produce un error. -
Saml2ValidCertificateOnly
: si se establece entrue
, no permite el uso de certificados no válidos al configurar SAML2.De forma predeterminada, esta configuración tiene el valortrue
dentro del código. -
EnablePII
: si se establece entrue
, las excepciones contendrán información confidencial (por ejemplo, la dirección URL del proveedor de identidades externo o la dirección de Identity Server, etc).De forma predeterminada, esta configuración tiene el valorfalse
dentro deappsettings.json
y el código. HideErrorCodesInUi
: controla si se muestran o no los códigos de error de inicio de sesión en la IU. Este parámetro no se muestra por defecto. El valor predeterminado esfalse
. Establécelo entrue
para ocultar los códigos de error de inicio de sesión desde la IU. Por ejemplo,"HideErrorCodesInUi": true
.-
CookieValidationInterval
: representa el intervalo de tiempo (en segundos) tras el cual se comprueba la cookie para ver si el usuario y el tenant aún están activos, y si el usuario no ha iniciado sesión en otro navegador. El valor dentro deappsetttings.Production.json
se migrará automáticamente desde Orchestrator, que tiene la misma configuración.De forma predeterminada, el valor está establecido en60
segundos dentro deappsettings.Production.json
y el código. -
CookieExpireMinutes
: representa el intervalo de tiempo (en minutos) tras el cual caducará la cookie de Identity Server. El valor dentro deappsetttings.Production.json
se migrará automáticamente desde Orchestrator, que tiene la misma configuración.De forma predeterminada, el valor está establecido en30
minutos dentro deappsettings.Production.json
y el código. -
OrchestratorUrl
: representa la URL del Orchestrator. Aquí es donde Identity Server te redirige al hacer clic en el icono de Orchestrator dentro del menú Hub del Identity Management Portal.El valor está establecido durante la instalación dentro deappsettings.Production.json
.Nota: Asegúrate de proporcionar una URL en minúsculas como valor paraOrchestratorUrl
; de lo contrario, se produce un error."AppSettings": { "IdentityServerAddress": "https://myIdentity.domain.local/identity", "EnablePII": false, "HideErrorCodesInUi": true, "CookieExpireMinutes": 30, "OrchestratorUrl": "https://myOrchestratorURL.domain.local" } }
"AppSettings": { "IdentityServerAddress": "https://myIdentity.domain.local/identity", "EnablePII": false, "HideErrorCodesInUi": true, "CookieExpireMinutes": 30, "OrchestratorUrl": "https://myOrchestratorURL.domain.local" } }
LocalizationSettings
tiene los siguientes valores predeterminados dentro del código:
"LocalizationSettings": {
"EnabledLanguages": "en,ja,de,es,es-MX,fr,ko,pt,pt-BR,ru,tr,zh-CN"
}
"LocalizationSettings": {
"EnabledLanguages": "en,ja,de,es,es-MX,fr,ko,pt,pt-BR,ru,tr,zh-CN"
}
EnabledLanguages
: muestra los idiomas disponibles en Identity Server. Se utiliza para limitar el número de idiomas disponibles.
LoadBalancerSettings
tiene los siguientes valores predeterminados dentro de appsettings.Production.json
y el código:
"LoadBalancerSettings": {
"RedisConnectionString": "",
"SlidingExpirationTimeInSeconds": 600
}
"LoadBalancerSettings": {
"RedisConnectionString": "",
"SlidingExpirationTimeInSeconds": 600
}
appsetttings.Production.json
se migrarán automáticamente desde UiPath.Orchestrator.dll.config
de Orchestrator en caso de una actualización multinodo. Si Redis no está configurado dentro de Orchestrator, appsettings.Production.json
contendrá esta configuración.
-
RedisConnectionString
: solo se puede utilizar siLoadBalancer.UseRedis
está establecido entrue
.Una cadena de conexión que te permite configurar tu servidor Redis, que contiene la URL del servidor, la contraseña y el puerto utilizado con Redis.También es posible habilitar las conexiones cifradas de SSL entre los nodos de Orchestrator y el servicio Redis. Para obtener más información, haz clic aquí. Ejemplos:- con SSL habilitado:n
"RedisConnectionString": A"DOCWREDIS02:6379,password=12345678,ssl=true"
- sin SSL habilitado:
"RedisConnectionString": "DOCWREDIS02:6379,password=12345678"
- con SSL habilitado:n
SlidingExpirationTimeInSeconds
: controla el tiempo de vencimiento de desplazamiento de un elemento dentro de la caché. Este tiempo de vencimiento se aplica tanto para la caché de Redis como para la caché de InMemory (comportamiento predeterminado si Redis no está disponible).
RedisSettings
controla qué cachés están habilitadas.
UseRedisStoreCache
: establece su valor entrue
para habilitar la caché de Redis de los datos del cliente de OAuth. Esto ayuda a evitar problemas de rendimiento cuando se utiliza el inicio de sesión interactivo para conectar una gran cantidad de robots en un breve periodo de tiempo. Esta caché utiliza la misma cadena de conexión de Redis especificada enLoadBalancerSettings
. La configuraciónUseRedisStoreCache
no se muestra de forma predeterminada.
UseRedisStoreClientCache
: establece su valor entrue
para habilitar el almacenamiento en caché de Redis para clientes propios (aplicaciones de UiPath) o clientes de terceros (aplicaciones externas). Si tiene una implementación a gran escala, se recomienda habilitar este marcador.
SigningCredentialSettings
describe la ubicación del certificado utilizado para firmar los tokens generados por Identity Server. El instalador rellena los valores de la configuración de esta sección según tus datos de entrada. Puede configurarse para permitir la lectura del certificado desde un almacén de certificados o desde Azure Key Vault.
Configuración de la rotación de certificados
ValidationKeys
: utilízalo para indicar Name
, Location
, y NameType
de tu segundo certificado. Esto es necesario para la rotación de certificados.
Por motivos de seguridad, el certificado de firma debe tener una clave pública de 2048 bits. Asegúrate de que el certificado sea válido, no haya expirado y de que Identity Server tenga acceso a la clave privada.
SigningCredentialSettings
sección para asegurarte de que siempre utilizas un certificado dentro de su periodo de validez.
Ejemplo de configuración de ubicación del almacén de certificados
Aquí se muestra una configuración clásica para encontrar un certificado dentro del almacén de certificados:
"SigningCredentialSettings": {
"StoreLocation": {
"Name": "30f3c11e676fc8eb1f9dd4e330f3ce668d796796",
"Location": "LocalMachine",
"NameType": "Thumbprint"
}
"SigningCredentialSettings": {
"StoreLocation": {
"Name": "30f3c11e676fc8eb1f9dd4e330f3ce668d796796",
"Location": "LocalMachine",
"NameType": "Thumbprint"
}
Name
representa un valor de huella digital.
Location
y NameType
.
Ejemplo de configuración de ubicación de Azure Key Vault
"SigningCredentialSettings": {
"AzureKeyVaultLocation": {
"KeyName": "key_name_534553553"
}
"SigningCredentialSettings": {
"AzureKeyVaultLocation": {
"KeyName": "key_name_534553553"
}
KeyName
representa la clave que se busca dentro de Azure Key Vault.
-
RestrictBasicAuthentication
: te permite controlar si los usuarios pueden iniciar sesión en una instancia de Orchestrator utilizando las credenciales de autenticación básicas. Esta configuración no se muestra por defecto enappsettings.Production.json
. Están disponibles los siguientes valores:true
: los usuarios no pueden iniciar sesión utilizando las credenciales de autenticación básicas.false
: los usuarios pueden iniciar sesión utilizando las credenciales de autenticación básicas. Este es el valor predeterminado.
-
EnableBasicAuthenticationForHostTenant
: te permite controlar si un administrador de host puede iniciar sesión en el tenant de host de una instancia de Orchestrator utilizando las credenciales de autenticación básicas. Esta configuración no se muestra por defecto en el archivoappsettings.Production.json
. Están disponibles los siguientes valores:true
: el administrador de host puede iniciar sesión utilizando las credenciales de autenticación básicas. Este es el valor predeterminado.false
: el administrador de host no puede iniciar sesión utilizando las credenciales de autenticación básicas.
RestrictBasicAuthentication
, lo que significa que, si estableces EnableBasicAuthenticationForHostTenant
en true
y RestrictBasicAuthentication
en true
, podrás iniciar sesión con las credenciales de autenticación básicas en el nivel de host.