Navision Business Central Tipo de credencial NavUserPassword

Si viene aquí porque acaba de configurar un nuevo cliente web/servicio web y recibe el mensaje de error „Error al acceder al sitio web Type: System:Error al acceder al sitio web Si recibe el tipo System.UnauthorizedAccessException, desplace la página rápidamente hacia abajo, allí encontrará la solución.

¡ATENCIÓN! ¿Necesita realmente los servicios de cliente que requiere un certificado? Tal vez solo necesite SOAP, OData o la ManagementConsole para NavUserPassword; entonces simplemente desactive los servicios de cliente y ya no necesitará un certificado ni un CertificateThumbNail.

El cliente web de Business Central o Navision ha crecido desde la versión 2018. Y sigue creciendo. Desde entonces, apenas ha habido una buena razón para utilizar el cliente de Windows. Por lo tanto, desde Business Central 2019 (Nav Fall Release 2018) (BC15) ya no existe un cliente Windows. Simplemente abra un navegador, introduzca la URL y empiece a trabajar con Navision o Business Central inmediatamente. Por cierto, incluso más allá de las fronteras de la empresa: ¡el cliente web sustituye completamente el acceso remoto como cliente RDP (Remote Desktop Protocol), Teamviewer, VNC y otras tecnologías de acceso remoto!

Dentro de un dominio de Windows, el inicio de sesión a través de Windows sigue siendo el método más cómodo y Navision lo admite de serie. Simplemente instale Navision y Business Central como se describe aquí y ya está. Especialmente con el cliente web. Si el navegador le pide datos de acceso: simplemente introduzca los datos de acceso de Windows y listo.

Pero, ¿y si quieres utilizar el cliente de forma remota, fuera de una VPN, fuera de un dominio de Windows? Entonces no hay que introducir datos de acceso a Windows. Nada más fácil: Cambie Navision al tipo de credencial NavUserPassword y... ¡ nada funciona!

La solución se encuentra rápidamente en el Visor de sucesos: ¡Navision requiere ahora un certificado! El visor de sucesos informa del error:

Instancia del servidor: xxxx
Tipo: Microsoft.Dynamics.Nav.Types.NavConfigurationException
SuprimirMensaje: False
ContieneInformaciónPersonalOrRestringida: Falso
DiagnósticoSuprimir: Falso
MensajeSinInformaciónPrivada: No se ha encontrado el certificado con la huella digital en la memoria de CurrentUser o LocalMachine.
Microsoft.Dynamics.Nav.Types.CertificateHelper.FindCertificateFromThumbprint(String certificateThumbprint)


Microsoft quiere proteger aquí al usuario de sí mismo, y en esta constelación sólo autentica a través de un certificado. Independientemente de si quieres o necesitas este nivel de seguridad adicional. Así que arremángate y listo. También muy fácil desde 2018 gracias a los nuevos scripts de Powershell. ¡El baile de brujas con makecert.exe ya no es necesario!

¡Atención! ¡Importante! La siguiente generación de certificados crea un certificado autofirmado, tal y como lo hacía makecert.exe anteriormente. Esto funciona para la tarea aquí descrita. Sin embargo, ¡no funciona si desea publicar en Internet los servicios web de Navision o Business Central, que están muy relacionados con el tema! En este caso, necesita absolutamente un certificado firmado públicamente, como puede obtener de varios emisores y también de LetsEncrypt.

Nota: También puede utilizar cualquier otro certificado disponible, en cuyo caso simplemente omita los pasos para crear un nuevo certificado autofirmado. De lo contrario, lo más sencillo es realizar los siguientes pasos en el servidor de base de datos Business Central o Navision.

¡Atención! La siguiente parte está desactualizada. Desde Windows 11 y Windows Server 2022, ya hay un cmdlet integrado nuevo, ¡ya NO es necesario descargar nada de ninguna parte previamente! Por favor, baje a „Crear certificado con el nuevo Windows“

Preparación: Necesitas el script Powershell New-SelfSignedCertificateEx, que puedes encontrar aquí :

descargue y descomprima este archivo, por ejemplo en c:\Temp. He adjuntado el script aquí pero por supuesto recomiendo descargarlo directamente de Microsoft.

  1. Inicie Powershell en modo administrador
  2. cambie a c:\temp (o donde haya guardado el script)
    (Consejo: puede escribir sólo las primeras letras de la mayoría de los comandos y luego completarlos con la tecla TAB)
    Set-ExecutionPolicy RemoteSigned
    Confirme la consulta con Y
  3. Importar módulos.\NNNuevo-CertificadoAutofirmadoEx.ps1
  4. New-SelfSignedCertificateEx -Subject „CN=Navision-Service“ -IsCA $True -Exportable -StoreLocation LocalMachine -FriendlyName „NavUserAndPassword“ -NotAfter $([datetime]::now.AddYears(5))

Por supuesto, puede cambiar los marcadores de posición para el nombre del certificado y la contraseña como desee.
"Navision service" se refiere al nombre del servidor. Al final de estas instrucciones encontrará una opción para cambiar este nombre a través de los archivos de configuración. Recomendación: Introduzca aquí la DnsIdentiy correcta¡! (nombre del ordenador al instalar Business Central o Navision).

Crear certificado con un nuevo Windows

El scriptlet / cmdlet ahora se llama

$certname = „Navision-Api“ ## Sustituye {certificateName} por el nombre de tu instancia de Nav-Service
$cert = New-SelfSignedCertificate -Subject „CN=$Navision-Api“ -CertStoreLocation „Cert:\CurrentUser\My“ -KeyExportPolicy Exportable -KeySpec Signature -KeyLength 2048 -KeyAlgorithm RSA -HashAlgorithm SHA256

