Custom Compiled Credential Provider - No UI on Login Screen (but Official DLL works)

Hello privacyIDEA Community,

I have successfully built and compiled a custom Windows MSI from the latest credential provider source code. The MSI installs successfully without any errors.

The Problem: After installing my custom MSI, the privacyIDEA tile/UI does not appear on the Windows login screen.

Key Debugging Information: I have confirmed that my MSI installer (file placement, registry keys, dependencies) is correct, because of this test:

  • If I install the official privacyIDEA MSI, it works perfectly.

  • If I install my custom MSI, and then manually replace my custom-compiled DLL with the official DLL (from the official release), it works perfectly.

This proves the issue is 100% related to my compiled DLL, not the installer itself.

Troubleshooting Steps I’ve Already Taken:

  1. Build Configuration: I have confirmed my DLL is built in Release and x64 (not Debug or x86).

  2. Signing: I have signed my custom DLL using a self-signed certificate (created with New-SelfSignedCertificate).

  3. Certificate Trust: I have imported that self-signed certificate into the Local Computer > Trusted Root Certification Authorities store.

  4. Test Mode: I have also tried enabling “Test Signing” mode (bcdedit /set testsigning on) and rebooting, but the UI still does not appear.

  5. Event Logs: I have checked the Windows Logs > Application (for crashes) and Applications and Services > Microsoft > Windows > CodeIntegrity > Operational (for signature errors). I cannot find any errors related to LogonUI.exe or my DLL.

Despite these steps, the official DLL works perfectly, and my custom-built one does not.

Is there a specific build flag, manifest requirement, or other build-time property that I am missing in my custom build process? What else is different about the official build that would allow it to be loaded by LogonUI.exe when mine is not?

Thank you for any help or suggestions you can provide.

Hi, this can be very complex so you need to know what you are doing. The dll will be loaded anyway, there is no signing required. if the tile is not shown, it usually means that your code crashes at some point during the intialization. You can use the remote debugger, attach to LogonUI.exe (before the CPs are loaded!) and you might find the reason for the crash.

the CPs are not loaded when they are not shown, so if you lock the screen, they are not loaded directly. Only when you then press enter they are loaded, so you lock the screen, attach the debugger and then press enter on the testmachine to have the tiles loaded. to set breakpoints, you can check the debug file (e.g. of our CP) to see in which order the functions are called by the context.