From 469ebfae0ff383f11e262462263cc87d0665cb57 Mon Sep 17 00:00:00 2001
From: himazawa <73994521+himazawa@users.noreply.github.com>
Date: Mon, 8 Jul 2024 19:33:08 +0200
Subject: [PATCH 1/9] docs: added metadata and auth flow
---
docs/diagrams/auth_flow.svg | 873 +++++++++++++++++++++++++++++
docs/diagrams/metadata_flow.svg | 860 ++++++++++++++++++++++++++++
docs/diagrams/src/auth_flow.d2 | 67 +++
docs/diagrams/src/classes.d2 | 69 +++
docs/diagrams/src/config.d2 | 13 +
docs/diagrams/src/metadata_flow.d2 | 44 ++
6 files changed, 1926 insertions(+)
create mode 100644 docs/diagrams/auth_flow.svg
create mode 100644 docs/diagrams/metadata_flow.svg
create mode 100644 docs/diagrams/src/auth_flow.d2
create mode 100644 docs/diagrams/src/classes.d2
create mode 100644 docs/diagrams/src/config.d2
create mode 100644 docs/diagrams/src/metadata_flow.d2
diff --git a/docs/diagrams/auth_flow.svg b/docs/diagrams/auth_flow.svg
new file mode 100644
index 000000000..846e8af5c
--- /dev/null
+++ b/docs/diagrams/auth_flow.svg
@@ -0,0 +1,873 @@
+
diff --git a/docs/diagrams/metadata_flow.svg b/docs/diagrams/metadata_flow.svg
new file mode 100644
index 000000000..25644503b
--- /dev/null
+++ b/docs/diagrams/metadata_flow.svg
@@ -0,0 +1,860 @@
+service metadata flowuserawsvpcbucketS3cloudfrontdynamoDBoneid-service-metadata 1. send db Event 2. retrieve client metadata3. upate fileretrieve fileretrieve file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/diagrams/src/auth_flow.d2 b/docs/diagrams/src/auth_flow.d2
new file mode 100644
index 000000000..86fff8f51
--- /dev/null
+++ b/docs/diagrams/src/auth_flow.d2
@@ -0,0 +1,67 @@
+...@classes
+vars: {
+ d2-config: @config.config
+}
+direction: right
+
+title: {
+ class: title
+ label: Authentication flow
+}
+
+user: {
+ class: user
+}
+
+IDP: {
+ class: idpSPID
+}
+productClient: {
+ class: externalCloudService
+}
+
+aws: {
+ class: aws
+ ApiGW: {
+ class: apigw
+ }
+
+ vpc: {
+ class: vpc
+ oneid-ecs-core: {
+ class: ECS
+ }
+ }
+
+ dynamoDB :{
+ class: dynamo
+ }
+
+ KMS: {
+ class: KMS
+ }
+}
+
+user -> productClient: 1. Login
+
+productClient -> user: 2. redirect to OneIdentity
+
+user <-> aws.ApiGW <-> aws.vpc.oneid-ecs-core: 3. /login
+
+user -> aws.ApiGW -> aws.vpc.oneid-ecs-core: 4. /authorize
+user <- aws.ApiGW <- aws.vpc.oneid-ecs-core: 4. redirect POST
+aws.vpc.oneid-ecs-core -> aws.dynamoDB: 4. Init SAMLSession Record
+
+
+user <-> IDP: 5. perform authentication
+
+user -> aws.ApiGW -> aws.vpc.oneid-ecs-core: 6. send and perform verification on SAML response
+
+productClient <- aws.vpc.oneid-ecs-core: 7. init authorization code flow
+
+aws.vpc.oneid-ecs-core <-> aws.dynamoDB: 8. init access session and validate state
+
+aws.vpc.oneid-ecs-core <-> aws.KMS: 9. Sign JWT
+
+aws.vpc.oneid-ecs-core -> productClient: 10. return JWT
+
diff --git a/docs/diagrams/src/classes.d2 b/docs/diagrams/src/classes.d2
new file mode 100644
index 000000000..6c5cd46a4
--- /dev/null
+++ b/docs/diagrams/src/classes.d2
@@ -0,0 +1,69 @@
+classes {
+ *.label.near: bottom-center
+ *.style.border-radius: 5
+ *.style.fill: transparent
+
+ title: {
+ near: bottom-center
+ shape: text
+ style.font-size: 40
+ style.underline: true
+ }
+
+ externalCloudService: {
+ icon: https://icons.terrastruct.com/infra%2F022-hosting.svg
+ }
+
+ user: {
+ icon: https://raw.githubusercontent.com/FortAwesome/Font-Awesome/6.x/svgs/regular/user.svg
+ }
+
+ aws: {
+ label.near: bottom-center
+ style: {
+ stroke-dash: 10
+ stroke: "#f4a261"
+ }
+ }
+
+ vpc: {
+ label.near: top-left
+ style: {
+ stroke-dash: 4
+ }
+ }
+
+ apiGW {
+ icon: https://raw.githubusercontent.com/weibeld/aws-icons-svg/main/q1-2022/Architecture-Service-Icons_01312022/Arch_App-Integration/Arch_32/Arch_%20Amazon-API-Gateway_32.svg
+ }
+
+ lambda: {
+ icon: https://raw.githubusercontent.com/weibeld/aws-icons-svg/main/q1-2022/Architecture-Service-Icons_01312022/Arch_Compute/32/Arch_AWS-Lambda_32.svg
+
+ }
+
+ ECS: {
+ icon: https://raw.githubusercontent.com/weibeld/aws-icons-svg/main/q1-2022/Architecture-Service-Icons_01312022/Arch_Compute/32/Arch_Amazon-Elastic-Container-Service_32.svg
+ }
+
+ dynamo: {
+ icon: https://raw.githubusercontent.com/weibeld/aws-icons-svg/main/q1-2022/Architecture-Service-Icons_01312022/Arch_Database/32/Arch_Amazon-DynamoDB_32.svg
+ }
+
+ s3: {
+ icon: https://raw.githubusercontent.com/weibeld/aws-icons-svg/main/q1-2022/Architecture-Service-Icons_01312022/Arch_Storage/32/Arch_Amazon-S3-on-Outposts_32.svg
+ }
+
+ cloudfront: {
+ icon: https://raw.githubusercontent.com/weibeld/aws-icons-svg/main/q1-2022/Architecture-Service-Icons_01312022/Arch_Networking-Content-Delivery/32/Arch_Amazon-CloudFront_32.svg
+ }
+
+ KMS: {
+ icon: https://raw.githubusercontent.com/weibeld/aws-icons-svg/main/q1-2022/Architecture-Service-Icons_01312022/Arch_Security-Identity-Compliance/32/Arch_AWS-Key-Management-Service_32.svg
+ }
+
+ idpSPID {
+ shape: image
+ icon: https://raw.githubusercontent.com/italia/spid-graphics/master/spid-logos/spid-logo-c-lb.svg
+ }
+}
\ No newline at end of file
diff --git a/docs/diagrams/src/config.d2 b/docs/diagrams/src/config.d2
new file mode 100644
index 000000000..321526591
--- /dev/null
+++ b/docs/diagrams/src/config.d2
@@ -0,0 +1,13 @@
+config: {
+ layout-engine: elk
+ theme-overrides:{
+ N1: "#4C566A"
+ N2: "#4C566A"
+ B1: "#5E81AC"
+ B2: "#81A1C1"
+ B3: "#81A1C1"
+ B4: "#81A1C1"
+ B5: "#81A1C1"
+ B6: "#88C0D0"
+ }
+}
\ No newline at end of file
diff --git a/docs/diagrams/src/metadata_flow.d2 b/docs/diagrams/src/metadata_flow.d2
new file mode 100644
index 000000000..9a0e0f8f5
--- /dev/null
+++ b/docs/diagrams/src/metadata_flow.d2
@@ -0,0 +1,44 @@
+...@classes
+vars: {
+ d2-config: @config.config
+}
+
+direction: right
+
+title: {
+ label: service metadata flow
+ class: title
+}
+
+user: {
+ class: user
+}
+
+
+aws: {
+ class: aws
+ vpc: {
+ class: vpc
+ oneid-service-metadata: {
+ class: lambda
+ }
+ }
+
+ bucketS3: {
+ class: s3
+ }
+
+ cloudfront: {
+ class: cloudfront
+ }
+
+ dynamoDB :{
+ class: dynamo
+ }
+}
+
+aws.dynamoDB -> aws.vpc.oneid-service-metadata: 1. send db Event
+aws.dynamoDB <-> aws.vpc.oneid-service-metadata: 2. retrieve client metadata
+aws.vpc.oneid-service-metadata -> aws.bucketS3: 3. upate file
+
+user -> aws.Cloudfront -> aws.bucketS3: retrieve file
From 64b3e067d1a9a71182de7e8a7258c2faf37aca48 Mon Sep 17 00:00:00 2001
From: himazawa <73994521+himazawa@users.noreply.github.com>
Date: Mon, 15 Jul 2024 15:16:28 +0200
Subject: [PATCH 2/9] chore: uniformed syntax
---
docs/diagrams/src/classes.d2 | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/docs/diagrams/src/classes.d2 b/docs/diagrams/src/classes.d2
index 6c5cd46a4..ddf08fb62 100644
--- a/docs/diagrams/src/classes.d2
+++ b/docs/diagrams/src/classes.d2
@@ -1,4 +1,4 @@
-classes {
+classes: {
*.label.near: bottom-center
*.style.border-radius: 5
*.style.fill: transparent
@@ -33,7 +33,7 @@ classes {
}
}
- apiGW {
+ apiGW: {
icon: https://raw.githubusercontent.com/weibeld/aws-icons-svg/main/q1-2022/Architecture-Service-Icons_01312022/Arch_App-Integration/Arch_32/Arch_%20Amazon-API-Gateway_32.svg
}
@@ -62,7 +62,7 @@ classes {
icon: https://raw.githubusercontent.com/weibeld/aws-icons-svg/main/q1-2022/Architecture-Service-Icons_01312022/Arch_Security-Identity-Compliance/32/Arch_AWS-Key-Management-Service_32.svg
}
- idpSPID {
+ idpSPID: {
shape: image
icon: https://raw.githubusercontent.com/italia/spid-graphics/master/spid-logos/spid-logo-c-lb.svg
}
From 84dcae7be97dda4abea96c9d742aa6c5bdb999f4 Mon Sep 17 00:00:00 2001
From: himazawa <73994521+himazawa@users.noreply.github.com>
Date: Fri, 11 Oct 2024 12:31:47 +0200
Subject: [PATCH 3/9] feat: improved request details, added param store, added
pinning on svgs
---
docs/diagrams/src/auth_flow.d2 | 27 +-
docs/diagrams/src/auth_flow.svg | 878 ++++++++++++++++++++++++++++++++
docs/diagrams/src/classes.d2 | 22 +-
3 files changed, 910 insertions(+), 17 deletions(-)
create mode 100644 docs/diagrams/src/auth_flow.svg
diff --git a/docs/diagrams/src/auth_flow.d2 b/docs/diagrams/src/auth_flow.d2
index 86fff8f51..466f0a8b5 100644
--- a/docs/diagrams/src/auth_flow.d2
+++ b/docs/diagrams/src/auth_flow.d2
@@ -16,6 +16,7 @@ user: {
IDP: {
class: idpSPID
}
+
productClient: {
class: externalCloudService
}
@@ -37,9 +38,14 @@ aws: {
class: dynamo
}
+ parameterStore {
+ class: parameterStore
+ }
+
KMS: {
class: KMS
}
+
}
user -> productClient: 1. Login
@@ -48,20 +54,25 @@ productClient -> user: 2. redirect to OneIdentity
user <-> aws.ApiGW <-> aws.vpc.oneid-ecs-core: 3. /login
-user -> aws.ApiGW -> aws.vpc.oneid-ecs-core: 4. /authorize
-user <- aws.ApiGW <- aws.vpc.oneid-ecs-core: 4. redirect POST
-aws.vpc.oneid-ecs-core -> aws.dynamoDB: 4. Init SAMLSession Record
+user -> aws.ApiGW -> aws.vpc.oneid-ecs-core: 4: /authorize
+aws.vpc.oneid-ecs-core -> aws.parameterStore: 4.1: retrive key pem file from parameter store
+user <- aws.ApiGW <- aws.vpc.oneid-ecs-core: 4.2: redirect POST
+aws.vpc.oneid-ecs-core -> aws.dynamoDB: 5: init SAMLSession record
-user <-> IDP: 5. perform authentication
-user -> aws.ApiGW -> aws.vpc.oneid-ecs-core: 6. send and perform verification on SAML response
+user <-> IDP: 6: perform authentication
-productClient <- aws.vpc.oneid-ecs-core: 7. init authorization code flow
+user -> aws.ApiGW -> aws.vpc.oneid-ecs-core: 7: send and perform verification on SAML response
+aws.vpc.oneid-ecs-core -> aws.dynamoDB: 7.1: retrieve certificate data
+aws.vpc.oneid-ecs-core -> aws.dynamoDB: 7.2: update SAMLSession and initialize OIDCSession records
-aws.vpc.oneid-ecs-core <-> aws.dynamoDB: 8. init access session and validate state
+productClient <- aws.vpc.oneid-ecs-core: 8: init authorization code flow
+productClient -> aws.vpc.oneid-ecs-core: 8.1: send /token POST to init access token session
+
+aws.vpc.oneid-ecs-core <-> aws.dynamoDB: 9. init access session and validate state
-aws.vpc.oneid-ecs-core <-> aws.KMS: 9. Sign JWT
+aws.vpc.oneid-ecs-core <-> aws.KMS: 10. Sign JWT
aws.vpc.oneid-ecs-core -> productClient: 10. return JWT
diff --git a/docs/diagrams/src/auth_flow.svg b/docs/diagrams/src/auth_flow.svg
new file mode 100644
index 000000000..d96a4da10
--- /dev/null
+++ b/docs/diagrams/src/auth_flow.svg
@@ -0,0 +1,878 @@
+Authentication flowuserIDPproductClientawsApiGWvpcdynamoDBparameterStoreKMSoneid-ecs-core 1. Login2. redirect to OneIdentity 3. /login3. /login4: /authorize4: /authorize4.1: retrive key pem file from parameter store4.2: redirect POST4.2: redirect POST5: Init SAMLSession Record6: perform authentication7: send and perform verification on SAML response7: send and perform verification on SAML response7.1: retrieve certificate data7.2: update SAML SESSION RECORD and initialize OIDCSession record8: init authorization code flow8.1: send /token POST to init access token session9. init access session and validate state10. Sign JWT10. return JWT
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/diagrams/src/classes.d2 b/docs/diagrams/src/classes.d2
index ddf08fb62..1120dd61b 100644
--- a/docs/diagrams/src/classes.d2
+++ b/docs/diagrams/src/classes.d2
@@ -19,7 +19,7 @@ classes: {
}
aws: {
- label.near: bottom-center
+ label.near: bottom-left
style: {
stroke-dash: 10
stroke: "#f4a261"
@@ -27,43 +27,47 @@ classes: {
}
vpc: {
- label.near: top-left
+ label.near: bottom-left
style: {
stroke-dash: 4
}
}
apiGW: {
- icon: https://raw.githubusercontent.com/weibeld/aws-icons-svg/main/q1-2022/Architecture-Service-Icons_01312022/Arch_App-Integration/Arch_32/Arch_%20Amazon-API-Gateway_32.svg
+ icon: https://raw.githubusercontent.com/weibeld/aws-icons-svg/5e0e14e5472f1eefed879d7ea7e1d79652858d14/q1-2022/Architecture-Service-Icons_01312022/Arch_App-Integration/Arch_32/Arch_%20Amazon-API-Gateway_32.svg
}
lambda: {
- icon: https://raw.githubusercontent.com/weibeld/aws-icons-svg/main/q1-2022/Architecture-Service-Icons_01312022/Arch_Compute/32/Arch_AWS-Lambda_32.svg
+ icon: https://raw.githubusercontent.com/weibeld/aws-icons-svg/5e0e14e5472f1eefed879d7ea7e1d79652858d14/q1-2022/Architecture-Service-Icons_01312022/Arch_Compute/32/Arch_AWS-Lambda_32.svg
}
ECS: {
- icon: https://raw.githubusercontent.com/weibeld/aws-icons-svg/main/q1-2022/Architecture-Service-Icons_01312022/Arch_Compute/32/Arch_Amazon-Elastic-Container-Service_32.svg
+ icon: https://raw.githubusercontent.com/weibeld/aws-icons-svg/5e0e14e5472f1eefed879d7ea7e1d79652858d14/q1-2022/Architecture-Service-Icons_01312022/Arch_Compute/32/Arch_Amazon-Elastic-Container-Service_32.svg
}
dynamo: {
- icon: https://raw.githubusercontent.com/weibeld/aws-icons-svg/main/q1-2022/Architecture-Service-Icons_01312022/Arch_Database/32/Arch_Amazon-DynamoDB_32.svg
+ icon: https://raw.githubusercontent.com/weibeld/aws-icons-svg/5e0e14e5472f1eefed879d7ea7e1d79652858d14/q1-2022/Architecture-Service-Icons_01312022/Arch_Database/32/Arch_Amazon-DynamoDB_32.svg
}
s3: {
- icon: https://raw.githubusercontent.com/weibeld/aws-icons-svg/main/q1-2022/Architecture-Service-Icons_01312022/Arch_Storage/32/Arch_Amazon-S3-on-Outposts_32.svg
+ icon: https://raw.githubusercontent.com/weibeld/aws-icons-svg/5e0e14e5472f1eefed879d7ea7e1d79652858d14/q1-2022/Architecture-Service-Icons_01312022/Arch_Storage/32/Arch_Amazon-S3-on-Outposts_32.svg
}
cloudfront: {
- icon: https://raw.githubusercontent.com/weibeld/aws-icons-svg/main/q1-2022/Architecture-Service-Icons_01312022/Arch_Networking-Content-Delivery/32/Arch_Amazon-CloudFront_32.svg
+ icon: https://raw.githubusercontent.com/weibeld/aws-icons-svg/5e0e14e5472f1eefed879d7ea7e1d79652858d14/q1-2022/Architecture-Service-Icons_01312022/Arch_Networking-Content-Delivery/32/Arch_Amazon-CloudFront_32.svg
}
KMS: {
- icon: https://raw.githubusercontent.com/weibeld/aws-icons-svg/main/q1-2022/Architecture-Service-Icons_01312022/Arch_Security-Identity-Compliance/32/Arch_AWS-Key-Management-Service_32.svg
+ icon: https://raw.githubusercontent.com/weibeld/aws-icons-svg/5e0e14e5472f1eefed879d7ea7e1d79652858d14/q1-2022/Architecture-Service-Icons_01312022/Arch_Security-Identity-Compliance/48/Arch_AWS-Key-Management-Service_48.svg
}
idpSPID: {
shape: image
icon: https://raw.githubusercontent.com/italia/spid-graphics/master/spid-logos/spid-logo-c-lb.svg
}
+
+ parameterStore {
+ icon: https://raw.githubusercontent.com/weibeld/aws-icons-svg/5e0e14e5472f1eefed879d7ea7e1d79652858d14/q1-2022/Resource-Icons_01312022/Res_Management-Governance/Res_48_Light/Res_AWS-Systems-Manager_Parameter-Store_48_Light.svg
+ }
}
\ No newline at end of file
From e49ff4c3e84b84cedbf07b5d17c6b78f614aca9c Mon Sep 17 00:00:00 2001
From: himazawa <73994521+himazawa@users.noreply.github.com>
Date: Fri, 11 Oct 2024 12:34:44 +0200
Subject: [PATCH 4/9] chore: moved auth_flow diagram svg to diagrams folder
---
docs/diagrams/auth_flow.svg | 631 +++++++++++------------
docs/diagrams/src/auth_flow.svg | 878 --------------------------------
2 files changed, 318 insertions(+), 1191 deletions(-)
delete mode 100644 docs/diagrams/src/auth_flow.svg
diff --git a/docs/diagrams/auth_flow.svg b/docs/diagrams/auth_flow.svg
index 846e8af5c..d96a4da10 100644
--- a/docs/diagrams/auth_flow.svg
+++ b/docs/diagrams/auth_flow.svg
@@ -1,27 +1,27 @@
-Authentication flowuserIDPproductClientawsApiGWvpcdynamoDBKMSoneid-ecs-core 1. Login2. redirect to OneIdentity 3. /login3. /login4. /authorize4. /authorize4. redirect POST4. redirect POST4. Init SAMLSession Record5. perform authentication6. send and perform verification on SAML response6. send and perform verification on SAML response7. init authorization code flow8. init access session and validate state9. Sign JWT10. return JWT
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+Authentication flowuserIDPproductClientawsApiGWvpcdynamoDBparameterStoreKMSoneid-ecs-core 1. Login2. redirect to OneIdentity 3. /login3. /login4: /authorize4: /authorize4.1: retrive key pem file from parameter store4.2: redirect POST4.2: redirect POST5: Init SAMLSession Record6: perform authentication7: send and perform verification on SAML response7: send and perform verification on SAML response7.1: retrieve certificate data7.2: update SAML SESSION RECORD and initialize OIDCSession record8: init authorization code flow8.1: send /token POST to init access token session9. init access session and validate state10. Sign JWT10. return JWT
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/diagrams/src/auth_flow.svg b/docs/diagrams/src/auth_flow.svg
deleted file mode 100644
index d96a4da10..000000000
--- a/docs/diagrams/src/auth_flow.svg
+++ /dev/null
@@ -1,878 +0,0 @@
-Authentication flowuserIDPproductClientawsApiGWvpcdynamoDBparameterStoreKMSoneid-ecs-core 1. Login2. redirect to OneIdentity 3. /login3. /login4: /authorize4: /authorize4.1: retrive key pem file from parameter store4.2: redirect POST4.2: redirect POST5: Init SAMLSession Record6: perform authentication7: send and perform verification on SAML response7: send and perform verification on SAML response7.1: retrieve certificate data7.2: update SAML SESSION RECORD and initialize OIDCSession record8: init authorization code flow8.1: send /token POST to init access token session9. init access session and validate state10. Sign JWT10. return JWT
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
From 8b81ec0ce4eba043346e1df0833ec62df4ffc467 Mon Sep 17 00:00:00 2001
From: himazawa <73994521+himazawa@users.noreply.github.com>
Date: Fri, 11 Oct 2024 12:54:22 +0200
Subject: [PATCH 5/9] fix: fixed request numbers
---
docs/diagrams/auth_flow.svg | 638 +++++++++++++++++----------------
docs/diagrams/src/auth_flow.d2 | 28 +-
2 files changed, 332 insertions(+), 334 deletions(-)
diff --git a/docs/diagrams/auth_flow.svg b/docs/diagrams/auth_flow.svg
index d96a4da10..df37c2902 100644
--- a/docs/diagrams/auth_flow.svg
+++ b/docs/diagrams/auth_flow.svg
@@ -1,27 +1,27 @@
-Authentication flowuserIDPproductClientawsApiGWvpcdynamoDBparameterStoreKMSoneid-ecs-core 1. Login2. redirect to OneIdentity 3. /login3. /login4: /authorize4: /authorize4.1: retrive key pem file from parameter store4.2: redirect POST4.2: redirect POST5: Init SAMLSession Record6: perform authentication7: send and perform verification on SAML response7: send and perform verification on SAML response7.1: retrieve certificate data7.2: update SAML SESSION RECORD and initialize OIDCSession record8: init authorization code flow8.1: send /token POST to init access token session9. init access session and validate state10. Sign JWT10. return JWT
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+Authentication flowuserIDPproductClientawsApiGWvpcdynamoDBparameterStoreKMSoneid-ecs-core 1. Login2. redirect to OneIdentity 3. /login3. /login4: /authorize4: /authorize4.1: retrive key pem file from parameter store4.2: init SAMLSession record4.3: redirect POST4.3: redirect POST5: perform authentication6: send and perform verification on SAML response6: send and perform verification on SAML response6.1: retrieve certificate data6.2: update SAMLSession and initialize OIDCSession records7: init authorization code flow7.1: send /token POST to init access token session7.1: send /token POST to init access token session7.2: retrieve ClientRegistrations data7.3: init access session and validate state7.4: Sign JWT7.5: return JWT
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/diagrams/src/auth_flow.d2 b/docs/diagrams/src/auth_flow.d2
index 466f0a8b5..7f1768a6b 100644
--- a/docs/diagrams/src/auth_flow.d2
+++ b/docs/diagrams/src/auth_flow.d2
@@ -56,23 +56,19 @@ user <-> aws.ApiGW <-> aws.vpc.oneid-ecs-core: 3. /login
user -> aws.ApiGW -> aws.vpc.oneid-ecs-core: 4: /authorize
aws.vpc.oneid-ecs-core -> aws.parameterStore: 4.1: retrive key pem file from parameter store
-user <- aws.ApiGW <- aws.vpc.oneid-ecs-core: 4.2: redirect POST
+aws.vpc.oneid-ecs-core -> aws.dynamoDB: 4.2: init SAMLSession record
+user <- aws.ApiGW <- aws.vpc.oneid-ecs-core: 4.3: redirect POST
-aws.vpc.oneid-ecs-core -> aws.dynamoDB: 5: init SAMLSession record
+user <-> IDP: 5: perform authentication
+user -> aws.ApiGW -> aws.vpc.oneid-ecs-core: 6: send and perform verification on SAML response
+aws.vpc.oneid-ecs-core <-> aws.dynamoDB: 6.1: retrieve certificate data
+aws.vpc.oneid-ecs-core -> aws.dynamoDB: 6.2: update SAMLSession and initialize OIDCSession records
-user <-> IDP: 6: perform authentication
-
-user -> aws.ApiGW -> aws.vpc.oneid-ecs-core: 7: send and perform verification on SAML response
-aws.vpc.oneid-ecs-core -> aws.dynamoDB: 7.1: retrieve certificate data
-aws.vpc.oneid-ecs-core -> aws.dynamoDB: 7.2: update SAMLSession and initialize OIDCSession records
-
-productClient <- aws.vpc.oneid-ecs-core: 8: init authorization code flow
-productClient -> aws.vpc.oneid-ecs-core: 8.1: send /token POST to init access token session
-
-aws.vpc.oneid-ecs-core <-> aws.dynamoDB: 9. init access session and validate state
-
-aws.vpc.oneid-ecs-core <-> aws.KMS: 10. Sign JWT
-
-aws.vpc.oneid-ecs-core -> productClient: 10. return JWT
+productClient <- aws.vpc.oneid-ecs-core: 7: init authorization code flow
+productClient -> aws.ApiGW -> aws.vpc.oneid-ecs-core: 7.1: send /token POST to init access token session
+aws.vpc.oneid-ecs-core <-> aws.dynamoDB: 7.2: retrieve ClientRegistrations data
+aws.vpc.oneid-ecs-core <-> aws.dynamoDB: 7.3: init access session and validate state
+aws.vpc.oneid-ecs-core <-> aws.KMS: 7.4: Sign JWT
+aws.vpc.oneid-ecs-core -> productClient: 7.5: return JWT
From 92dc337ad432067af9d1567c6810afef21647278 Mon Sep 17 00:00:00 2001
From: himazawa <73994521+himazawa@users.noreply.github.com>
Date: Fri, 11 Oct 2024 14:52:17 +0200
Subject: [PATCH 6/9] feat: added infra scheme, moved icons to local storage
Signed-off-by: himazawa <73994521+himazawa@users.noreply.github.com>
---
docs/diagrams/auth_flow.svg | 568 +++++++++---------
docs/diagrams/icons/KMS.svg | 18 +
docs/diagrams/icons/apigw.svg | 18 +
docs/diagrams/icons/cloudfront.svg | 18 +
docs/diagrams/icons/dynamo.svg | 18 +
docs/diagrams/icons/ecs.svg | 20 +
docs/diagrams/icons/github.png | Bin 0 -> 5022 bytes
docs/diagrams/icons/lambda.svg | 18 +
docs/diagrams/icons/pagopa.jpeg | Bin 0 -> 4465 bytes
docs/diagrams/icons/paramstore.svg | 7 +
docs/diagrams/icons/s3.svg | 18 +
docs/diagrams/icons/spid-logo.svg | 1 +
docs/diagrams/infra.svg | 885 +++++++++++++++++++++++++++++
docs/diagrams/metadata_flow.svg | 570 +++++++++----------
docs/diagrams/src/auth_flow.d2 | 2 +-
docs/diagrams/src/classes.d2 | 28 +-
docs/diagrams/src/infra.d2 | 114 ++++
17 files changed, 1721 insertions(+), 582 deletions(-)
create mode 100644 docs/diagrams/icons/KMS.svg
create mode 100644 docs/diagrams/icons/apigw.svg
create mode 100644 docs/diagrams/icons/cloudfront.svg
create mode 100644 docs/diagrams/icons/dynamo.svg
create mode 100644 docs/diagrams/icons/ecs.svg
create mode 100644 docs/diagrams/icons/github.png
create mode 100644 docs/diagrams/icons/lambda.svg
create mode 100644 docs/diagrams/icons/pagopa.jpeg
create mode 100644 docs/diagrams/icons/paramstore.svg
create mode 100644 docs/diagrams/icons/s3.svg
create mode 100644 docs/diagrams/icons/spid-logo.svg
create mode 100644 docs/diagrams/infra.svg
create mode 100644 docs/diagrams/src/infra.d2
diff --git a/docs/diagrams/auth_flow.svg b/docs/diagrams/auth_flow.svg
index df37c2902..d48149ef5 100644
--- a/docs/diagrams/auth_flow.svg
+++ b/docs/diagrams/auth_flow.svg
@@ -1,26 +1,26 @@
-Authentication flowuserIDPproductClientawsApiGWvpcdynamoDBparameterStoreKMSoneid-ecs-core 1. Login2. redirect to OneIdentity 3. /login3. /login4: /authorize4: /authorize4.1: retrive key pem file from parameter store4.2: init SAMLSession record4.3: redirect POST4.3: redirect POST5: perform authentication6: send and perform verification on SAML response6: send and perform verification on SAML response6.1: retrieve certificate data6.2: update SAMLSession and initialize OIDCSession records7: init authorization code flow7.1: send /token POST to init access token session7.1: send /token POST to init access token session7.2: retrieve ClientRegistrations data7.3: init access session and validate state7.4: Sign JWT7.5: return JWT
+Authentication flowuserIDPproductClientawsApiGWvpcdynamoDBparameterStoreKMSoneid-ecs-core 1. Login2. redirect to OneIdentity 3. /login3. /login4: /authorize4: /authorize4.1: retrive key pem file from parameter store4.2: init SAMLSession record4.3: redirect POST4.3: redirect POST5: perform authentication6: send and perform verification on SAML response6: send and perform verification on SAML response6.1: retrieve certificate data6.2: update SAMLSession and initialize OIDCSession records7: init authorization code flow7.1: send /token POST to init access token session7.1: send /token POST to init access token session7.2: retrieve ClientRegistrations data7.3: init access session and validate state7.4: Sign JWT7.5: return JWT
-
+
diff --git a/docs/diagrams/icons/KMS.svg b/docs/diagrams/icons/KMS.svg
new file mode 100644
index 000000000..94e0a9ecb
--- /dev/null
+++ b/docs/diagrams/icons/KMS.svg
@@ -0,0 +1,18 @@
+
+
+
+ Icon-Architecture/48/Arch_AWS-Key-Management-Services_48
+ Created with Sketch.
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/diagrams/icons/apigw.svg b/docs/diagrams/icons/apigw.svg
new file mode 100644
index 000000000..196a49756
--- /dev/null
+++ b/docs/diagrams/icons/apigw.svg
@@ -0,0 +1,18 @@
+
+
+ Icon-Architecture/32/Arch_ Amazon-API-Gateway_32
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/diagrams/icons/cloudfront.svg b/docs/diagrams/icons/cloudfront.svg
new file mode 100644
index 000000000..65d1f7dc6
--- /dev/null
+++ b/docs/diagrams/icons/cloudfront.svg
@@ -0,0 +1,18 @@
+
+
+
+ Icon-Architecture/32/Arch_Amazon-CloudFront_32
+ Created with Sketch.
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/diagrams/icons/dynamo.svg b/docs/diagrams/icons/dynamo.svg
new file mode 100644
index 000000000..5a67a3789
--- /dev/null
+++ b/docs/diagrams/icons/dynamo.svg
@@ -0,0 +1,18 @@
+
+
+
+ Icon-Architecture/32/Arch_Amazon-DynamoDB_32
+ Created with Sketch.
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/diagrams/icons/ecs.svg b/docs/diagrams/icons/ecs.svg
new file mode 100644
index 000000000..2f2564dd8
--- /dev/null
+++ b/docs/diagrams/icons/ecs.svg
@@ -0,0 +1,20 @@
+
+
+
+ Icon-Architecture/32/Arch_Amazon-Elastic-Container-Service_32
+ Created with Sketch.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/diagrams/icons/github.png b/docs/diagrams/icons/github.png
new file mode 100644
index 0000000000000000000000000000000000000000..d4cfe72b372a5b1d556432cd93eeca0874c576b6
GIT binary patch
literal 5022
zcmZ`+WmuG5*S#4!B?X3=ff+_xS`?6yR!YPnr9--7P+(9bMY`i51SCX2=~POPFhGzT
zl~P)|-+S+mRz1G@mpFb0&r=w0w1*HN2fL2pOMIU@`5WW<|;FB_j
zJr8`5I4Ef=0YG&e^|2Kx_?yc{Lth&J0(k%c7X|=_U<$Vc0KTFC@Y@mqWYPhE)g!y<
z_H_V&Z0l(msDcN;4-CcwMR3CqXbvtk2PZcNf}4Z$Jm3NYZWt$ukOZIL8BP=&&dZ2K
zL%|Fem`B49e|Nb-1i~3EZf0IyC;|m87$F1Z!9o-Ziy#*l7nBPHBS8IcfjCeu?u$qy
zD1)7#;a@cH7?cYwC@9FvDolVS(1F6x1Q1Z?{}9jwRa~GRG#q&efk6BvW#vAnIB$f|
zASX8fC_bXV
z3zma6f(9blxVX*_6Po>d29yUQ_)qWz1|zu228t(45S$U3U=euoe0*R)Fzv4)=T3s!
z{%%2`pjvRCU=?9-gmMnPb2ACbbFmm=n#)$$Rb
zBG?NjC+A;$0x8H&Xa~HO|4Ie9*f}qO7w^1~`|Rv&e+PLLyc35$`Z{+2A`V$I?50
z_RrHZYujn2P&%3Wsg2+E8&Vu-RYIyxgOzF6jFX0rj|LNsScxV4yG}+U$*9ZM%PT^!T#la(>S%4@s@wN0n|Rf^SX6g}ys4wiw*@{W^w>
zekvEIAuIVy0H
zngV~2`)F#bk}r{y(onH>a>S?r0A0SOijqOV#A*&!@oqPwmmHfK*vj`pGa9R`rKhZ-
zqM>wKQS+i_qcB?~Nd{8C_(yoO{iQkK$|&l!g~W`xwv>!{Y73JL%tE)3;xikah`
zZK^<#Y`b6yhlA-qM|&9(?Zd5$*%=3e?!gK-XcEM?M$f+Z+}d?eVpVg=fZ&+<4lF$v+uO6
zh)v|b3dDQyz3|Pdi)&_g@o0|U%{NeizsvOXVV&5h%R#*$i;jGVf+@Hz3g7-@AmO`u
z@$q5o?$S(Wj8nzZ3!{n#&rP{fVJFyUYGkE@Eo4-iQg^pUHEX;`Zq!&)tna?ZokOD+
zL^oF_FOa(R?w^iu(Ng?!k*Smm=DMQynCya>KP+0akgVJ-h=~=W{7(T7-}D#s6!f-~
zQ?yG$=Rg29A}+7EPq1r4%*mGV%H2XWj_64dq4>;-JR0IO7TvKTie$%;GL*Dnd_nx>
zPI}I_5}M4hpL>^vCw)j%pD#J=_}zb6^nTkcI=AK9FXo({`K4ajnVSp(d)U?h3yLB>
z7HGlneS^4yQIcl5W*!m!uFPwiTScF)MVrXIuAR@xR!?yL$b1=FLYKF6#r1i3ZmijF
zvgnTk{&3lxrY9}Owcm3Rbf;Cgo1EXuddv87UD?Ymj<}8Mb?unmTsaip^MI
zM+POAE-{$@b9-b}Qr9xoF(jiYAF;4!JXYvdYS=K=KBB!Nz`1^`=ub)qAMP|YQklkJ
z=oAdwzmCN2K&R3gaZR;>xRce9!CLxjg$A=0M$C-u0h)zHWV+p`R8`uzIQR6FQa`J0
zua8e{GMt9HQ{4NaQ_9KMi8+#!M}?~k#zxBwd6oPo-i65p_iBl0OvP^nEw@?AC$+I^
z%f+->NLuRTy@Xq3^?bE&;-*;sgrCi2PkW}Y@q5llD>q9{z4o7NaAb7OZJlKH-!qbO
zFKoRVI%^v^vRfX;+&;g(N17@mQ#J2e>)5fjMxHey?Cm!?VBnb0Z@nbz)IvM{gLkof
ztqtyFX6U#7{Qb^)wAVU?tu-dfJnlq`)JV?hAQyfp|j{aUz8`q!!XWUbMnQ
zjfzvrxPkD7p`vV_1l;Zj2hj!*u2uJD#T~`P90w#2%w+k>eWz&0La8$C4h3%b22Euf
z?u?D(IQyU_N%8yd`MZWu)1l8i_l#xVw}i>z*1BSfiO*>5Jy=A{s3gyN$cu@Iz3($O
z2WIBtWS%-_4a$-_RWG}gGrc(gn)^EN?MrWBW@!#p(uPD&63j^@u`1VG1c&Z!E`$`V
za)e5~Vh$)!cv}@Pp4xMw#Y?M;xfAqAdD+r$)>Qmn_!YCK
zVQJ_Ps+tGG)8Q`_S0{eN)lmi{TC%L=sQJ
zF*=#YI8&i5`ag-~0Is~ga-F*26sm?-=?I;jd=|q4;K#%uNkJ=stJ}R(dOV9!C}RMn
z?Aw@nVG*nLW1Hlb_|RV$l~7zQSRx(#&`Pt`0pd9so(1uYDIHMz0en=kqt?gA#(S2^
z0|9*cc#&@mCW$8i{@U{n-0(I-WUn{{zes0eOS25{t$@FSYAQ7+pP{rn*b{-l3$M^v
zRA>8_8Q4^GNQ|?mCd#a^#&uF%&&>IL#rl947!FhU3DC(7cT&-e(_B{vzO4;elb&Yh
zSP2uk(3)03LI#KEm4JiUVk^=%x^aFK&NYIhqGK51r$d3Zu9ncppU_*r*HH!Z@j`xK
zl_dJ#S0q4HEf(D*iQGq6FdQsELHeBbh4d{IQG2KHrI&)J`9--h)CBk*k(Z8%!>VLc
zb)1NC7rv8_Wsesy^;va{HeL%wCUn(WW_4B%HNI<`xB^4QQ3JTB8HIx;vPzGW~X5E%ukB8KQBvrC2zp(F#{xxcx8{42h9XI
zrj?($5qUCS4}D1NsMmymduT_V$Wn?1uzkO{iHSVOa=Wrb43Up=(}Uzd8glRuzj!Gt
z4spDp(!#9#I3u}}(h(PNF1gqYL!gGGF=jY0??({S_F-9}_SJEVvl;dLj8;Z`{Ib1G2E{Lkb|wjA
z22qj-uSbTl9*WnM-Y1vmY$G9eUu4XiW)*<$KEgcM>-NO$uPeSLURPsmBRh%tvPu!)
zpmeJ=_(A}
zony&kk=(4GYUMW~+J5f%V8R13GCUlwsIM-DT&vyF#B04K!i?LY
zMpA(CwE#zS``)R!Q5JuebIzU@`*L7erG?m-whMdDuwv@gXj2^>gNf11Xw8ks*jMTs
z>`i6;K?~lHFGS&iW&UyVwXdBR72^zMWIw$OzkG?&rs38D!&_T?`lDieoxSukg}n!^
z*Y#K3h>DK=3+;?&m!C}vf9`S5Qz^qd*}A^?A?fA_in%1Dz&Y4FZdE~#LDSA8Hl@vH
zMBTrClC0ubr?IYX-EeZ}=DXvc3bJ})@RX*Pwp~AbN}Sp*r@o+}#Af-vhkRO(3ZZ1Z
zog(~&>(@lT@4;AGd+}F)`<_@N^t1U&vpWe(n$H^K$mG{G&M|U}lkvE*p?G7Ht|8X1
zXTNO9qV(;oJ<-c10oW$BfbIO8Q5$M80DP{jTFQy|Pxie!nyn
z6Jqvlt(vX4?c-Ws>W^PwujJObo~Ub8%4jdyr3D7^uN?^3M66XQaN~0sawwt3WX^B#k?2ENF(hCF7F{k#t7Qp%Pg125KUkQ~wy;sy(TG~jzVpFr5NG@@M^>P#
zu8~<=$UwH+uxq(<@N;xpDNH1TUqN{8K-wbU?!1q*f9e-$=w=Oz8D=1B$>h0A9nPDs
zyl&65f_4MibNX)nf+dfZ=ZPTmbn!7c+Wc!+eOTi=C;x*hACxN%>5lHUwd)6u^%7kU
zAeQ?kOOw&stJyBbxV^y+l#<=oI$)idRCs602Uz=nzJ
z6h2Y1B9-I%bm{?p{denZwNm*%s#xBRy>E8I{SItZ?iloYQ(n@UMYcv`)#_6Yhq+=l
z_b#too!$@HVziO6LJSt!Tx
zr2S_3o0s(NQSTB(OKMU*{zbs7gx&N7*&S+OcvmmSv}w$cNMCB}n;iHUIH*{b;QHGk0rxv=Afq
z2b@Y$C{{8N*&`-7X3cI{JL4S@^-yHE6YCx4bfB|}PoL7cxa1CPsBif;5v&R^d8|!O
zSwpHm=r^9X#*iRU)hCmfB6=IiBz_NBj03)wY=Nmd
zLX;%Vmvt#muyb}<`RT~yZ=zaM`JK^z--{vERg5dU#z3l^
zn!Utc2;^#tr>Wg{jclj0Ru?DsuBm&HpKIb+>i2$Nv8X
U=B%-FU;&`1s-seQ!}8I80N%xXdjJ3c
literal 0
HcmV?d00001
diff --git a/docs/diagrams/icons/lambda.svg b/docs/diagrams/icons/lambda.svg
new file mode 100644
index 000000000..77c67f47d
--- /dev/null
+++ b/docs/diagrams/icons/lambda.svg
@@ -0,0 +1,18 @@
+
+
+
+ Icon-Architecture/32/Arch_AWS-Lambda_32
+ Created with Sketch.
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/diagrams/icons/pagopa.jpeg b/docs/diagrams/icons/pagopa.jpeg
new file mode 100644
index 0000000000000000000000000000000000000000..cb11ace9c6e1d6d68f65c8f941507a36a49de583
GIT binary patch
literal 4465
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
Oswv%fO^$%0_x}MQyNNRZ
literal 0
HcmV?d00001
diff --git a/docs/diagrams/icons/paramstore.svg b/docs/diagrams/icons/paramstore.svg
new file mode 100644
index 000000000..cf5597200
--- /dev/null
+++ b/docs/diagrams/icons/paramstore.svg
@@ -0,0 +1,7 @@
+
+
+ Icon-Resource/Managment-Governance/Res_AWS-System-Manager_Parameter-Store_48_Light
+
+
+
+
\ No newline at end of file
diff --git a/docs/diagrams/icons/s3.svg b/docs/diagrams/icons/s3.svg
new file mode 100644
index 000000000..b178e8654
--- /dev/null
+++ b/docs/diagrams/icons/s3.svg
@@ -0,0 +1,18 @@
+
+
+ Icon-Architecture/32/Arch_Amazon-S3-On-Outposts_Storage_32
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/diagrams/icons/spid-logo.svg b/docs/diagrams/icons/spid-logo.svg
new file mode 100644
index 000000000..c8d1dbdf1
--- /dev/null
+++ b/docs/diagrams/icons/spid-logo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/docs/diagrams/infra.svg b/docs/diagrams/infra.svg
new file mode 100644
index 000000000..fc599989a
--- /dev/null
+++ b/docs/diagrams/infra.svg
@@ -0,0 +1,885 @@
+InfrastructureproductClientuseridentityServicesGitHubIDPawsApiGWparameterStoredynamoDBIDPMetadataAssertionsKMSvpconeid-ecs-coreoneid-lambda-client-registrationoneid-service-metadataoneid-lambda-is-gh-integrationoneid-lambda-idp-metadataoneid-lambda-assertion send API Key to request clientID and clientSecret (POST)send API Key to request clientID and clientSecret (POST)generate and store client secretrequest metadata (GET)request metadata (GET) retrieve metadataget SAML assertionsstore SAML assertionsget new IDP metadataopen PR with new IDP metadataupon PR merge, store IDP metadataget IDP metadata from bucket and store it on dbget IDP metadata from bucket and store it on dbclient authenticationclient authenticationget IDP metadatahandle client sessionget privateKey to sign JWT token
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/diagrams/metadata_flow.svg b/docs/diagrams/metadata_flow.svg
index 25644503b..e2c064d5e 100644
--- a/docs/diagrams/metadata_flow.svg
+++ b/docs/diagrams/metadata_flow.svg
@@ -1,26 +1,26 @@
-service metadata flowuserawsvpcbucketS3cloudfrontdynamoDBoneid-service-metadata 1. send db Event 2. retrieve client metadata3. upate fileretrieve fileretrieve file
+service metadata flowuserawsvpcbucketS3cloudfrontdynamoDBoneid-service-metadata 1. send db Event 2. retrieve client metadata3. upate fileretrieve fileretrieve file
-
-
+
+
diff --git a/docs/diagrams/src/auth_flow.d2 b/docs/diagrams/src/auth_flow.d2
index 7f1768a6b..cc4549838 100644
--- a/docs/diagrams/src/auth_flow.d2
+++ b/docs/diagrams/src/auth_flow.d2
@@ -6,7 +6,7 @@ direction: right
title: {
class: title
- label: Authentication flow
+ label: Authentication flow
}
user: {
diff --git a/docs/diagrams/src/classes.d2 b/docs/diagrams/src/classes.d2
index 1120dd61b..34b6bfd47 100644
--- a/docs/diagrams/src/classes.d2
+++ b/docs/diagrams/src/classes.d2
@@ -34,40 +34,44 @@ classes: {
}
apiGW: {
- icon: https://raw.githubusercontent.com/weibeld/aws-icons-svg/5e0e14e5472f1eefed879d7ea7e1d79652858d14/q1-2022/Architecture-Service-Icons_01312022/Arch_App-Integration/Arch_32/Arch_%20Amazon-API-Gateway_32.svg
- }
+ icon: ../icons/apigw.svg}
lambda: {
- icon: https://raw.githubusercontent.com/weibeld/aws-icons-svg/5e0e14e5472f1eefed879d7ea7e1d79652858d14/q1-2022/Architecture-Service-Icons_01312022/Arch_Compute/32/Arch_AWS-Lambda_32.svg
-
+ icon: ../icons/lambda.svg
}
ECS: {
- icon: https://raw.githubusercontent.com/weibeld/aws-icons-svg/5e0e14e5472f1eefed879d7ea7e1d79652858d14/q1-2022/Architecture-Service-Icons_01312022/Arch_Compute/32/Arch_Amazon-Elastic-Container-Service_32.svg
- }
+ icon: ../icons/ecs.svg }
dynamo: {
- icon: https://raw.githubusercontent.com/weibeld/aws-icons-svg/5e0e14e5472f1eefed879d7ea7e1d79652858d14/q1-2022/Architecture-Service-Icons_01312022/Arch_Database/32/Arch_Amazon-DynamoDB_32.svg
+ icon: ../icons/dynamo.svg
}
s3: {
- icon: https://raw.githubusercontent.com/weibeld/aws-icons-svg/5e0e14e5472f1eefed879d7ea7e1d79652858d14/q1-2022/Architecture-Service-Icons_01312022/Arch_Storage/32/Arch_Amazon-S3-on-Outposts_32.svg
+ icon: ../icons/s3.svg
}
cloudfront: {
- icon: https://raw.githubusercontent.com/weibeld/aws-icons-svg/5e0e14e5472f1eefed879d7ea7e1d79652858d14/q1-2022/Architecture-Service-Icons_01312022/Arch_Networking-Content-Delivery/32/Arch_Amazon-CloudFront_32.svg
+ icon: ../icons/cloudfront.svg
}
KMS: {
- icon: https://raw.githubusercontent.com/weibeld/aws-icons-svg/5e0e14e5472f1eefed879d7ea7e1d79652858d14/q1-2022/Architecture-Service-Icons_01312022/Arch_Security-Identity-Compliance/48/Arch_AWS-Key-Management-Service_48.svg
+ icon: ../icons/KMS.svg
}
idpSPID: {
shape: image
- icon: https://raw.githubusercontent.com/italia/spid-graphics/master/spid-logos/spid-logo-c-lb.svg
+ icon: ../icons/spid-logo.svg
}
parameterStore {
- icon: https://raw.githubusercontent.com/weibeld/aws-icons-svg/5e0e14e5472f1eefed879d7ea7e1d79652858d14/q1-2022/Resource-Icons_01312022/Res_Management-Governance/Res_48_Light/Res_AWS-Systems-Manager_Parameter-Store_48_Light.svg
+ icon: ../icons/paramstore.svg }
+
+ github {
+ icon: ../icons/github.png
+ }
+
+ identityServices {
+ icon: ../icons/pagopa.jpeg
}
}
\ No newline at end of file
diff --git a/docs/diagrams/src/infra.d2 b/docs/diagrams/src/infra.d2
new file mode 100644
index 000000000..ba91dd0d2
--- /dev/null
+++ b/docs/diagrams/src/infra.d2
@@ -0,0 +1,114 @@
+...@classes
+vars: {
+ d2-config: @config.config
+}
+direction: right
+
+title: {
+ class: title
+ label: Infrastructure
+}
+
+productClient: {
+ class: externalCloudService
+}
+
+user: {
+ class: user
+}
+
+identityServices: {
+ class: identityServices
+}
+
+GitHub: {
+ class: github
+}
+
+IDP: {
+ class: idpSPID
+}
+
+aws: {
+ class: aws
+ ApiGW: {
+ class: apigw
+ }
+
+ parameterStore {
+ class: parameterStore
+ }
+
+ dynamoDB :{
+ class: dynamo
+ }
+
+ IDPMetadata: {
+ class: s3
+ }
+
+ Assertions: {
+ class: s3
+ }
+
+ KMS: {
+ class: KMS
+ }
+
+ vpc: {
+ class: vpc
+
+ oneid-ecs-core: {
+ class: ECS
+ }
+
+ oneid-lambda-client-registration: {
+ class: lambda
+ }
+ oneid-service-metadata: {
+ class: lambda
+ }
+
+ oneid-lambda-is-gh-integration: {
+ class: lambda
+ }
+
+ oneid-lambda-idp-metadata: {
+ class: lambda
+ }
+
+ oneid-lambda-assertion: {
+ class: lambda
+ }
+ }
+}
+
+productClient -> aws.ApiGW -> aws.vpc.oneid-lambda-client-registration: send API Key to request clientID and clientSecret (POST)
+aws.vpc.oneid-lambda-client-registration -> aws.dynamoDB: generate and store client secret
+
+user -> aws.ApiGW -> aws.vpc.oneid-service-metadata: request metadata (GET)
+aws.vpc.oneid-service-metadata <-> aws.dynamoDB: retrieve metadata
+
+aws.vpc.oneid-lambda-assertion <-> aws.dynamoDB: get SAML assertions
+aws.Assertions <- aws.vpc.oneid-lambda-assertion: store SAML assertions
+
+
+IdentityServices <-> aws.vpc.oneid-lambda-is-gh-integration: get new IDP metadata
+github <- aws.vpc.oneid-lambda-is-gh-integration : open PR with new IDP metadata
+github -> aws.IDPMetadata: upon PR merge, store IDP metadata
+aws.IDPMetadata -> aws.vpc.oneid-lambda-idp-metadata -> aws.dynamoDB : get IDP metadata from bucket and store it on db
+
+productClient <-> aws.ApiGW <-> aws.vpc.oneid-ecs-core: client authentication
+aws.vpc.oneid-ecs-core <-> aws.dynamoDB: get IDP metadata
+aws.vpc.oneid-ecs-core <-> aws.dynamoDB: handle client session
+aws.vpc.oneid-ecs-core <-> aws.parameterStore: get privateKey to sign JWT token
+
+
+
+
+
+
+
+
+
+
From 9ee2e0b71deef3f65c3f7dc7b2db8b2d923e2b38 Mon Sep 17 00:00:00 2001
From: himazawa <73994521+himazawa@users.noreply.github.com>
Date: Fri, 11 Oct 2024 14:57:35 +0200
Subject: [PATCH 7/9] chore: rebuild auth-flow
---
docs/diagrams/auth_flow.svg | 638 ++++++++++++++++-----------------
docs/diagrams/src/auth_flow.d2 | 29 +-
2 files changed, 334 insertions(+), 333 deletions(-)
diff --git a/docs/diagrams/auth_flow.svg b/docs/diagrams/auth_flow.svg
index d48149ef5..e045cb42e 100644
--- a/docs/diagrams/auth_flow.svg
+++ b/docs/diagrams/auth_flow.svg
@@ -1,27 +1,27 @@
-Authentication flowuserIDPproductClientawsApiGWvpcdynamoDBparameterStoreKMSoneid-ecs-core 1. Login2. redirect to OneIdentity 3. /login3. /login4: /authorize4: /authorize4.1: retrive key pem file from parameter store4.2: init SAMLSession record4.3: redirect POST4.3: redirect POST5: perform authentication6: send and perform verification on SAML response6: send and perform verification on SAML response6.1: retrieve certificate data6.2: update SAMLSession and initialize OIDCSession records7: init authorization code flow7.1: send /token POST to init access token session7.1: send /token POST to init access token session7.2: retrieve ClientRegistrations data7.3: init access session and validate state7.4: Sign JWT7.5: return JWT
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+Authentication flowuserIDPproductClientawsApiGWvpcdynamoDBparameterStoreKMSoneid-ecs-core 1. Login2. redirect to OneIdentity 3. /login3. /login4: /authorize4: /authorize4.1: retrive key pem file from parameter store4.2: redirect POST4.2: redirect POST5: init SAMLSession record6: perform authentication7: send and perform verification on SAML response7: send and perform verification on SAML response7.1: retrieve certificate data7.2: update SAMLSession and initialize OIDCSession records8: init authorization code flow8.1: send /token POST to init access token session9. init access session and validate state10. Sign JWT10. return JWT
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/diagrams/src/auth_flow.d2 b/docs/diagrams/src/auth_flow.d2
index cc4549838..267943c7a 100644
--- a/docs/diagrams/src/auth_flow.d2
+++ b/docs/diagrams/src/auth_flow.d2
@@ -6,7 +6,7 @@ direction: right
title: {
class: title
- label: Authentication flow
+ label: Authentication flow
}
user: {
@@ -56,19 +56,22 @@ user <-> aws.ApiGW <-> aws.vpc.oneid-ecs-core: 3. /login
user -> aws.ApiGW -> aws.vpc.oneid-ecs-core: 4: /authorize
aws.vpc.oneid-ecs-core -> aws.parameterStore: 4.1: retrive key pem file from parameter store
-aws.vpc.oneid-ecs-core -> aws.dynamoDB: 4.2: init SAMLSession record
-user <- aws.ApiGW <- aws.vpc.oneid-ecs-core: 4.3: redirect POST
+user <- aws.ApiGW <- aws.vpc.oneid-ecs-core: 4.2: redirect POST
-user <-> IDP: 5: perform authentication
+aws.vpc.oneid-ecs-core -> aws.dynamoDB: 5: init SAMLSession record
-user -> aws.ApiGW -> aws.vpc.oneid-ecs-core: 6: send and perform verification on SAML response
-aws.vpc.oneid-ecs-core <-> aws.dynamoDB: 6.1: retrieve certificate data
-aws.vpc.oneid-ecs-core -> aws.dynamoDB: 6.2: update SAMLSession and initialize OIDCSession records
-productClient <- aws.vpc.oneid-ecs-core: 7: init authorization code flow
-productClient -> aws.ApiGW -> aws.vpc.oneid-ecs-core: 7.1: send /token POST to init access token session
-aws.vpc.oneid-ecs-core <-> aws.dynamoDB: 7.2: retrieve ClientRegistrations data
-aws.vpc.oneid-ecs-core <-> aws.dynamoDB: 7.3: init access session and validate state
-aws.vpc.oneid-ecs-core <-> aws.KMS: 7.4: Sign JWT
-aws.vpc.oneid-ecs-core -> productClient: 7.5: return JWT
+user <-> IDP: 6: perform authentication
+user -> aws.ApiGW -> aws.vpc.oneid-ecs-core: 7: send and perform verification on SAML response
+aws.vpc.oneid-ecs-core -> aws.dynamoDB: 7.1: retrieve certificate data
+aws.vpc.oneid-ecs-core -> aws.dynamoDB: 7.2: update SAMLSession and initialize OIDCSession records
+
+productClient <- aws.vpc.oneid-ecs-core: 8: init authorization code flow
+productClient -> aws.vpc.oneid-ecs-core: 8.1: send /token POST to init access token session
+
+aws.vpc.oneid-ecs-core <-> aws.dynamoDB: 9. init access session and validate state
+
+aws.vpc.oneid-ecs-core <-> aws.KMS: 10. Sign JWT
+
+aws.vpc.oneid-ecs-core -> productClient: 10. return JWT
From f8c1846e534955dbce075505ba199428c695bf6a Mon Sep 17 00:00:00 2001
From: himazawa <73994521+himazawa@users.noreply.github.com>
Date: Wed, 11 Dec 2024 13:38:58 +0100
Subject: [PATCH 8/9] feat: added client registration design
---
docs/diagrams/client_registration.svg | 870 +++++++++++++++++++++++
docs/diagrams/src/client_registration.d2 | 60 ++
docs/diagrams/src/infra.d2 | 6 +-
3 files changed, 934 insertions(+), 2 deletions(-)
create mode 100644 docs/diagrams/client_registration.svg
create mode 100644 docs/diagrams/src/client_registration.d2
diff --git a/docs/diagrams/client_registration.svg b/docs/diagrams/client_registration.svg
new file mode 100644
index 000000000..661d0ac6d
--- /dev/null
+++ b/docs/diagrams/client_registration.svg
@@ -0,0 +1,870 @@
+Client Registration FlowproductClientawsApiGWvpcdynamoDBoneid-lambda-client-registration 1. authenticate client via API key2. if authenticated, get client info3. generate clientID and client secret and store it 4. return clientID, client secret and info to client4. return clientID, client secret and info to client1. GET /OIDC/register/{clientID}2. retrieve client data3. return data to Client3. return data to Client
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/diagrams/src/client_registration.d2 b/docs/diagrams/src/client_registration.d2
new file mode 100644
index 000000000..85628ce1a
--- /dev/null
+++ b/docs/diagrams/src/client_registration.d2
@@ -0,0 +1,60 @@
+...@classes
+vars: {
+ d2-config: @config.config
+}
+direction: right
+explanation: |md
+ # Legend
+ ■ test
+ ■
+| {
+ near: top-left
+}
+
+title: {
+ class: title
+ label: Client Registration Flow
+}
+
+productClient: {
+ class: externalCloudService
+}
+
+aws: {
+ class: aws
+ ApiGW: {
+ class: apigw
+ }
+ vpc: {
+ class: vpc
+ oneid-lambda-client-registration: {
+ class: lambda
+ }
+ }
+ dynamoDB :{
+ class: dynamo
+ }
+}
+
+productClient -> aws.ApiGW: 1. authenticate client via API key
+aws.ApiGW -> aws.vpc.oneid-lambda-client-registration: 2. if authenticated, get client info
+aws.vpc.oneid-lambda-client-registration -> aws.dynamoDB: 3. generate clientID and client secret and store it
+productClient <- aws.ApiGW <- aws.vpc.oneid-lambda-client-registration: 4. return clientID, client secret and info to client
+
+productClient -> aws.ApiGW: 1. GET /OIDC/register/\{clientID\} {
+ style: {
+ font-color: green
+ }
+}
+aws.vpc.oneid-lambda-client-registration <-> aws.dynamoDB: 2. retrieve client data {
+ style: {
+ font-color: green
+ }
+}
+
+productClient <- aws.ApiGW <- aws.vpc.oneid-lambda-client-registration: 3. return data to Client {
+ style: {
+ font-color: green
+ }
+}
+
diff --git a/docs/diagrams/src/infra.d2 b/docs/diagrams/src/infra.d2
index ba91dd0d2..7f380555a 100644
--- a/docs/diagrams/src/infra.d2
+++ b/docs/diagrams/src/infra.d2
@@ -41,7 +41,7 @@ aws: {
dynamoDB :{
class: dynamo
- }
+ }
IDPMetadata: {
class: s3
@@ -83,6 +83,8 @@ aws: {
}
}
+
+
productClient -> aws.ApiGW -> aws.vpc.oneid-lambda-client-registration: send API Key to request clientID and clientSecret (POST)
aws.vpc.oneid-lambda-client-registration -> aws.dynamoDB: generate and store client secret
@@ -99,7 +101,7 @@ github -> aws.IDPMetadata: upon PR merge, store IDP metadata
aws.IDPMetadata -> aws.vpc.oneid-lambda-idp-metadata -> aws.dynamoDB : get IDP metadata from bucket and store it on db
productClient <-> aws.ApiGW <-> aws.vpc.oneid-ecs-core: client authentication
-aws.vpc.oneid-ecs-core <-> aws.dynamoDB: get IDP metadata
+aws.vpc.oneid-ecs-core <-> aws.dynamoDB: get IDP and clients metadata
aws.vpc.oneid-ecs-core <-> aws.dynamoDB: handle client session
aws.vpc.oneid-ecs-core <-> aws.parameterStore: get privateKey to sign JWT token
From de53afce422656781fb534cf67d91240e431f336 Mon Sep 17 00:00:00 2001
From: himazawa <73994521+himazawa@users.noreply.github.com>
Date: Tue, 15 Jul 2025 11:14:06 +0200
Subject: [PATCH 9/9] Apply suggestion from @sebbalex
Co-authored-by: Alessandro Sebastiani
---
docs/diagrams/src/infra.d2 | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/diagrams/src/infra.d2 b/docs/diagrams/src/infra.d2
index 7f380555a..854193206 100644
--- a/docs/diagrams/src/infra.d2
+++ b/docs/diagrams/src/infra.d2
@@ -35,7 +35,7 @@ aws: {
class: apigw
}
- parameterStore {
+ parameterStore: {
class: parameterStore
}