Ahora encontrará este certificado a través de (Menú Inicio ->) certmgr.msc Certificados - Usuario actual / Certificados personales / Certificados

Ahora, mueva este certificado a la carpeta de certificados „Entidades de certificación raíz de confianza / Certificados“:


No cierre el intérprete de comandos después de la llamada, todavía necesita la huella digital.
Este comando crea un nuevo certificado en el almacén de certificados:

Visualización de un nuevo certificado en el almacén de certificados para las credenciales Navision / Business Central NavUserAndPassword
Visualización de un nuevo certificado en el almacén de certificados para las credenciales Navision / Business Central NavUserAndPassword

Abra un mmc para los certificados (mmc.exe, File/Add SnapIn, Certificate, Computer Account/Local Computer).
Seleccione el certificado recién creado, haga clic con el botón derecho del ratón, Todas las tareas, Gestionar claves privadas

Añada la cuenta de servicio del servidor de servicios Navision (a menudo Administrador o Servicios de red/red)

Copie también el certificado en la carpeta Certificados raíz de confianza/certificados (botón derecho del ratón/copiar, carpeta de destino -> pegar)

Ahora puede cerrar la gestión de certificados.

Ahora copie el Thumbprint desde la consola. Esto es más fiable que copiar desde la gestión de certificados.

Ahora añada esta "huella digital" (literalmente: huella del pulgar) a la configuración del servicio Navision en Huella digital del certificado:

Configuración del servicio Navision/Business Central con una huella digital de certificado para el tipo de credencial NavUserPassword

El nombre del ordenador está almacenado en el certificado ("Navision service"). Si es distinto, puede modificarlo:

Error de comprobación de identidad para un mensaje saliente. La identidad DNS esperada del punto final remoto era "servidor nav", pero el punto final remoto ha proporcionado la reivindicación DNS "Servicio Navision". Si se trata de un punto final remoto legítimo, puede resolver el problema especificando explícitamente la identidad DNS "navision-service" como propiedad Identity de EndpointAddress al crear un proxy de canal.

Esto se cambia en el web.config (hasta Nav 2017) o NavSettings.JSON en, por ejemplo, la carpeta C:\inetpub\wwwroot\Instance-Name, por ejemplo, C:\inetpub\wwwroot\BC140 o ClientUserSettings.config en por ejemplo C:\Users\AppData\Roaming\Microsoft\Microsoft Dynamics NAV\100 geändert:

"//DnsIdentity": "El DNS o nombre de asunto del certificado del servidor",
                       "DnsIdentity": "Servidor NAV",

Cambie la entrada en Dns Identity de "servidor NAV" (en este ejemplo) a "servicio Navision": Recomendación: ¡Cree el certificado directamente con la entrada DNS correspondiente!

Error al acceder al sitio web  Tipo: System.UnauthorizedAccessException

Error al acceder al sitio web 
Tipo: System.UnauthorizedAccessException
Rastrón de la pila:
   en System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   en System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
   en System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)

¿Recibe este mensaje de error y tiene la intención de instalar una segunda instancia de servicio web?
Escenario: ya tiene un servicio web, por ejemplo. porque usted opera un DVA (mío). Para ello, se utiliza el servicio web para ejecutar Navision/BC365 en las tabletas. Si ahora desea operar una segunda empresa con su propio servicio Navision y tal vez también con su propia base de datos, configure una segunda instancia web para ello, por ejemplo, con el comando (cmdlet).

New-NAVWebServerInstance newWebService -Server Localhost -ServerInstance NewNavServiceName -Company MyNewCompany

Como resultado, encontrará una nueva carpeta en su carpeta www-root:

Ruta del problema para el mensaje de error "Error al acceder al sitio web Type: System.UnauthorizedAccessException"

Dependiendo de la versión de Navision, todavía tiene que cambiar la configuración. En Navision 2018/BC14 esto debe hacerse en estos dos archivos aquí:

En versiones anteriores de Navision, esto probablemente se hacía en estos archivos:

Diversos archivos de configuración de WebService en los que se configuraron las diferentes versiones de Navision y BC365 (puerto, nombre de servicio, nombre de instancia, etc.)

Simplemente abra estos archivos uno tras otro hasta que encuentre las entradas para la instancia de servidor y el puerto, por ejemplo, algo así:

Configuración de un nuevo servicio web para BC365/Navision con indicación de puerto y servicio

o esto:

Configuración de un nuevo servicio web en BC365/Navision con clientServicesCredentialType navUserPassword

Aquí encontrará también de nuevo la configuración para „ClientServicesCredentialType“: „NavUserPassword“, que tal vez te haya atraído a mi página.
Eso suele ser más fácil de cambiar a través de la consola.

Bien, eso es todo... si... ¡si Windows cooperara!

La carpeta de problemas para el mensaje de error

Error al acceder al sitio web  Tipo: System.UnauthorizedAccessException
Rastrón de la pila:
   en System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   en System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
   en System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)

este de aquí:

C:\inetpub\wwwroot\NewWebService\wwwroot\Resources\RecursosExtraídos.

Aquí el cliente de Navision/BC365 quiere guardar archivos y no tiene permiso para hacerlo.
Consejo: Si ha venido hasta aquí, ya se ha vuelto loco buscando. Hágase la vida más fácil:
Asigne un nuevo pedido NuevoServicioWeb para el usuario IIS_IUSRS „Control total“. ¡Atención! ¡Por supuesto, solo para uso interno! Si este servicio web es accesible a través de Internet, esto representa un problema de seguridad. Pero si configuras un sistema así, es mejor que no busques soluciones para ello en Internet, sino que tengas los conocimientos técnicos necesarios sobre lo que estás haciendo... o le pidas ayuda a alguien que sepa.