|
| 1 | +--- |
| 2 | +sidebar_position: 6 |
| 3 | +title: "Entities and Layering" |
| 4 | +hide_table_of_contents: true |
| 5 | +--- |
| 6 | + |
| 7 | +This page focuses on the relationship and layers between entities and components which directly relate to the Digital Credentials API: presentation and issuance protocols, credential managers, browsers and apps, operating systems, and transport protocols. |
| 8 | + |
| 9 | +## Layers |
| 10 | + |
| 11 | +Verification and issuance requests from a website begin with a JavaScript call to the Digital Credentials API. The browser then sends this request to the device's operating system where the credential selector is invoked. Once a user selects a credential, its credential manager is activated to complete the request. |
| 12 | + |
| 13 | +> Website >> Browser >> OS >> Credential Manager >> OS >> Browser >> Website |
| 14 | +
|
| 15 | +Here's a summary of the APIs and communication channels: |
| 16 | + |
| 17 | +- Verifier and issuer websites use the Digital Credentials API to send requests for presenting or issuing a credential to the device |
| 18 | +- Browsers use platform-specific credential manager APIs to communicate with the operating system to reach the appropriate credential managers |
| 19 | +- Native apps with verification or issuance features use platform native versions of the Digital Credentials API |
| 20 | +- Credential managers use platform-specific credential manager APIs to interact with the underlying operating system for receiving requests and sending back responses. |
| 21 | + |
| 22 | +The diagram below visualizes these entities, layers, and APIs for a verification flow on a mobile device (same device presentation). |
| 23 | + |
| 24 | + |
| 25 | + |
| 26 | +When a request needs to go to a credential manager on nearby device (e.g. from a laptop/desktop to a phone), another communication channel is required. The FIDO Client to Authenticator Protocol (version 2.2) is used to support [cross-device presentation](../references/terms#cross-device-presentation) and [cross-device issuance](../references/terms#cross-device-presentation). This transport protocol is implemented by operating systems or browsers and does not require any additional work from verifiers, issuers, or credential managers. |
| 27 | + |
| 28 | +The diagram below expands the previous diagram to include a second device where the credential manager lives, and a secure channel to pass the presentation or issuance request and response. |
| 29 | + |
| 30 | + |
| 31 | + |
| 32 | +:::note |
| 33 | +Some browsers may implement the cross-device transport protocol (FIDO CTAP 2.2) directly on operating systems which do not support it natively. |
| 34 | +::: |
| 35 | + |
| 36 | +## Support across entities and layers |
| 37 | + |
| 38 | +The Digital Credentials API is protocol agnostic, meaning it does not normatively define nor restrict which protcols can be used, giving developers the flexibility to work with a wide range of protocols, from existing standards to new ones that emerge. |
| 39 | + |
| 40 | +However, it's important to understand that the behavior of the API can vary depending on the specific implementation (for example, within a browser or an operating system). A particular implementation may only support a limited set of protocols. |
| 41 | + |
| 42 | +Each entity/layer ultimately needs to pass the request down to the next entity/layer, ending at the credential manager. The table below documents whether each entity must support a given component. |
| 43 | + |
| 44 | +| **ENTITY** | **CRED FORMAT** | **PROTOCOL** | |
| 45 | +|--------------------|-----------------|--------------| |
| 46 | +| Verifier / Issuer | Yes | Yes | |
| 47 | +| Browser | No | Optional | |
| 48 | +| Operating System | No | Optional | |
| 49 | +| Credential Manager | Yes | Yes | |
| 50 | + |
| 51 | +For example, one browser may decide to validate a request (thus it must understand the protocol), while other browsers will directly pass the request to the operating system's credential matcher. |
| 52 | + |
| 53 | +The [ecosystem support](/ecosystem-support?support-matrix=end2end) page documents real world combinations of entities and components in the ecosystem. |
0 commit comments