The Azure App Registration and Enterprise Application Orchestrator extension remotely manages both Azure App Registration/Application certificates and Enterprise Application/Service Principal certificates.
This repository contains a Universal Orchestrator Extension which is a plugin to the Keyfactor Universal Orchestrator. Within the Keyfactor Platform, Orchestrators are used to manage “certificate stores” — collections of certificates and roots of trust that are found within and used by various applications.
The Universal Orchestrator is part of the Keyfactor software distribution and is available via the Keyfactor customer portal. For general instructions on installing Extensions, see the “Keyfactor Command Orchestrator Installation and Configuration Guide” section of the Keyfactor documentation. For configuration details of this specific Extension see below in this readme.
The Universal Orchestrator is the successor to the Windows Orchestrator. This Orchestrator Extension plugin only works with the Universal Orchestrator and does not work with the Windows Orchestrator.
Azure App Registration and Enterprise Application Orchestrator is supported by Keyfactor for Keyfactor customers. If you have a support issue, please open a support ticket via the Keyfactor Support Portal at https://support.keyfactor.com
To report a problem or suggest a new feature, use the Issues tab. If you want to contribute actual bug fixes or proposed enhancements, use the Pull requests tab.
The minimum version of the Keyfactor Universal Orchestrator Framework needed to run this version of the extension is 10.4
The Keyfactor Universal Orchestrator may be installed on either Windows or Linux based platforms. The certificate operations supported by a capability may vary based what platform the capability is installed on. The table below indicates what capabilities are supported based on which platform the encompassing Universal Orchestrator is running.
Operation | Win | Linux |
---|---|---|
Supports Management Add | ✓ | ✓ |
Supports Management Remove | ✓ | ✓ |
Supports Create Store | ||
Supports Discovery | ✓ | ✓ |
Supports Reenrollment | ||
Supports Inventory | ✓ | ✓ |
Support · Installation · License · Related Integrations
The Azure App Registration and Enterprise Application Orchestrator extension remotely manages both Azure App Registration/Application certificates and Enterprise Application/Service Principal certificates. Application certificates are typically public key only and used for client certificate authentication, while Service Principal certificates are commonly used for SAML Assertion signing. The extension implements the Inventory, Management Add, Management Remove, and Discovery job types.
Certificates used for client authentication by Applications (configured in App Registrations) are represented by the AzureApp
store type, and certificates used for SSO/SAML assertion signing are represented by the AzureSP
store type. Both store types are managed by the same extension. The extension is configured with a single Azure Service Principal that is used to authenticate to the Microsoft Graph API. The Azure App Registration and Enterprise Application Orchestrator extension manages certificates for Azure App Registrations (Applications) and Enterprise Applications (Service Principals) differently.
Before installing the Azure App Registration and Enterprise Application Universal Orchestrator extension, it's recommended to install kfutil. Kfutil is a command-line tool that simplifies the process of creating store types, installing extensions, and instantiating certificate stores in Keyfactor Command.
The Azure App Registration and Enterprise Application Universal Orchestrator extension implements 2 Certificate Store Types. Depending on your use case, you may elect to install one, or all of these Certificate Store Types. An overview for each type is linked below:
Azure App Registration (Application)
-
Follow the requirements section to configure a Service Account and grant necessary API permissions.
Requirements
The Azure App Registration and Enterprise Application Orchestrator extension uses an Azure Service Principal for authentication. Follow Microsoft's documentation to create a service principal. Currently, Client Secret authentication is supported. The Service Principal must have the following API Permission:
- Microsoft Graph Application Permissions:
Application.ReadWrite.All
(not Delegated; Admin Consent) - Allows the app to create, read, update and delete applications and service principals without a signed-in user.
For more information on Admin Consent for App-only access (also called "Application Permissions"), see the primer on application-only access.
Alternatively, the Service Principal can be granted the
Application.ReadWrite.OwnedBy
permission if the Service Principal is only intended to manage its own App Registration/Application.Beginning in version 3.0.0, the Azure App Registration and Enterprise Application Orchestrator extension supports both client certificate authentication and client secret authentication.
-
Client Secret - Follow Microsoft's documentation to create a Client Secret. This secret will be used as the Server Password field in the Certificate Store Configuration section.
-
Client Certificate - Create a client certificate key pair with the Client Authentication extended key usage. The client certificate will be used in the ClientCertificate field in the Certificate Store Configuration section. If you have access to Keyfactor Command, the instructions in this section walk you through enrolling a certificate and ensuring that it's in the correct format. Once enrolled, follow Microsoft's documentation to add the public key certificate (no private key) to the service principal used for authentication.
The certificate can be in either of the following formats:
- Base64-encoded PKCS#12 (PFX) with a matching private key.
- Base64-encoded PEM-encoded certificate and PEM-encoded PKCS8 private key. Make sure that the certificate and private key are separated with a newline. The order doesn't matter - the extension will determine which is which.
If the private key is encrypted, the encryption password will replace the Server Password field in the Certificate Store Configuration section.
Creating and Formatting a Client Certificate using Keyfactor Command
To get started quickly, you can follow the instructions below to create and properly format a client certificate to authenticate to the Microsoft Graph API.
- In Keyfactor Command, hover over Enrollment and select PFX Enrollment.
- Select a Template that supports Client Authentication as an extended key usage.
- Populate the certificate subject as appropriate for the Template. It may be sufficient to only populate the Common Name, but consult your IT policy to ensure that this certificate is compliant.
- At the bottom of the page, uncheck the box for Include Chain, and select either PFX or PEM as the certificate Format.
- Make a note of the password on the next page - it won't be shown again.
- Prepare the certificate and private key for Azure and the Orchestrator extension:
-
If you downloaded the certificate in PEM format, use the commands below:
# Verify that the certificate downloaded from Command contains the certificate and private key. They should be in the same file cat <your_certificate.pem> # Separate the certificate from the private key openssl x509 -in <your_certificate.pem> -out pubkeycert.pem # Base64 encode the certificate and private key cat <your_certificate.pem> | base64 > clientcertkeypair.pem.base64
-
If you downloaded the certificate in PFX format, use the commands below:
# Export the certificate from the PFX file openssl pkcs12 -in <your_certificate.pfx> -clcerts -nokeys -out pubkeycert.pem # Base64 encode the PFX file cat <your_certificate.pfx> | base64 > clientcert.pfx.base64
-
- Follow Microsoft's documentation to add the public key certificate to the service principal used for authentication.
You will use
clientcert.[pem|pfx].base64
as the ClientCertificate field in the Certificate Store Configuration section.Application certificates are used for client authentication and are typically public key only. No additional configuration in Azure is necessary to manage Application certificates since all App Registrations can contain any number of Certificates and Secrets. Unless the Discovery job is used, you should collect the Application IDs for each App Registration that contains certificates to be managed.
- Microsoft Graph Application Permissions:
-
Create Certificate Store Types for the Azure App Registration and Enterprise Application Orchestrator extension.
-
Using kfutil:
# Azure App Registration (Application) kfutil store-types create AzureApp
-
Manually:
-
-
Install the Azure App Registration and Enterprise Application Universal Orchestrator extension.
-
Using kfutil: On the server that that hosts the Universal Orchestrator, run the following command:
# Windows Server kfutil orchestrator extension -e azure-application-orchestrator@latest --out "C:\Program Files\Keyfactor\Keyfactor Orchestrator\extensions" # Linux kfutil orchestrator extension -e azure-application-orchestrator@latest --out "/opt/keyfactor/orchestrator/extensions"
-
Manually: Follow the official Command documentation to install the latest Azure App Registration and Enterprise Application Universal Orchestrator extension.
-
-
Create new certificate stores in Keyfactor Command for the Sample Universal Orchestrator extension.
Azure Enterprise Application (Service Principal)
-
Follow the requirements section to configure a Service Account and grant necessary API permissions.
Requirements
The Azure App Registration and Enterprise Application Orchestrator extension uses an Azure Service Principal for authentication. Follow Microsoft's documentation to create a service principal. Currently, Client Secret authentication is supported. The Service Principal must have the following API Permission:
- Microsoft Graph Application Permissions:
Application.ReadWrite.All
(not Delegated; Admin Consent) - Allows the app to create, read, update and delete applications and service principals without a signed-in user.
For more information on Admin Consent for App-only access (also called "Application Permissions"), see the primer on application-only access.
Alternatively, the Service Principal can be granted the
Application.ReadWrite.OwnedBy
permission if the Service Principal is only intended to manage its own App Registration/Application.Beginning in version 3.0.0, the Azure App Registration and Enterprise Application Orchestrator extension supports both client certificate authentication and client secret authentication.
-
Client Secret - Follow Microsoft's documentation to create a Client Secret. This secret will be used as the Server Password field in the Certificate Store Configuration section.
-
Client Certificate - Create a client certificate key pair with the Client Authentication extended key usage. The client certificate will be used in the ClientCertificate field in the Certificate Store Configuration section. If you have access to Keyfactor Command, the instructions in this section walk you through enrolling a certificate and ensuring that it's in the correct format. Once enrolled, follow Microsoft's documentation to add the public key certificate (no private key) to the service principal used for authentication.
The certificate can be in either of the following formats:
- Base64-encoded PKCS#12 (PFX) with a matching private key.
- Base64-encoded PEM-encoded certificate and PEM-encoded PKCS8 private key. Make sure that the certificate and private key are separated with a newline. The order doesn't matter - the extension will determine which is which.
If the private key is encrypted, the encryption password will replace the Server Password field in the Certificate Store Configuration section.
Creating and Formatting a Client Certificate using Keyfactor Command
To get started quickly, you can follow the instructions below to create and properly format a client certificate to authenticate to the Microsoft Graph API.
- In Keyfactor Command, hover over Enrollment and select PFX Enrollment.
- Select a Template that supports Client Authentication as an extended key usage.
- Populate the certificate subject as appropriate for the Template. It may be sufficient to only populate the Common Name, but consult your IT policy to ensure that this certificate is compliant.
- At the bottom of the page, uncheck the box for Include Chain, and select either PFX or PEM as the certificate Format.
- Make a note of the password on the next page - it won't be shown again.
- Prepare the certificate and private key for Azure and the Orchestrator extension:
-
If you downloaded the certificate in PEM format, use the commands below:
# Verify that the certificate downloaded from Command contains the certificate and private key. They should be in the same file cat <your_certificate.pem> # Separate the certificate from the private key openssl x509 -in <your_certificate.pem> -out pubkeycert.pem # Base64 encode the certificate and private key cat <your_certificate.pem> | base64 > clientcertkeypair.pem.base64
-
If you downloaded the certificate in PFX format, use the commands below:
# Export the certificate from the PFX file openssl pkcs12 -in <your_certificate.pfx> -clcerts -nokeys -out pubkeycert.pem # Base64 encode the PFX file cat <your_certificate.pfx> | base64 > clientcert.pfx.base64
-
- Follow Microsoft's documentation to add the public key certificate to the service principal used for authentication.
You will use
clientcert.[pem|pfx].base64
as the ClientCertificate field in the Certificate Store Configuration section.Service Principal certificates are typically used for SAML Token signing. Service Principals are created from Enterprise Applications, and will mostly be configured with a variation of Microsoft's SAML-based single sign-on documentation. For more information on the mechanics of the Service Principal certificate management capabilities of this extension, please see the mechanics section.
- Microsoft Graph Application Permissions:
-
Create Certificate Store Types for the Azure App Registration and Enterprise Application Orchestrator extension.
-
Using kfutil:
# Azure Enterprise Application (Service Principal) kfutil store-types create AzureSP
-
Manually:
-
-
Install the Azure App Registration and Enterprise Application Universal Orchestrator extension.
-
Using kfutil: On the server that that hosts the Universal Orchestrator, run the following command:
# Windows Server kfutil orchestrator extension -e azure-application-orchestrator@latest --out "C:\Program Files\Keyfactor\Keyfactor Orchestrator\extensions" # Linux kfutil orchestrator extension -e azure-application-orchestrator@latest --out "/opt/keyfactor/orchestrator/extensions"
-
Manually: Follow the official Command documentation to install the latest Azure App Registration and Enterprise Application Universal Orchestrator extension.
-
-
Create new certificate stores in Keyfactor Command for the Sample Universal Orchestrator extension.
Apache License 2.0, see LICENSE.
See all Keyfactor Universal Orchestrator extensions.
When creating cert store type manually, that store property names and entry parameter names are case sensitive