Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ProjectPasskeys: Add support for Enterprise Attestation #8909

Closed
yackermann opened this issue Jul 9, 2024 · 4 comments
Closed

ProjectPasskeys: Add support for Enterprise Attestation #8909

yackermann opened this issue Jul 9, 2024 · 4 comments
Assignees
Milestone

Comments

@yackermann
Copy link
Collaborator

yackermann commented Jul 9, 2024

Add support Enterprise Attestation, so that custom enterprise attestation keys can be used.

@moabu moabu added this to the 1.1.4 milestone Jul 16, 2024
@yackermann
Copy link
Collaborator Author

yackermann commented Jul 23, 2024

  • Add "Enterprise Attestation" mode credential creation
  • Add support for EP(enterprise attestation) extension
  • Add per-customer metadata store.
  • Add configurations "Mandatory Enterprise Attestation" option, with list of applicable customer metadatas

@yackermann
Copy link
Collaborator Author

Expected experience:

  1. Configuration:

Customer accesses their admin panel. In the "My Authenticator Metadatas" they add their enterprise metadata. They mark their metadata as "Enterprise only".

In the settings they then enable "Enterprise Attestation" and add "Allowed RPIDs"(The RPIDs that were used to configure authenticators)

They then set enterprise attestation mode to either:

Detect mode - will try running enterprise attestation, but won't fail if it does not match user store.
Enforce mode - will try enterprise attestation, and if its does not match customer metadat a store, it will fail.

  1. Usage.

During credential creation (authenticator adding), make credential request payload extensions will include "ep": true.

Once response is received, server will check attestation against customer metadata.

If server in enforce mode, server will respond with error "unauthorized", and log that non-permitted authenticator was attempted to add.

If server in detect mode, then attestation will be checked against public store.

If attestation is required, and that fails too, then error is returned.

@maduvena
Copy link
Contributor

maduvena commented Jul 24, 2024

Notes for implementation:

  1. LocalMdsService service maintains a json file containing authenticator metadata configured by the administrator. The location of the json file can be configured using config-api

https://github.com/JanssenProject/jans/blob/main/jans-fido2/server/src/main/java/io/jans/fido2/service/mds/LocalMdsService.java

  1. Currently, During Attestation, the LocalMetadataService is first checked, then the MDS3MetaDataservice is checked.
    JsonNode metadataForAuthenticator = localMdsService.getAuthenticatorsMetadata(aaguid);
  • So, here we need to go as per Detect mode / Enforce mode which will be set using config-api:
    Detect mode - will try running enterprise attestation, but won't fail if it does not match user store.
    Enforce mode - will try enterprise attestation, and if its does not match customer metadat a store, it will fail.
  1. Use Config-API UI to upload new metadata for customers

@yackermann
Copy link
Collaborator Author

TODO:

  • Add diagrams
  • Add description for hybrid (Attested + Non-attested creds)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants