
This article describes the process required to configure IBM Security Verify Access (ISVA) to use the FIDO Alliance Metadata Service (MDS) in FIDO2 device attestation.
The scenario has been tested using ISVA 10.0.6.0. For more information please see: FIDO2 Configuration
FIDO2 Metadata
A metadata statement file describes one or more FIDO2 devices such that they can be used by the relying parties to validate authenticator attestation and prove the genuineness of the device model. A metadata service is a repository from which metadata statements can be downloaded. ISVA allows a relying party to be configured to use both:
- One or more static metadata statement files; and/or
- One or more metadata services.
The FIDO Alliance MDS provides a centralized repository that includes the metadata for a significant number of trusted FIDO2 devices.
The following steps will show how to configure a relying party that uses the FIDO Alliance MDS.
1. Import the required signer certificates
ISVA requires the import of 2 different certificates:
- The certificate that is used to create an SSL connection with the FIDO alliance MDS.
- The certificate that is used to validate the JWS that is returned by the FIDO alliance MDS.
The certificates can be loaded into the same or different keystores. For the purpose of this article the single existing keystore rt_profile_keys will be used.
-
In the ISVA LMI open the SSL Certificates page:
System —> SSL Certificates
-
Select rt_profile_keys in the list and click:
Manage —> Edit SSL Certificate Database
-
The first certificate can be loaded directly from FIDO Alliance.
-
On the Signer Certificates tab click:
Manage —> Load
-
Set the following fields on the dialog:
Name |
Value |
Server |
mds.fidoalliance.org |
Port |
443 |
Certificate Label |
fidoalliance |
-
Click the Load button.
-
The second certificate needs to be imported manually.
-
In browser go to the page: https://valid.r3.roots.globalsign.com/
-
Copy the Base64 encoded certificate from the loaded page. It will look something like:
-----BEGIN CERTIFICATE-----
MIIDX …
…
WD9f…
-----END CERTIFICATE-----
-
Create a new local file jws.crt with the content of the certificate.
-
Back on the ISVA LMI on the Signer Certificates tab click:
Manage —> Import
-
Set the following fields in the dialog:
Name |
Value |
Certificate file |
Browse to find and select the local jws.crt file created above. |
Certificate Label |
mdsjws |
-
Click the Import button.
-
Close the dialog and deploy the changes.
2. Create the metadata service
The next step is to create the global configuration for the FIDO Alliance MDS. Once created this can be used in multiple different relying parties.
-
In the ISVA LMI open the FIDO2 Configuration page:
AAC —> FIDO2 Configuration
-
Select the Metadata link at the top of the page.
-
Click the Add button in the Metadata Services section of the page.
-
The Add Metadata Service dialog contains a number of different properties.
The 2 properties that are required for this scenario:
Name |
Value |
Description |
URL |
https://mds3.fidoalliance.org
|
The location to retrieve the MDS. This property is required.
|
SSL Truststore |
rt_profile_keys
|
The keystore that contains the SSL certificate used to connect to the MDS. It is also used as the keystore that contains the certificate used to validate the retrieved JWS but only if the JWS Truststore property has not been set.
|
The remaining unused/unchanged properties are:
Metadata Service Properties: Properties specific to the MDS usage
Name |
Value |
Description |
Retry Interval |
3600 (seconds)
|
The metadata statement retrieved from the MDS has an expiration time. Once this is reached any subsequent device attestations will attempt to retrieve a new version of the metadata. This interval is used if there is a failure in the retrieval. If a failure happens the current metadata will be used and further attestation requests will not attempt to retrieve a new version until the retry interval has been reached.
|
JWS Truststore |
|
The keystore that contains the certificate used to validate the JWS retrieved from the MDS. If not specified, the SSL Truststore will be used instead.
|
Request Overrides: Properties that will override the global HTTPClientV2 settings when making a HTTP request to the configured MDS. If not specified the global HTTPClientV2 settings are used.
Name |
Value |
Description |
Protocol
|
|
The SSL protocol used for the HTTP connection.
|
Timeout |
5 (seconds)
|
The request timeout.
|
Username
|
|
The basic authentication username.
|
Password |
|
The basic authentication password.
|
SSL Keystore |
|
The client authentication keystore.
|
Certificate Label |
|
The client authentication key alias.
|
Proxy |
|
The URL for a proxy server through which to make the connection.
|
HTTP Request Headers |
|
Any required HTTP headers.
|
-
Once the URL and SSL Truststore fields have been set click the Save button.
-
Deploy the changes.
Note: This LMI page also included the Static Metadata. This is where we could import additional metadata statements that exist locally.
3. Create the Relying Party
The final step is to create the relying party with reference to the new MDS.
-
In the ISVA LMI go to the page at:
AAC —> FIDO2 Configuration
-
In the Relying Parties page click the Add Relying Party button.
-
On the Name tab set the properties:
Name |
Value |
Display Name |
test |
Relying Party ID |
www.test.ibm.com |
Configuration ID |
Leave as is. |
Advanced Configuration |
Select this radio button to show advanced options. |
-
Traverse to the Metadata tab.
This tab contains the metadata configuration that is specific to this relying party. For this scenario select the checkbox in the Metadata Services list for the https://mds3.fidoalliance.org entry.
The remaining unused/unchanged properties on this page:
-
Enable metadata enforcement: If this field is selected, any device registrations must be validated correctly against the configured metadata. If the validation fails the device cannot be registered.
-
Prefer metadata service over static metadata The configured metadata for a relying party can include:
The ordering of the artifacts is important. Attestation validation will step through the metadata until a match is found. This entry will be used in the validation. Ordering is set on both:
This property sets the additional ordering of whether to check static metadata of metadata services first.
-
Traverse to the Summary tab.
Ensure that the summary includes the required metadata service and click the Save button.
-
Deploy the changes.
4. Try it out
Now that the relying party configuration has been completed we can test it to ensure that the MDS is working as expected.
There is an assumption that a reverse proxy instance exists with a junction to the runtime server but if there isn’t:
-
Create a reverse proxy instance.
-
On that reverse proxy instance run the Authentication and Context Based Access Configuration wizard in:
Manage —> AAC and Federation Configuration
Test the configuration
-
Access the device selection page:
https://www.test.ibm.com/mga/sps/mga/user/mgmt/html/device/device_selection.html
Note: The host in the URL must match the relying party ID created above.
-
Click the Register new authenticator button in the FIDO2/WebAuthn Registrations section.
-
Follow the process to register a device listed in the FIDO Alliance metadata. This test will use the YubiKey 5 Series with NFC.
-
Upon successful registration that device selection page will show the new registration.

