-
Notifications
You must be signed in to change notification settings - Fork 6
workspace sdk certificates
Workspace SDK integrations may include multiple components. Some of these components require a certificate, while others do not.
Use this page when you need to determine whether a Workspace extension type consumes certificate instances and how to package the required .cert files for deployment.
Each component that requires a certificate must have its own .cert file. The filename must match the fully qualified class name of the component, with a .cert extension.
All certificate files must be placed in a Certificates folder alongside the Workspace integration binaries.
It is common to reuse the same certificate content across components. The filenames must be distinct, but the ApplicationId inside each file may be identical.
When a user opens a Workspace component that requires a certificate (such as a custom page or dashboard widget), the system registers that certificate. Each registration consumes one instance from the certificate's licensed connection count.
The Security Center license defines a maximum number of concurrent instances allowed for each certificate. This limit applies across all users and all client applications system-wide.
Example: If your certificate allows 10 concurrent instances:
- User A opens your dashboard widget in Security Desk → 1 instance consumed (9 remaining)
- User B opens the same dashboard widget in Security Desk → 2 instances consumed (8 remaining)
- User A opens a second monitor with the same widget → 3 instances consumed (7 remaining)
- When User A closes the widget, the instance is released and becomes available again
When the instance limit is reached, any additional attempt to open the component will fail. The component will not load, and the user will see an error indicating the instance count has been exceeded.
Important
Unlike Platform SDK applications where one Engine.LogOn() call consumes one connection, Workspace components consume instances per opened component, per user. A single user can consume multiple instances by opening the same component in multiple monitors or opening multiple certificate-requiring components.
The certificate file must be named after the fully qualified class name of the component, followed by .cert:
{Namespace}.{ClassName}.cert
Given the component class:
namespace Genetec.Dap.CodeSamples
{
public class CameraTilePropertiesBuilder : TilePropertiesBuilder
{
}
}The certificate file must be named:
Genetec.Dap.CodeSamples.CameraTilePropertiesBuilder.cert
Certificate files must be placed in a Certificates folder alongside the Workspace integration DLL:
YourWorkspaceModule.dll
└── Certificates/
├── Genetec.Dap.CodeSamples.CameraTilePropertiesBuilder.cert
├── Genetec.Dap.CodeSamples.CustomDashboardWidget.cert
└── Genetec.Dap.CodeSamples.CustomPage.cert
Note
In Workspace integrations, you cannot set the certificate using Engine.ClientCertificate.
Each required component must have its .cert file named and placed correctly.
See Development vs Production Certificates for the development certificate ApplicationId.
When a workspace component has a missing or invalid certificate, the behavior differs from Platform SDK and Plugin SDK:
- Component is silently excluded - The workspace does not crash or throw an exception. Components with certificate issues are simply not loaded.
- Custom pages - When a user attempts to open a custom page with a missing or invalid certificate, a warning dialog appears indicating the page cannot be loaded.
- Other components - Tile builders, dashboard widgets, and other components with certificate issues do not appear in the workspace at all. There is no visible indication to end users.
- Diagnostic logging - Certificate validation failures are logged to the application diagnostics, which can help during development and troubleshooting.
- Graceful degradation - The rest of the workspace continues to function normally. Only the affected components are unavailable.
This behavior allows partial functionality when some components have valid certificates and others do not.
Workspace SDK certificate usage is not visible in the Security Center user interface.
- The System Status > Applications task only shows the hosting client application (Security Desk or Config Tool), not individual Workspace components
- There is no built-in UI to display which Workspace components are currently consuming certificate instances or how many instances remain available
- To determine certificate usage, you must track how many users have the component open across the system
Most Workspace SDK component types require certificates. Only specific types are exempt.
Types that require a certificate:
| Type | Notes |
|---|---|
Page |
Excluding ConfigPage and ReportPage
|
TilePage |
Subclass of Page
|
TileWidgetBuilder |
|
TileViewBuilder |
|
TilePropertiesBuilder |
|
DashboardWidgetBuilder |
|
TimelineProvider |
|
EventExtender |
|
BadgePrinter |
|
CardholderFieldsExtractor |
|
CredentialEncoder |
|
CredentialReader |
|
ImageExtractor |
|
IncidentBuilder |
|
MapDesignerTool |
|
MapDesignerWidget |
|
PinnableContentBuilder |
Types that do not require a certificate:
| Type |
|---|
ConfigPage |
ContentBuilder |
ContextualAction |
ContextualActionGroup |
CustomActionBuilder |
IService |
LogonProvider |
MapImporter |
MapLayerBuilder |
MapObjectProvider |
MapObjectViewBuilder |
MapPanelBuilder |
MapSearcher |
Notification |
OptionPage |
ReportPage |
Task |
- Overview
- Connecting to Security Center
- SDK certificates
- Referencing SDK assemblies
- SDK compatibility
- Entities
- Entity cache
- Transactions
- Events
- Actions
- Security Desk
- Custom events
- ReportManager
- ReportManager query reference
- DownloadAllRelatedData and StrictResults
- Privileges
- Partitions
- Logging
- Overview
- Certificates
- Lifecycle
- Threading
- State management
- Configuration
- Restricted configuration
- Events
- Queries
- Request manager
- Database
- Entity ownership
- Entity mappings
- Server management
- Custom privileges
- Custom entity types
- Resolving non-SDK assemblies
- Deploying plugins
- .NET 8 support
- Overview
- Certificates
- Creating modules
- Tasks
- Pages
- Components
- Tile extensions
- Services
- Contextual actions
- Options extensions
- Configuration pages
- Monitors
- Shared components
- Commands
- Extending events
- Map extensions
- Timeline providers
- Image extractors
- Credential encoders
- Credential readers
- Cardholder fields extractors
- Badge printers
- Content builders
- Dashboard widgets
- Incidents
- Logon providers
- Pinnable content builders
- Custom report pages
- Overview
- Getting started
- MediaPlayer
- VideoSourceFilter
- MediaExporter
- MediaFile
- G64 converters
- FileCryptingManager
- PlaybackSequenceQuerier
- PlaybackStreamReader
- OverlayFactory
- PtzCoordinatesManager
- AudioTransmitter
- AudioRecorder
- AnalogMonitorController
- Camera blocking
- Overview
- Getting started
- Referencing entities
- Entity operations
- About access control in the Web SDK
- About video in the Web SDK
- Users and user groups
- Partitions
- Custom fields
- Custom card formats
- Actions
- Events and alarms
- Incidents
- Reports
- Tasks
- Macros
- Custom entity types
- System endpoints
- Performance guide
- Reference
- Under the hood
- Troubleshooting