Add Integrity Web as an OIDC attribute provider for Microsoft Entra (Azure) Verifiable Credentials
Use Fortified ID Integrity Web to provide user attributes during Microsoft Entra Verifiable Credentials issuance. To learn more about Verifiable Credentials in general, please contact Fortified ID.
Microsoft Entra Verified ID is a verifiable credential issuance and verification service provided by Microsoft Azure. With MS Entra users are able to generate and present digital credentials. These credentials can be also be verified by applications, using MS Entra Verified ID as the platform.
Microsoft Entra Verified ID supports configuring an external OpenID Connect Provider, such as Fortified ID Integrity Web, as an attribute (claim) provider for verifiable credentials. The OpenID Connect Provider asserts and id_token with a set of attributes (claims) which is used to generate the verifiable credential.
The purpose of this document is to explain how to set this up with Fortified Integrity Web and Microsoft Entra ID. It also includes instruction on how to test it, using a sample app from Microsoft.
The document describes a use case where the OpenID Connect Provider (Integrity Web) uses Freja OrganisationID as the authentication method. The organisation identifier (userID) is returned as the preferred_username claim which is then used to populate the Verifiable Credential.
Please note that this is only one use case example. Integrity Web can be configured to use a vast range of authentication methods and data sources for claim population, based on the Verifiable Credential requirement. Please contact Fortified ID for further assistance.
Front end web server, such as Apache or Nginx, installed on the same machine as Integrity
Front end web server must be exposed to the internet with a resolvable DNS name and valid https certificate (you can use ngrok to temporary expose local machines to the internet for testing purposes etc)
Front end web server should proxy all http traffic to the Integrity web server, with one exception:
ProxyPass /.well-known !
ProxyPassReverse /.well-known !
Configure your Azure tenant for Verifiable Credentials
Create key vault
Follow these instructions to create a key vault. Do not proceed with setting access policies, we will come to that later.
Make sure to note the client secret value as this will be used in a later step.
Example:
Setup Fortified ID Integrity Web as an OpenID Connect Provider
In this step, Fortified ID Integrity Web will be configured as an OpenID Connect Provider. The supporting instruction for this setup can be found here.
The complete server-config.json can be found here. The annotated values should be changed to match your environment. Please click on the annotation for instructions.
Restart integrity web
Verify the initial configuration by browsing to https://<your_external_dns_name>/oidc/tenant1/.well-known/openid-configuration.
OIDC discovery json should now be displayed.
Check log files for errors if no discovery json is presented. Fix the error(s) and try again.
Add Credential Provider to Azure
Open the Azure portal
Select Verified ID
Credentials
Click Add Credential
Select Custom Credential
Enter a name (in this config example we used FortifiedIDEmployeeType)
Add this json configuration below Display. Please change to suite your environment.
{
"locale": "en-US",
"card": {
"backgroundColor": "#FFFFFF",
"description": "Use your verified credential to prove that you are an employee of Fortified ID.",
"issuedBy": "Fortified ID",
"textColor": "#000000",
"title": "Fortified ID Employed",
"logo": {
"description": "Fortified ID logo",
"uri": "https://fortifiedid.se/images/outline_fortified.png"
}
},
"consent": {
"instructions": "Sign in with your Fortified ID OpenID Connect Provider to get your card.",
"title": "Sign in with your Fortified ID OpenID Connect Provider to get your card."
},
"claims": [
{
"claim": "vc.credentialSubject.userName",
"label": "Fortified ID userID",
"type": "String"
}
]
}
Add this json configuration below Rules. Please change to suite your environment.
The application runs on http://localhost:8080. However, it's not able to test the Verifiable Credentials Flow from a local application.
! To test the Verifiable Credentials flow, the application must be reachable from the internet, on a public DNS. For testing purposes, ngrok may be used to expose the application to the internet.
Browse to the application (using the external DNS). This page should be presented:
Click GET CREDENTIAL to test issuance
Click VERIFY CREDENTIAL to test presentation / verification
In case of errors, please view the console log of the application to check for configuration issues.
In case of errors on the OpenID Connect Provider during issuance, please view the Fortified ID Integrity log files.