Repository navigation
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 fails. The component does not load, and the user sees 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.
- No component-specific log entry - A component excluded for a certificate problem produces no diagnostic entry of its own. During development, check the certificate filename, its location, and the licensed ApplicationId directly.
- 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 |
No additional notes |
TileViewBuilder |
No additional notes |
TilePropertiesBuilder |
No additional notes |
DashboardWidgetBuilder |
No additional notes |
TimelineProviderBuilder |
No additional notes |
ContentBuilder |
No additional notes |
LogonProvider |
Checked after the client logs on |
BadgePrinter |
No additional notes |
CardholderFieldsExtractor |
No additional notes |
CredentialEncoder |
No additional notes |
CredentialReader |
No additional notes |
ImageExtractor |
No additional notes |
IncidentBuilder |
No additional notes |
PinnableContentBuilder |
No additional notes |
Types that do not require a certificate:
| Type |
|---|
ConfigPage |
ContextualAction |
ContextualActionGroup |
CustomActionBuilder |
EventExtender |
IService |
MapImporter |
MapLayerBuilder |
MapObjectProvider |
MapObjectViewBuilder |
MapPanelBuilder |
MapSearcher |
Notification |
OptionPage |
OptionsExtension |
ReportPage |
Task |
- About SDK certificates: SDK certificate fundamentals shared across all SDK families.
- About plugin certificates: SDK certificate file naming and discovery for plugins.
- Overview
- Connecting to Security Center
- SDK certificates
- Referencing SDK assemblies
- ASP.NET hosting
- SDK compatibility
- Migrating to modern .NET
- Entities
- Entity cache
- Entity loading, cache, and query options
- Detecting entity changes
- Entity change event reference
- Transactions
- Security Center events
- Actions
- Security Desk
- Custom events
- Event-to-actions
- Managing macros
- ReportManager
- ReportManager query reference
- Access control raw events
- DownloadAllRelatedData and StrictResults
- Privileges
- Partitions
- Entity write restrictions
- About custom fields
- About video
- About cameras
- Enrolling a video unit
- Ingesting third-party video
- Archiver and auxiliary archiver roles
- Archive transfer
- About access control
- About cardholders and credentials
- About doors, areas, elevators, and access points
- About access rules and schedules
- About access control units and interface modules
- Enrolling an access control unit
- Door templates
- Visitors
- Mobile credentials
- About threat levels
- About alarms
- About incidents
- Maps
- Logging
- Overview
- Localization
- Certificates
- Lifecycle
- Threading
- State management
- Configuration
- Restricted configuration
- Events
- Queries
- Request manager
- Database
- Entity ownership
- Engine extensions
- Entity mappings
- Server management
- Custom privileges
- Custom entity types
- Resolving non-SDK assemblies
- Deploying plugins
- Modern .NET support
- Overview
- Localization
- Certificates
- Creating modules
- Tasks
- Pages
- Components
- Tile extensions
- Services
- Contextual actions
- Custom 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
- Media file formats
- 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
- Endpoints
- Constants
- Enumerations
- Under the hood
- Troubleshooting