Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ Looks like Akka 2.6.x still can be used according to [License FQA](https://www.l
Currently, we have a code generation for Akka that is wrapped up into ZIO. Code generation mustache templates for ZIO-http are not available in OpenAPI tools.

Mustache templates and code generation doesn't work out of the box, so the original templates where copied to the project and fixed by @Shota and @Pat.
Current templates and generator contains constraints that were reported by [@Pat](https://docs.google.com/document/d/1WhUtflM_o-5uSx9LW76lycz2kbk071cVZiv6EtVwhAQ/edit#heading=h.ywcvgffenpz) and [@Shota](https://input-output-rnd.slack.com/archives/G018JE9NHAM/p1664563129397819), this requires engineering time to adopt the OAS for a code generation. @Ben says that we can live with these constraints
Current templates and generator contains constraints that were reported by @Pat and @Shota, this requires engineering time to adopt the OAS for a code generation. @Ben says that we can live with these constraints

Generally, OAS files are written by the engineers with different experience and different view on formatting, schemas, normalization, datatype. For instance, in current templates don't have

Expand Down Expand Up @@ -218,8 +218,7 @@ Then all the endpoints are translated to Tapir, it will be possible to switch th
## Links <!-- optional -->

- [OpenAPI Tools](https://github.com/OpenAPITools/openapi-generator)
- [Goals of Tapir library](https://tapir.softwaremill.com/en/latest/goals.html)
- [Tapir](https://tapir.softwaremill.com/en/latest/index.html)
- [Tapir](https://tapir.softwaremill.com/)

<!--
<script src="https://cdnjs.cloudflare.com/ajax/libs/mermaid/9.2.1/mermaid.min.js"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,4 @@ While Option 3 is simpler to implement then Option 2 and provides basic function

## Links

- [Recording of the meeting where decision was made](https://drive.google.com/file/d/120YyW2IEpl-F-6kF0V0Fau4bM7BbQ6mT/view?usp=sharing)
- Recording of the meeting where decision was made (link no longer available)
Original file line number Diff line number Diff line change
Expand Up @@ -229,7 +229,7 @@ Looks like the ToIP specification is inspired by Cheqd's ADR.

### DID URL dereferencing (W3C specification)

The current solution is based on the dereferencing algorithm described in the [DID-Resolution#dereferencing](https://w3c-ccg.github.io/did-resolution/#dereferencing) specification and describes how the DID resolver can dereference the resource linked to the DID. It does not describe where the resource is stored.
The current solution is based on the dereferencing algorithm described in the [DID-Resolution#dereferencing](https://www.w3.org/TR/did-resolution/#dereferencing) specification and describes how the DID resolver can dereference the resource linked to the DID. It does not describe where the resource is stored.

The main idea is an algorithm that allows using the DID URL and the information about the services in the DID Document that allows DID Resolver to compose the final resource URL and return the requested resource.

Expand Down Expand Up @@ -475,7 +475,7 @@ Technical details and flows are described in the [AnonCreds](https://hyperledger
The Trinsic solution is built on top of the Hyperledger Aries platform on the Indy blockchain
The main benefit is the Trinsic application layer that defines the domain models, entities, REST API and SDK for working with these.

The resource, such as credential schema, is stored on-chain, but the technical complexity and low-level details are hidden under `Template` and [`Template Service`](https://docs.trinsic.id/reference/services/template-service/#template-service)
The resource, such as credential schema, is stored on-chain, but the technical complexity and low-level details are hidden under `Template` and `Template Service` (see Trinsic developer documentation).

#### Positive & Negative Consequences

Expand Down Expand Up @@ -726,6 +726,6 @@ The main benefits of option #1 for the Identus platform are the following:
- [ToIP - DID URL Resource Parameter Specification](https://wiki.trustoverip.org/display/HOME/DID+URL+Resource+Parameter+Specification)
- [ToPI - DID-Linder Resources Specification](https://wiki.trustoverip.org/display/HOME/DID-Linked+Resources+Specification)
- [DID-Core#did-parameters](https://www.w3.org/TR/did-core/#did-parameters)
- [DID-Resolution#dereferencing](https://w3c-ccg.github.io/did-resolution/#dereferencing)
- [DID-Resolution#dereferencing](https://www.w3.org/TR/did-resolution/#dereferencing)
- [RootsID AnonCreds Methods](https://github.com/roots-id/cardano-anoncreds/blob/main/cardano-anoncred-methods.md)
- [RootsID Cardano AnonCreds repo](https://github.com/roots-id/cardano-anoncreds)
Original file line number Diff line number Diff line change
Expand Up @@ -122,13 +122,13 @@ to obtain a self-contained `access-token` which already include permissions.

__Endpoint references__

- Agent checks the user permissions using [permission endpoint](https://www.keycloak.org/docs/22.0.0/authorization_services/#_service_obtaining_permissions)
- Agent checks the user permissions using [permission endpoint](https://www.keycloak.org/docs/latest/authorization_services/#_service_obtaining_permissions)
- [optional] Client may also directly call this endpoint on keycloak
- Agent registers a new resource using [resource endpoints](https://www.keycloak.org/docs/22.0.0/authorization_services/#_service_protection_resources_api)
- [obtain a token for the resource endpoints](https://www.keycloak.org/docs/22.0.0/authorization_services/#_service_protection_whatis_obtain_pat)
- Agent registers a new resource using [resource endpoints](https://www.keycloak.org/docs/latest/authorization_services/#_service_protection_resources_api)
- [obtain a token for the resource endpoints](https://www.keycloak.org/docs/latest/authorization_services/#_service_protection_whatis_obtain_pat)
- Admin manages the wallet permissions using both
- [Permission API](https://www.keycloak.org/docs/22.0.0/authorization_services/#_service_protection_permission_api_papi)
- [Policy API](https://www.keycloak.org/docs/22.0.0/authorization_services/#_service_authorization_uma_policy_api)
- [Permission API](https://www.keycloak.org/docs/latest/authorization_services/#_service_protection_permission_api_papi)
- [Policy API](https://www.keycloak.org/docs/latest/authorization_services/#_service_authorization_uma_policy_api)

### Positive Consequences

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,4 +58,4 @@ We leave a list of useful links for context

- [AnonCreds Methods Registry](https://hyperledger.github.io/anoncreds-methods-registry/)
- [AnonCreds Specification](https://hyperledger.github.io/anoncreds-spec/)
- [W3C DID resolution algorithm](https://w3c-ccg.github.io/did-resolution/)
- [W3C DID resolution algorithm](https://www.w3.org/TR/did-resolution/)
8 changes: 4 additions & 4 deletions documentation/develop/cloud-agent/authentication.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,21 +103,21 @@ securing modern web applications.
The Cloud Agent utilizes the following Keycloak features:

- Authentication with JWT Token with a configured flow according to
the [ADR](https://staging-docs.atalaprism.io/adrs/adr/20230527-use-keycloak-and-jwt-tokens-for-authentication-and-authorisation-to-facilitate-multitenancy-in-cloud-agent/)
the [ADR](/documentation/adrs/decisions/2023-05-27-use-keycloak-and-jwt-tokens-for-authentication-and-authorisation-to-facilitate-multitenancy-in-cloud-agent)
- Authentication with JWT Token
using [token exchange](https://www.keycloak.org/docs/latest/securing_apps/index.html#_token-exchange)
using [token exchange](https://www.keycloak.org/securing-apps/token-exchange)
- Authorization with `roles` claim supporting both Keycloak [RealmRole](https://www.keycloak.org/docs/latest/server_admin/#proc-creating-realm-roles_server_administration_guide) and [ClientRole](https://www.keycloak.org/docs/latest/server_admin/#con-client-roles_server_administration_guide)
- Authorization with JWT Token and RPT according
to [authorization services](https://www.keycloak.org/docs/latest/authorization_services/index.html#authorization-services)
based
on [UMA 2.0 specification](https://docs.kantarainitiative.org/uma/wg/rec-oauth-uma-grant-2.0.html#:~:text=This%20specification%20defines%20a%20means,a%20resource%20owner%20authorizes%20access.)
and [ADR](https://staging-docs.atalaprism.io/adrs/adr/20230926-use-keycloak-authorisation-service-for-managing-wallet-permissions/)
and [ADR](/documentation/adrs/decisions/2023-09-26-use-keycloak-authorisation-service-for-managing-wallet-permissions)

When the JWT Token authentication is enabled, it includes protection for all multi-tenant and administrative endpoints of the Cloud Agent.
Two mechanisms get utilized in JWT authorization:

1. __Role-based authorization__
It implements this [ADR](https://staging-docs.atalaprism.io/adrs/adr/20240103-use-jwt-claims-for-agent-admin-auth/), which can authorize both the administrator and tenant role.
It implements this [ADR](/documentation/adrs/decisions/2024-01-03-use-jwt-claims-for-agent-admin-auth), which can authorize both the administrator and tenant role.
Each role is allowed to operate on different parts of the Agent
Administrators are permitted to oversee the wallet management, while tenants are allowed to utilize the wallet and engage in SSI interactions.

Expand Down
2 changes: 1 addition & 1 deletion documentation/develop/quick-start.md
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ curl --location \

:::info

📖Learn more about PRISM DIDs and why it is necessary to publish specific DIDs [here](https://staging-docs.atalaprism.io/tutorials/dids/publish).
📖Learn more about PRISM DIDs and why it is necessary to publish specific DIDs [here](/documentation/learn/advanced-explainers/did-prism/).

:::

Expand Down
2 changes: 1 addition & 1 deletion documentation/reference/specifications.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,4 +51,4 @@
| ✅ | ✅ | ✅ | ✅ | [Identus Revocation Notification Protocol 1.0](https://github.com/hyperledger-identus/cloud-agent/blob/main/mercury/protocol-revocation-notification/Revocation-notification-protocol.md) | The protocol for an Issuer to notify the revocation of a credential to the holder. |
| ✅ | ✅ | ✅ | ✅ | [Aries RFC 0035: Report Problem Protocol 1.0](https://github.com/hyperledger/aries-rfcs/blob/main/features/0035-report-problem/README.md) | Report Problem Protocol for DIDCommV2 |
| 🔄 | 🔄 | 🔄 | 🔄 | [OpenID for Verifiable Credential Issuance - draft 15](https://openid.net/specs/openid-4-verifiable-credential-issuance-1_0.html) | OpenID Connect for VC Issuance (VC-JWT is supported only). Client side. |
| 🔄 | 🔄 | 🔄 | 🚧 | [OpenID for Verifiable Credential Presentation - draft 15](https://openid.net/specs/openid-4-verifiable-credential-presentation-1_0.html) | OpenID Connect for VC Presentation (VC-JWT is supported only). Client side. |
| 🔄 | 🔄 | 🔄 | 🚧 | [OpenID for Verifiable Credential Presentation - draft 15](https://openid.net/specs/openid-4-verifiable-presentations-1_0.html) | OpenID Connect for VC Presentation (VC-JWT is supported only). Client side. |
Loading