From fddbc51d305eee28895b806be178fe8e089b9fc6 Mon Sep 17 00:00:00 2001 From: Madhumita Subramaniam Date: Thu, 10 Nov 2022 23:11:26 +0530 Subject: [PATCH] docs: #2840 components (#2959) --- docs/admin/fido/README.md | 86 ++++++++++++++++++++++++++++- docs/admin/fido/bluetooth-authn.md | 5 +- docs/admin/fido/key-mgt.md | 5 +- docs/admin/fido/logs.md | 1 + docs/admin/fido/platform-authn.md | 4 +- docs/admin/fido/vendor-metadata.md | 2 - docs/assets/fido2-components.png | Bin 0 -> 44113 bytes docs/assets/fido2-components.xml | 2 + 8 files changed, 97 insertions(+), 8 deletions(-) create mode 100644 docs/assets/fido2-components.png create mode 100644 docs/assets/fido2-components.xml diff --git a/docs/admin/fido/README.md b/docs/admin/fido/README.md index ddadf7a2ec7..7074c926a4c 100644 --- a/docs/admin/fido/README.md +++ b/docs/admin/fido/README.md @@ -6,7 +6,87 @@ tags: # Overview -Please use the left navigation menu to browse the content of this section while we are still working on developing content for `Overview` page. +## Janssen's FIDO2 server -!!! Contribute -If you’d like to contribute to this document, get started with the [Contribution Guide](https://docs.jans.io/head/CONTRIBUTING/#contributing-to-the-documentation) \ No newline at end of file +FIDO2 as an open standard for authentication is based on public key cryptography. + +Janssen's FIDO2 server - a component inside the Janssen project enables users of RPs to enroll and authenticate themselves using U2F keys, FIDO2 keys or inbuilt platform authenticator. +1. The FIDO2 server uses REST endpoints to communicate with an RP via an https connection. +2. The FIDO2 server implements the [FIDO Metadata Service (MDS3)](https://fidoalliance.org/metadata/metadata-service-overview/) defined by FIDO Alliance. +3. The FIDO2 server stores user data into the same persistence store as the Jans-Auth server. (LDAP, MYSQL, Couchbase etc.) + +### Components of the FIDO2 ecosystem in Janssen + + +![FIDO2 ecosystem](../../assets/fido2-components.png) + +[Diagram reference](../../assets/fido2-components.xml) + + 1. **User**: User of an application, the one who possesses the Authenticator and who's role is to pass the Test of User Presence (TUP) (touch device, look, speak etc.). + + 2. **WebAuthn API**: + * A global web standard for password-less FIDO2 authentication, implemented by most browsers (Google Chrome, Mozilla Firefox, Microsoft Edge, Apple Safari, Opera, Microsoft edge). + * It provides clients access to the underlying capabilities of the Authenticator. + * WebAuthn offers a very good user experience, there is no need for any additional browser plugin to be installed. + * WebAuthn API: enables clients to make requests to authenticators with regards to : + - creation of a new key-pair + - provide an assertion about a key + - report capabilities (capability exists but not offered in Janssen's FIDO2 offering) + - manage a PIN. (capability exists but not offered in Janssen's FIDO2 offering) + +3. **Authenticator**: A device which holds the private key. It prompts the user to perform a certain gesture. It can be a platform authenticator that is built into the client device or a roaming authenticator that is connected to the client device through USB, BLE, or NFC. + +4. **Relying Party**: The RP (`jans-auth` or `casa`) implements a Javascript Client which makes a registration and authentication request to the WebAuthn API. The Relying Party ID is the DNS domain where the FIDO2 device will be registered and used. + +5. **CTAP2**: Simple and lightweight hardware protocol that enables Authenticators to talk with Supported browsers. + +6. **FIDO2 Server** +Janssen's FIDO server is a standalone server communicates with the RP using an API which can be obtained by querying the following URL : +`https:///.well-known/fido2-configuration` +Response: + + ``` + { + "version": "1.1", + "issuer": "https://", + "attestation": { + "base_path": "https:///jans-fido2/restv1/attestation", + "options_enpoint": "https:///jans-fido2/restv1/attestation/options", + "result_enpoint": "https:///jans-fido2/restv1/attestation/result" + }, + "assertion": { + "base_path": "https:///jans-fido2/restv1/assertion", + "options_enpoint": "https:///jans-fido2/restv1/assertion/options", + "result_enpoint": "https:///jans-fido2/restv1/assertion/result" + } + } + ``` + + The two main functionalities are: + 1. Attestation + 2. Assertion + The authenticator credentials obtained after querying the WebAuthn API is forwarded to the FIDO2 server for attestation or assertion. + +7. **Interception script** : In the Janssen ecosystem, the authentication flow that comprises of the calls to WebAuthn API and the FIDO server is achieved using an interception script, details of it can be found [here](../../script-catalog/person_authentication/fido2-external-authenticator/README). + + +### Attestation formats supported by Janssen's FIDO server +* [Packed (FIDO2)](https://github.com/JanssenProject/jans/blob/main/jans-fido2/server/src/main/java/io/jans/fido2/service/processor/attestation/PackedAttestationProcessor.java): The most used attestation format +* [TPM](https://github.com/JanssenProject/jans/blob/main/jans-fido2/server/src/main/java/io/jans/fido2/service/processor/attestation/TPMProcessor.java) : Attestation for Windows10 devices +* [Android key attestation](https://github.com/JanssenProject/jans/blob/main/jans-fido2/server/src/main/java/io/jans/fido2/service/processor/attestation/AndroidKeyAttestationProcessor.java) : Attestation for android devices. +* [Android SafetyNet ](https://github.com/JanssenProject/jans/blob/main/jans-fido2/server/src/main/java/io/jans/fido2/service/processor/attestation/AndroidSafetyNetAttestationProcessor.java): Any Android devices running 7+ +* [FIDO U2F](https://github.com/JanssenProject/jans/blob/main/jans-fido2/server/src/main/java/io/jans/fido2/service/processor/attestation/U2FAttestationProcessor.java): Legacy U2F authenticators +* [Apple Anonymous](https://github.com/JanssenProject/jans/blob/main/jans-fido2/server/src/main/java/io/jans/fido2/service/processor/attestation/AppleAttestationProcessor.java): Apple devices do attestations differently. +* [None](https://github.com/JanssenProject/jans/blob/main/jans-fido2/server/src/main/java/io/jans/fido2/service/processor/attestation/NoneAttestationProcessor.java) + +### Backward compatibility with U2F authenticators +The FIDO server offers registration and authentication using legacy U2F authenticators. + +### References +1. https://www.w3.org/TR/webauthn-2/ +2. http://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html + +### Tools +1. https://jwt.io/ – For JWT decoding and debugging +2. https://www.base64decode.org/ – For Decoding Base64 to UTF8 +3. https://fidoalliance.org/certification/fido-certified-products/ - To browse authenticators listed with FIDO Alliance diff --git a/docs/admin/fido/bluetooth-authn.md b/docs/admin/fido/bluetooth-authn.md index 263c941ff16..98463766873 100644 --- a/docs/admin/fido/bluetooth-authn.md +++ b/docs/admin/fido/bluetooth-authn.md @@ -4,4 +4,7 @@ tags: - fido --- -This page will be the landing page for the Janssen Project admin documentation +## Troubleshooting notes: + +1. Enable the Bluetooth Device Permissions in Chrome Settings +https://support.google.com/accounts/answer/9289445?hl=en&co=GENIE.Platform%3DAndroid diff --git a/docs/admin/fido/key-mgt.md b/docs/admin/fido/key-mgt.md index 263c941ff16..47643fb0f13 100644 --- a/docs/admin/fido/key-mgt.md +++ b/docs/admin/fido/key-mgt.md @@ -4,4 +4,7 @@ tags: - fido --- -This page will be the landing page for the Janssen Project admin documentation + +### Attestation types + +Basic attestation: diff --git a/docs/admin/fido/logs.md b/docs/admin/fido/logs.md index a58c60ee23e..e6ba4e54b2d 100644 --- a/docs/admin/fido/logs.md +++ b/docs/admin/fido/logs.md @@ -7,6 +7,7 @@ tags: ### Log level and Logging Layout Parameters of Janssen's FIDO2 server: | Field named | Example | Description| +|--|--|--| |loggingLevel | "INFO" or "TRACE" or "DEBUG" | Logging level for FIDO2 server| |loggingLayout |"text" or "json" |Contents of logs as plain text or json format| diff --git a/docs/admin/fido/platform-authn.md b/docs/admin/fido/platform-authn.md index 263c941ff16..ac39f44c98f 100644 --- a/docs/admin/fido/platform-authn.md +++ b/docs/admin/fido/platform-authn.md @@ -4,4 +4,6 @@ tags: - fido --- -This page will be the landing page for the Janssen Project admin documentation +Apple Anonymous Attestation is first of its kind, providing a service like an Anonymization CA, where the authenticator works with a cloud operated CA owned by its manufacturer to dynamically generate per-credential attestation certificates such that no identification information of the authenticator will be revealed to websites in the attestation statement. Furthermore, among data relevant to the registration ceremony, only the public key of the credential along with a hash of the concatenated authenticator data and client data are sent to the CA for attestation, and the CA will not store any of these. This approach makes the whole attestation process privacy preserving. In addition, this approach avoids the security pitfall of Basic Attestation that the compromising of a single device results in revoking certificates from all devices with the same attestation certificate. + +https://medium.com/webauthnworks/webauthn-fido2-verifying-apple-anonymous-attestation-5eaff334c849 diff --git a/docs/admin/fido/vendor-metadata.md b/docs/admin/fido/vendor-metadata.md index 2877bc79c1d..aba74326304 100644 --- a/docs/admin/fido/vendor-metadata.md +++ b/docs/admin/fido/vendor-metadata.md @@ -229,11 +229,9 @@ Janssen's FIDO2 server - 1. Provides trust root certificates for verifying attestation statements during credential registrations. - ### 3. Skip metadata validation Metadata validation is recommended but not mandatory as per FIDO2 specifications. As per the current implementation, there is no provision in the jans-fido2 server to turn this feature off. However, the intention is to implement it in the future. - ### References: 1. https://fidoalliance.org/announcing-the-new-streamlined-and-simplified-metadata-service-for-authenticator-vendors-and-customers/ diff --git a/docs/assets/fido2-components.png b/docs/assets/fido2-components.png new file mode 100644 index 0000000000000000000000000000000000000000..4841b0cb123ee00f82189cddade740d7eab508e4 GIT binary patch literal 44113 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 z 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 \ No newline at end of file