-
Note the information shown in the Brand field. This has been extracted from the FIDO Alliance metadata and shows that the MDS is working as expected. If the device was not listed in the metadata this field would be empty.
-
The Test button on this page allows the device authentication flow to be tested.
-
If we had checked the Enable metadata enforcement property when creating the relying party and the device was not listed in the FIDO alliance metadata, it would fail registration.
Congratulations, you have successfully registered and tested a device using the FIDO Alliance metadata service for attestation validation.
5. Troubleshooting
If the scenario did not complete as expected, the best option is to enable tracing to see what went wrong.
-
In the ISVA LMI open the page:
AAC —> Runtime Parameters —> Runtime Tracing
-
Set the trace specification:
com.tivoli.am.fim.fido.config.*=ALL:com.ibm.iam.isfs.v2.*=ALL:com.ibm.security.access.httpclient.*=ALL
This will show all of the tracing for the FIDO component and also the HTTPClientV2 that is used to make the call to the MDS.
-
Deploy the changes
-
Try the registration again.
-
View the trace file
Monitor —> Application Log Files —> access_control —> runtime —> trace.log
-
Look at the trace for any errors or issues in the FIDOConfig or HttpClientV2 trace entries. There should be a lot of entries like:
addMetadata Adding metadata { AAGUID: [D91C5288-0EF0-49B7-B8AE-21CA0AA6B3F3], Description: [KEY-ID FIDO2 Authenticator], KeyIds: [[]], source: FIDO2], attestationTypes: [[Basic]}