-
Notifications
You must be signed in to change notification settings - Fork 14
Add scope diagrams section with C4 Level 1 and Level 2 diagrams #159
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
Open
jeremycaine
wants to merge
22
commits into
w3c:main
Choose a base branch
from
jeremycaine:scope-diagrams
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
22 commits
Select commit
Hold shift + click to select a range
954085c
Add introduction section
jeremycaine 31b52dd
Add scope diagrams section with C4 Level 1 and Level 2 diagrams
jeremycaine 0a39c38
Update lws10-core/index.html
jeremycaine cf9be25
Update lws10-core/index.html
jeremycaine 4ada3f2
Update lws10-core/index.html
jeremycaine 8f7c768
Update lws10-core/index.html
jeremycaine 25cdda7
Update lws10-core/index.html
jeremycaine 1e1ea84
Update lws10-core/index.html
jeremycaine 685d6fb
Update lws10-core/index.html
jeremycaine aba265c
Update lws10-core/diagrams/fig-2-container-diagram.md
jeremycaine 99e8716
Restore missing content in lws10-core/index.html
jeremycaine abca902
Merge branch 'scope-diagrams' of https://github.com/jeremycaine/lws-p…
jeremycaine 810e52e
Restore missing content
jeremycaine 3187ac4
Merge branch 'introduction-section' of https://github.com/jeremycaine…
jeremycaine 29ece08
edits in response to comments
jeremycaine 624685f
corrected identtity server scope
jeremycaine 66c4303
reworked diagrams using LikeC4 and markdown descriptions of each
jeremycaine 457cfc8
updated core index.html to show diagrams
jeremycaine 7fe9a79
updated core index.html with table text of diagram elements
jeremycaine ccafd9d
Merge branch 'main' into introduction-section
jeremycaine c6295b9
Merge branch 'introduction-section' of https://github.com/jeremycaine…
jeremycaine da07c8f
updated diagrams for agent
jeremycaine File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,64 @@ | ||
| # Figures | ||
|
|
||
| A set of composition diagrams that models the [Linked Web Storage Protocol](https://w3c.github.io/lws-protocol/lws10-core/) specification. | ||
|
|
||
| ## Figure 1 - System Context Diagram | ||
|
|
||
| Shows the LWS System as a single unit and the person who uses it. Establishes scope only — no internal structure is shown. | ||
|
|
||
|  | ||
|
|
||
| | Box | Description | | ||
| |---|---| | ||
| | Agent | An agent of the LWS system | | ||
| | LWS System | A system that implements the LWS Protocol | | ||
|
|
||
| ## Figure 2 - Container Diagram | ||
|
|
||
| Breaks the LWS System into its primary elements. | ||
|
|
||
|  | ||
|
|
||
| | Box | Description | | ||
| |---|---| | ||
| | Agent | An agent of the LWS system | | ||
| | LWS System | A system that implements the LWS Protocol | | ||
| | LWS Client | An HTTP client that complies with the LWS Protocol | | ||
| | LWS Server | An HTTP server that complies with the LWS Protocol | | ||
|
|
||
| ## Figure 3 - LWS Server Component Diagram | ||
|
|
||
| Decomposition of the LWS Server into components and their responsibilities from client request to storage access. | ||
|
|
||
|  | ||
|
|
||
| | Box | Description | | ||
| |---|---| | ||
| | LWS Client | An HTTP client that complies with the LWS Protocol | | ||
| | LWS Server | An HTTP server that complies with the LWS Protocol | | ||
| | Resource Manager | Manages data resources, containers, containment and linksets | | ||
| | Authentication | Validates credentials against the identity provider | | ||
| | Authorization | Enforces resource manager access decisions | | ||
| | Storage Controller | Controls all resources in the storage directed by its client resource-manager | | ||
| | Identity Provider | Confirms user identity and issues signed credentials. MAY be an external system | | ||
| | Storage | A set of hierarchically organized HTTP resources managed per LWS conventions | | ||
|
|
||
| ## Figure 4 - LWS Resource Type Hierarchy | ||
|
|
||
| The resource type taxonomy and relationship defined in the specification's Terminology section. | ||
|
|
||
|  | ||
|
|
||
| | Box | Description | | ||
| |---|---| | ||
| | Resource Manager | Manages data resources, containers, containment and linksets | | ||
| | Storage | A set of hierarchically organized HTTP resources managed per LWS conventions | | ||
| | LWS Resource | An HTTP resource that supports the read operations defined by LWS | | ||
| | Container | An LWS resource able to enumerate a collection of LWS resources; may recursively contain other containers | | ||
| | Data Resource | A data-bearing LWS resource such as a document, image, or structured information | | ||
| | Auxiliary Resource | An LWS resource whose lifetime is bound to a primary resource | | ||
| | Linkset Resource | An auxiliary resource conforming to RFC9264 | | ||
| | Metadata Resource | An auxiliary resource, managed by a storage, that describes an LWS resource | | ||
| | Storage Root | The container at the root of a containment hierarchy of a storage | | ||
| | Storage Description | Enumerates the storage root and the services/capabilities of a storage | | ||
|
|
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,161 @@ | ||
| specification { | ||
| element actor { | ||
| style { | ||
| shape person | ||
| color amber | ||
| } | ||
| } | ||
| element system { | ||
| style { | ||
| color blue | ||
| opacity 30% | ||
| } | ||
| } | ||
| element externalSystem { | ||
| style { | ||
| color secondary | ||
| opacity 30% | ||
| } | ||
| } | ||
| element component | ||
|
|
||
| element resource { | ||
| style { | ||
| shape document | ||
| color indigo | ||
| } | ||
| } | ||
|
|
||
| relationship isA { | ||
| color gray | ||
| line dashed | ||
| head none | ||
| } | ||
| relationship contains { | ||
| color gray | ||
| head diamond | ||
| } | ||
| relationship boundTo { | ||
| color gray | ||
| line dotted | ||
| head none | ||
| } | ||
| relationship describes { | ||
| color gray | ||
| line dotted | ||
| } | ||
| relationship manages | ||
|
|
||
| tag optional | ||
| } | ||
|
|
||
| model { | ||
| agent = actor 'Agent' { | ||
| description 'An agent of the LWS system' | ||
| } | ||
|
|
||
| lws = system 'LWS System' { | ||
| description 'A system that implements the LWS Protocol' | ||
| component lws-client 'LWS Client' { | ||
| description 'An HTTP client that complies with the LWS Protocol' | ||
| } | ||
| component lws-server 'LWS Server' { | ||
| description 'An HTTP server that complies with the LWS Protocol' | ||
|
|
||
| component identity-provider 'Identity Provider' { | ||
| #optional | ||
| description 'Confirms user identity and issues signed credentials. MAY be an external system' | ||
| } | ||
| component resource-manager 'Resource Manager' { | ||
| description 'Manages data resources, containers, containment and linksets' | ||
| } | ||
| component authentication 'Authentication' { | ||
| description 'Validates credentials against the identity provider' | ||
| } | ||
| component authorization 'Authorization' { | ||
| description 'Enforces resource manager access decisions' | ||
| } | ||
| component storage 'Storage' { | ||
| description 'A set of hierarchically organized HTTP resources managed per LWS conventions' | ||
|
|
||
| lws-resource = resource 'LWS Resource' { | ||
| description 'An HTTP resource that supports the read operations defined by LWS' | ||
| } | ||
| container = resource 'Container' { | ||
| description 'An LWS resource able to enumerate a collection of LWS resources; may recursively contain other containers' | ||
| } | ||
| data-resource = resource 'Data Resource' { | ||
| description 'A data-bearing LWS resource such as a document, image, or structured information' | ||
| } | ||
| auxiliary-resource = resource 'Auxiliary Resource' { | ||
| description 'An LWS resource whose lifetime is bound to a primary resource' | ||
| } | ||
| linkset-resource = resource 'Linkset Resource' { | ||
| description 'An auxiliary resource conforming to RFC9264' | ||
| } | ||
| metadata-resource = resource 'Metadata Resource' { | ||
| description 'An auxiliary resource, managed by a storage, that describes an LWS resource' | ||
| } | ||
| storage-root = resource 'Storage Root' { | ||
| description 'The container at the root of a containment hierarchy of a storage' | ||
| } | ||
| storage-description = resource 'Storage Description' { | ||
| description 'Enumerates the storage root and the services/capabilities of a storage' | ||
| } | ||
|
|
||
| container -[isA]-> lws-resource | ||
| data-resource -[isA]-> lws-resource | ||
| auxiliary-resource -[isA]-> lws-resource | ||
| linkset-resource -[isA]-> auxiliary-resource | ||
| metadata-resource -[isA]-> auxiliary-resource | ||
| storage-root -[isA]-> container | ||
| storage-description -[isA]-> lws-resource | ||
|
|
||
| container -[contains]-> data-resource 'contains' | ||
|
|
||
| auxiliary-resource -[boundTo]-> lws-resource 'bound to primary resource' | ||
| metadata-resource -[describes]-> lws-resource 'describes' | ||
| storage-description -[describes]-> storage-root 'enumerates & describes' | ||
| } | ||
|
|
||
| component storage-controller 'Storage Controller' { | ||
| description 'Controls all resources in the storage directed by its client resource-manager' | ||
| } | ||
| } | ||
|
|
||
| agent -> lws-client 'agent requests' | ||
| lws-client -> lws-server 'HTTP requests' | ||
| lws-client -> identity-provider 'authenticates' | ||
| lws-client -> resource-manager 'sends request' | ||
| resource-manager -> authentication 'authenticates request' | ||
| authentication -> identity-provider 'validates credentials' | ||
| resource-manager -> authorization 'checks permission' | ||
| resource-manager -> storage-controller 'acts as client to' | ||
| storage-controller -> storage 'controls' | ||
| resource-manager -[manages]-> storage-root 'manages' | ||
| } | ||
| } | ||
|
|
||
| views { | ||
| view fig1-system-context { | ||
| title 'System Context Diagram' | ||
| include agent, lws | ||
| } | ||
|
|
||
| view fig2-container-diagram of lws { | ||
| title 'Container Diagram' | ||
| include * | ||
| } | ||
|
|
||
| view fig3-lws-server-components of lws-server { | ||
| title 'LWS Server Component Diagram' | ||
| autoLayout TopBottom | ||
| include * | ||
| } | ||
|
|
||
| view fig4-resource-hierarchy of storage { | ||
| title 'LWS Resource Type Hierarchy' | ||
| autoLayout LeftRight | ||
| include * | ||
| } | ||
| } | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
My comment is mostly about this interaction. In general case this happesn between Authorization Server of the Resource Owner and the IdP of the End-user. Showing it as 'internal' to the LWS Server can bring confusion instead of clarifying it.
You can see Step 10 and after on https://elf-pavlik.github.io/lws-auth/view/oidc/?dynamic=sequence
And F5 & F6 on https://github.com/hackers4peace/likec4-example-customization/blob/4542f2b7edc20549bbf2f856483dccc94a7bdb0f/likec4/lws.c4#L54-L55