From 2d62d628d42cab51f202485be28554500a4bf11e Mon Sep 17 00:00:00 2001 From: Muhammad Azeez Date: Tue, 19 Jan 2021 09:48:14 +0300 Subject: [PATCH 1/2] add architecture chart to readme --- README.md | 12 +++++++----- assets/architecture.png | Bin 0 -> 70407 bytes 2 files changed, 7 insertions(+), 5 deletions(-) create mode 100644 assets/architecture.png diff --git a/README.md b/README.md index a68c70d..692185b 100644 --- a/README.md +++ b/README.md @@ -6,9 +6,11 @@ This is an early look of what the future of authentication might look like for c ## Components -### IdentityServer 4 +Components Architecture -We are using IdentityServer 4 to implement our Authorization Server. You can find [the source code here](./CSharp/AuthorizationServer). +### IAM + +We are using IdentityServer 4 to implement our Authorization Server (Identity and Access Management). You can find [the source code here](./CSharp/AuthorizationServer). **URL:** http://localhost:10000 @@ -23,7 +25,7 @@ cd ./CSharp/AuthorizationServer dotnet run ``` -### Traffic Police React App +### Traffic Police App This is a react SPA that allows citizens to manage their registered vehicles. It talks to the Traffic Police API to get and update data. You can find [the source code here](./React/traffic-police). @@ -67,7 +69,7 @@ dotnet ef database update dotnet run ``` -### Real Estate React App +### Real Estate App This is a react SPA that allows citizens to manage their registered real estate. It talks to the Real Estate API to get and update data. You can find [the source code here](./React/real-estate). @@ -123,7 +125,7 @@ npm install node index.js ``` -### Tax ASP.NET Core App +### Tax App This is a server-side app using ASP.NET Core Razor Pages. It talks to the Traffic Police API and Real Estate API to calculate taxes. You can find [the source code here](./CSharp/TaxApp). diff --git a/assets/architecture.png b/assets/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..c8f44aa9db49b2b2c6c7c3ca6fdf6fd01119e6f7 GIT binary patch literal 70407 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 z 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 aH^4vkpA9C5*yX?ghH|)cfqKs8)_(y Date: Tue, 19 Jan 2021 10:20:14 +0300 Subject: [PATCH 2/2] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 692185b..09e46c6 100644 --- a/README.md +++ b/README.md @@ -147,5 +147,6 @@ dotnet run ## Notes -1. The APIs assume that the PostgreSQL database instance is on localhost and the username is `postgres` and password is `root`. If it's different, then you have to configure the APIs with the correct credentials. +1. The APIs assume that the PostgreSQL database instance is on localhost and the username is `postgres` and password is `root`. If it's different, then you have to configure the APIs [here](https://github.com/ditdevtools/AuthorizationServerDemos/blob/master/CSharp/TrafficPoliceApi/appsettings.Development.json) and [here](https://github.com/ditdevtools/AuthorizationServerDemos/blob/master/Node/real-estate/queries.js) with the correct credentials. 1. We are using different tech stacks for different apps/APIs in this demo to show that an authorization server is language-agnostic and can be used by different tech stacks and in different use cases. +1. Although OpenID Connect requires HTTPS, we are using HTTP everywhere because dealing with HTTPS is difficult and we don't want this kind of negativity in our lives.