chore: Update docker-compose.yaml

This commit is contained in:
Pc 2023-02-23 23:56:12 +03:30
parent 13deb2869c
commit a142a2e789
38 changed files with 217 additions and 235 deletions

View File

@ -22,6 +22,9 @@
**/.tye/
**/secrets.dev.yaml
**/values.dev.yaml
**/*.jwk
**/keys
LICENSE
README.md
CHANGELOG.md

View File

@ -43,11 +43,11 @@ runs:
if: ${{ github.ref == 'refs/heads/main' && success() }}
shell: bash
run: |
docker build -t ${{ inputs.registry-username }}/${{ inputs.image-name }}:v1.6.4 -f "${{ github.workspace }}/${{ inputs.dockerfile-path }}" .
docker build -t ${{ inputs.registry-username }}/${{ inputs.image-name }}:v1.6.5 -f "${{ github.workspace }}/${{ inputs.dockerfile-path }}" .
- name: Publish Docker Image
if: ${{ github.ref == 'refs/heads/main' && success() }}
shell: bash
run: |
docker push ${{ inputs.registry-username }}/${{ inputs.image-name }}:v1.6.4
docker push ${{ inputs.registry-username }}/${{ inputs.image-name }}:v1.6.5

View File

@ -35,8 +35,8 @@ jobs:
- name: Build
run: dotnet build -c Release --no-restore
# - name: Test
# run: dotnet test -c Release --no-restore
- name: Test
run: dotnet test -c Release --no-restore
- name: Update Release Drafter
if: ${{ github.ref == 'refs/heads/main' && success() }}
@ -69,22 +69,22 @@ jobs:
dockerfile-path: 'src/Services/Flight/Dockerfile'
image-name: 'booking-microservices-flight'
# - name: Build and Publish Passenger to Docker
# if: ${{ github.ref == 'refs/heads/main' && success() }}
# uses: ./.github/actions/docker-build-publish
# with:
# tag-name: ${{ steps.last_release.outputs.tag_name }}
# registry-username: ${{ secrets.DOCKERHUB_USERNAME }}
# registry-password: ${{ secrets.DOCKERHUB_PASSWORD }}
# dockerfile-path: 'src/Services/Passenger/Dockerfile'
# image-name: 'booking-microservices-passenger'
- name: Build and Publish Passenger to Docker
if: ${{ github.ref == 'refs/heads/main' && success() }}
uses: ./.github/actions/docker-build-publish
with:
tag-name: ${{ steps.last_release.outputs.tag_name }}
registry-username: ${{ secrets.DOCKERHUB_USERNAME }}
registry-password: ${{ secrets.DOCKERHUB_PASSWORD }}
dockerfile-path: 'src/Services/Passenger/Dockerfile'
image-name: 'booking-microservices-passenger'
# - name: Build and Publish Booking to Docker
# if: ${{ github.ref == 'refs/heads/main' && success() }}
# uses: ./.github/actions/docker-build-publish
# with:
# tag-name: ${{ steps.last_release.outputs.tag_name }}
# registry-username: ${{ secrets.DOCKERHUB_USERNAME }}
# registry-password: ${{ secrets.DOCKERHUB_PASSWORD }}
# dockerfile-path: 'src/Services/Booking/Dockerfile'
# image-name: 'booking-microservices-booking'
- name: Build and Publish Booking to Docker
if: ${{ github.ref == 'refs/heads/main' && success() }}
uses: ./.github/actions/docker-build-publish
with:
tag-name: ${{ steps.last_release.outputs.tag_name }}
registry-username: ${{ secrets.DOCKERHUB_USERNAME }}
registry-password: ${{ secrets.DOCKERHUB_PASSWORD }}
dockerfile-path: 'src/Services/Booking/Dockerfile'
image-name: 'booking-microservices-booking'

4
.gitignore vendored
View File

@ -432,3 +432,7 @@ fabric.properties
# Tye
.tye/
*.jwk
**/keys

View File

@ -119,41 +119,36 @@ services:
depends_on:
- elasticsearch
environment:
- ELASTICSEARCH_URL=http://localhost:9200
- ELASTICSEARCH_URL=elasticsearch:9200
networks:
- booking
#######################################################
######################################################
# Gateway
#######################################################
# gateway:
# image: gateway
# build:
# args:
# Version: "1"
# context: ../../
# dockerfile: src/ApiGateway/Dockerfile
# container_name: booking-gateway
# ports:
# - "5001:80"
# - "5000:443"
# depends_on:
# - postgres
# - rabbitmq
# - jaeger
# - elasticsearch
# - kibana
# volumes:
# - ~/.aspnet/https:/https:ro
# environment:
# - ASPNETCORE_ENVIRONMENT=docker
# - ASPNETCORE_URLS=https://+;http://+
# - ASPNETCORE_HTTPS_PORT=5001
# - ASPNETCORE_Kestrel__Certificates__Default__Password=password
# - ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx
# networks:
# - booking
######################################################
gateway:
image: gateway
build:
args:
Version: "1"
context: ../../
dockerfile: src/ApiGateway/Dockerfile
container_name: gateway
ports:
- "5001:80"
- "5000:443"
volumes:
- ~/.aspnet/https:/https:ro
environment:
- ASPNETCORE_ENVIRONMENT=docker
- ASPNETCORE_URLS=https://+;http://+
- ASPNETCORE_HTTPS_PORT=5000
- ASPNETCORE_HTTP_PORT=5001
- ASPNETCORE_Kestrel__Certificates__Default__Password=password
- ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx
networks:
- booking
#######################################################
@ -170,14 +165,6 @@ services:
ports:
- 5004:80
- 5003:443
depends_on:
- postgres
- rabbitmq
- jaeger
- elasticsearch
- kibana
- mongo
- identity
volumes:
- ~/.aspnet/https:/https:ro
environment:
@ -185,10 +172,6 @@ services:
- ASPNETCORE_URLS=https://+;http://+
- ASPNETCORE_HTTPS_PORT=5003
- ASPNETCORE_HTTP_PORT=5004
- Jwt__Authority=http://host.docker.internal:6005
- Jwt__Audience=flight-api
- Jwt__RequireHttpsMetadata=false
- Jwt__MetadataAddress=http://host.docker.internal:6005/.well-known/openid-configuration
- ASPNETCORE_Kestrel__Certificates__Default__Password=password
- ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx
networks:
@ -208,12 +191,6 @@ services:
ports:
- 6005:80
- 5005:443
depends_on:
- postgres
- rabbitmq
- jaeger
- elasticsearch
- kibana
volumes:
- ~/.aspnet/https:/https:ro
environment:
@ -230,68 +207,55 @@ services:
#######################################################
# Passenger
#######################################################
# passenger:
# image: passenger
# build:
# args:
# Version: "1"
# context: ../../
# dockerfile: src/Services/Passenger/Dockerfile
# container_name: passenger
# ports:
# - 6012:80
# - 5012:443
# depends_on:
# - postgres
# - rabbitmq
# - jaeger
# - elasticsearch
# - kibana
# - mongo
# volumes:
# - ~/.aspnet/https:/https:ro
# environment:
# - ASPNETCORE_ENVIRONMENT=docker
# - ASPNETCORE_URLS=https://+;http://+
# - ASPNETCORE_HTTPS_PORT=5012
# - ASPNETCORE_Kestrel__Certificates__Default__Password=password
# - ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx
# networks:
# - booking
passenger:
image: passenger
build:
args:
Version: "1"
context: ../../
dockerfile: src/Services/Passenger/Dockerfile
container_name: passenger
ports:
- 6012:80
- 5012:443
volumes:
- ~/.aspnet/https:/https:ro
environment:
- ASPNETCORE_ENVIRONMENT=docker
- ASPNETCORE_URLS=https://+;http://+
- ASPNETCORE_HTTPS_PORT=5012
- ASPNETCORE_HTTP_PORT=6012
- ASPNETCORE_Kestrel__Certificates__Default__Password=password
- ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx
networks:
- booking
#######################################################
# Booking
#######################################################
# booking:
# image: booking
# build:
# args:
# Version: "1"
# context: ../../
# dockerfile: src/Services/Booking/Dockerfile
# container_name: booking
# ports:
# - 6010:80
# - 5010:443
# depends_on:
# - postgres
# - rabbitmq
# - jaeger
# - eventstore
# - elasticsearch
# - kibana
# - mongo
# volumes:
# - ~/.aspnet/https:/https:ro
# environment:
# - ASPNETCORE_ENVIRONMENT=docker
# - ASPNETCORE_URLS=https://+;http://+
# - ASPNETCORE_HTTPS_PORT=5010
# - ASPNETCORE_Kestrel__Certificates__Default__Password=password
# - ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx
# networks:
# - booking
booking:
image: booking
build:
args:
Version: "1"
context: ../../
dockerfile: src/Services/Booking/Dockerfile
container_name: booking
ports:
- 6010:80
- 5010:443
volumes:
- ~/.aspnet/https:/https:ro
environment:
- ASPNETCORE_ENVIRONMENT=docker
- ASPNETCORE_URLS=https://+;http://+
- ASPNETCORE_HTTPS_PORT=5010
- ASPNETCORE_HTTP_PORT=6010
- ASPNETCORE_Kestrel__Certificates__Default__Password=password
- ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx
networks:
- booking
networks:

View File

@ -8,7 +8,8 @@ COPY ./src/ApiGateway/src/ApiGateway.csproj ./ApiGateway/src/
# Restore nuget packages
RUN dotnet restore ./ApiGateway/src/ApiGateway.csproj
RUN --mount=type=cache,id=gateway_nuget,target=/root/.nuget/packages \
dotnet restore ./ApiGateway/src/ApiGateway.csproj
# Copy project files
COPY ./src/BuildingBlocks ./BuildingBlocks/
@ -18,20 +19,27 @@ COPY ./src/ApiGateway/src ./ApiGateway/src/
# and no restore, as we did it already
RUN ls
RUN dotnet build -c Release --no-restore ./ApiGateway/src/ApiGateway.csproj
RUN --mount=type=cache,id=gateway_nuget,target=/root/.nuget/packages \
dotnet build -c Release --no-restore ./ApiGateway/src/ApiGateway.csproj
WORKDIR /src/ApiGateway/src
# Publish project to output folder
# and no build, as we did it already
RUN dotnet publish -c Release --no-build -o out
RUN --mount=type=cache,id=gateway_nuget,target=/root/.nuget/packages \
dotnet publish -c Release --no-build -o out
FROM mcr.microsoft.com/dotnet/aspnet:7.0
# Setup working directory for the project
WORKDIR /app
COPY --from=builder /src/ApiGateway/src/out .
ENV ASPNETCORE_URLS https://*:443, http://*:80
ENV ASPNETCORE_ENVIRONMENT docker
EXPOSE 80
EXPOSE 443
ENTRYPOINT ["dotnet", "ApiGateway.dll"]

View File

@ -8,7 +8,8 @@ COPY ./src/Services/Booking/src/Booking.Api/Booking.Api.csproj ./Services/Bookin
# Restore nuget packages
RUN dotnet restore ./Services/Booking/src/Booking.Api/Booking.Api.csproj
RUN --mount=type=cache,id=booking_nuget,target=/root/.nuget/packages \
dotnet restore ./Services/Booking/src/Booking.Api/Booking.Api.csproj
# Copy project files
COPY ./src/BuildingBlocks ./BuildingBlocks/
@ -19,13 +20,15 @@ COPY ./src/Services/Booking/src/Booking.Api/ ./Services/Booking/src/Booking.Api
# and no restore, as we did it already
RUN ls
RUN dotnet build -c Release --no-restore ./Services/Booking/src/Booking.Api/Booking.Api.csproj
RUN --mount=type=cache,id=booking_nuget,target=/root/.nuget/packages\
dotnet build -c Release --no-restore ./Services/Booking/src/Booking.Api/Booking.Api.csproj
WORKDIR /Services/Booking/src/Booking.Api
# Publish project to output folder
# and no build, as we did it already
RUN dotnet publish -c Release --no-build -o out
RUN --mount=type=cache,id=booking_nuget,target=/root/.nuget/packages\
dotnet publish -c Release --no-build -o out
FROM mcr.microsoft.com/dotnet/aspnet:7.0
@ -33,8 +36,11 @@ FROM mcr.microsoft.com/dotnet/aspnet:7.0
WORKDIR /
COPY --from=builder /Services/Booking/src/Booking.Api/out .
ENV ASPNETCORE_URLS https://*:5010, http://*:6010
ENV ASPNETCORE_URLS https://*:443, http://*:80
ENV ASPNETCORE_ENVIRONMENT docker
EXPOSE 80
EXPOSE 443
ENTRYPOINT ["dotnet", "Booking.Api.dll"]

View File

@ -16,7 +16,7 @@
"dotnetRunMessages": true,
"launchBrowser": true,
"launchUrl": "swagger",
"applicationUrl": "https://localhost:5010;http://localhost:6010",
"applicationUrl": "https://localhost:5010",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}

View File

@ -26,9 +26,10 @@
"Port": 5672
},
"Jwt": {
"Authority": "http://myidentityserver.com",
"Authority": "http://host.docker.internal:6005",
"Audience": "booking-api",
"RequireHttpsMetadata": false
"RequireHttpsMetadata": false,
"MetadataAddress": "http://host.docker.internal:6005/.well-known/openid-configuration"
},
"Grpc": {
"FlightAddress": "flight:5003",

View File

@ -8,7 +8,8 @@ COPY ./src/Services/Flight/src/Flight.Api/Flight.Api.csproj ./Services/Flight/sr
# Restore nuget packages
RUN dotnet restore ./Services/Flight/src/Flight.Api/Flight.Api.csproj
RUN --mount=type=cache,id=flight_nuget,target=/root/.nuget/packages \
dotnet restore ./Services/Flight/src/Flight.Api/Flight.Api.csproj
# Copy project files
COPY ./src/BuildingBlocks ./BuildingBlocks/
@ -19,13 +20,15 @@ COPY ./src/Services/Flight/src/Flight.Api/ ./Services/Flight/src/Flight.Api/
# and no restore, as we did it already
RUN ls
RUN dotnet build -c Release --no-restore ./Services/Flight/src/Flight.Api/Flight.Api.csproj
RUN --mount=type=cache,id=flight_nuget,target=/root/.nuget/packages \
dotnet build -c Release --no-restore ./Services/Flight/src/Flight.Api/Flight.Api.csproj
WORKDIR /Services/Flight/src/Flight.Api
# Publish project to output folder
# and no build, as we did it already
RUN dotnet publish -c Release --no-build -o out
RUN --mount=type=cache,id=flight_nuget,target=/root/.nuget/packages \
dotnet publish -c Release --no-build -o out
FROM mcr.microsoft.com/dotnet/aspnet:7.0
@ -34,8 +37,11 @@ WORKDIR /
COPY --from=builder /Services/Flight/src/Flight.Api/out .
ENV ASPNETCORE_URLS https://*:5003,http://*:5004
ENV ASPNETCORE_URLS https://*:443, http://*:80
ENV ASPNETCORE_ENVIRONMENT docker
EXPOSE 80
EXPOSE 443
ENTRYPOINT ["dotnet", "Flight.Api.dll"]

View File

@ -23,9 +23,10 @@
"ConnectionString": "Server=postgres;Port=5432;Database=flight;User Id=postgres;Password=postgres;Include Error Detail=true"
},
"Jwt": {
"Authority": "http://myidentityserver.com",
"Authority": "http://host.docker.internal:6005",
"Audience": "flight-api",
"RequireHttpsMetadata": false
"RequireHttpsMetadata": false,
"MetadataAddress": "http://host.docker.internal:6005/.well-known/openid-configuration"
},
"RabbitMqOptions": {
"HostName": "rabbitmq",

View File

@ -29,10 +29,10 @@
"DatabaseName": "flight-db"
},
"Jwt": {
"Authority": "https://localhost:5005",
"Authority": "http://localhost:6005",
"Audience": "flight-api",
"RequireHttpsMetadata": true,
"MetadataAddress": "https://localhost:5005/.well-known/openid-configuration"
"RequireHttpsMetadata": false,
"MetadataAddress": "http://localhost:6005/.well-known/openid-configuration"
},
"RabbitMqOptions": {
"HostName": "localhost",

View File

@ -30,6 +30,8 @@ using Serilog;
namespace Flight.Extensions.Infrastructure;
using Microsoft.AspNetCore.HttpOverrides;
public static class InfrastructureExtensions
{
public static WebApplicationBuilder AddInfrastructure(this WebApplicationBuilder builder)

View File

@ -7,7 +7,8 @@ COPY ./src/Services/Identity/src/Identity/Identity.csproj ./Services/Identity/sr
COPY ./src/Services/Identity/src/Identity.Api/Identity.Api.csproj ./Services/Identity/src/Identity.Api/
# Restore nuget packages
RUN dotnet restore ./Services/Identity/src/Identity.Api/Identity.Api.csproj
RUN --mount=type=cache,id=identity_nuget,target=/root/.nuget/packages \
dotnet restore ./Services/Identity/src/Identity.Api/Identity.Api.csproj
# Copy project files
COPY ./src/BuildingBlocks ./BuildingBlocks/
@ -18,13 +19,15 @@ COPY ./src/Services/Identity/src/Identity.Api/ ./Services/Identity/src/Identity
# and no restore, as we did it already
RUN ls
RUN dotnet build -c Release --no-restore ./Services/Identity/src/Identity.Api/Identity.Api.csproj
RUN --mount=type=cache,id=identity_nuget,target=/root/.nuget/packages \
dotnet build -c Release --no-restore ./Services/Identity/src/Identity.Api/Identity.Api.csproj
WORKDIR /Services/Identity/src/Identity.Api
# Publish project to output folder
# and no build, as we did it already
RUN dotnet publish -c Release --no-build -o out
RUN --mount=type=cache,id=identity_nuget,target=/root/.nuget/packages \
dotnet publish -c Release --no-build -o out
FROM mcr.microsoft.com/dotnet/aspnet:7.0
@ -32,8 +35,11 @@ FROM mcr.microsoft.com/dotnet/aspnet:7.0
WORKDIR /
COPY --from=builder /Services/Identity/src/Identity.Api/out .
ENV ASPNETCORE_URLS https://*:5005, http://*:6005
ENV ASPNETCORE_URLS https://*:443, http://*:80
ENV ASPNETCORE_ENVIRONMENT docker
EXPOSE 80
EXPOSE 443
ENTRYPOINT ["dotnet", "Identity.Api.dll"]

View File

@ -1,5 +1,5 @@
using BuildingBlocks.Web;
using Identity;
using Identity.Configurations;
using Identity.Extensions.Infrastructure;
var builder = WebApplication.CreateBuilder(args);

View File

@ -14,7 +14,7 @@
"dotnetRunMessages": true,
"launchBrowser": true,
"launchUrl": "swagger",
"applicationUrl": "http://localhost:5009",
"applicationUrl": "http://localhost:6005",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}

View File

@ -8,6 +8,9 @@
"Enabled": true,
"ConnectionString": "Server=postgres;Port=5432;Database=persist_message;User Id=postgres;Password=postgres;Include Error Detail=true"
},
"AuthOptions": {
"IssuerUri": "http://host.docker.internal:6005"
},
"RabbitMqOptions": {
"HostName": "rabbitmq",
"ExchangeName": "identity",

View File

@ -5,6 +5,9 @@
"PostgresOptions": {
"ConnectionString": "Server=localhost;Port=5432;Database=identity;User Id=postgres;Password=postgres;Include Error Detail=true"
},
"AuthOptions": {
"IssuerUri": "http://localhost:6005"
},
"RabbitMqOptions": {
"HostName": "localhost",
"ExchangeName": "identity",

View File

@ -2,6 +2,9 @@
"PostgresOptions": {
"ConnectionString": "Server=localhost;Port=5432;Database=identity_test;User Id=postgres;Password=postgres;Include Error Detail=true"
},
"AuthOptions": {
"IssuerUri": "http://localhost:6005"
},
"RabbitMqOptions": {
"HostName": "localhost",
"ExchangeName": "identity",

View File

@ -1,9 +0,0 @@
{
"Version": 1,
"Id": "31079AE9DF4ED1F2D492E52BA5A644F5",
"Created": "2022-04-18T20:26:55.3256244Z",
"Algorithm": "RS256",
"IsX509Certificate": false,
"Data": "CfDJ8P3RLEnEd5JHjUIOTYyyJAzVTUgXKNFkjwfEWELe3r9iozJI4zF_jAjqORPS_C37DAQiHHtMYbgB7_j1Wwqck7qb_wv8CuDfNW8Hx0_UdWaO6vD0Sf_hIbBmN4RrwFwdMia8IUcNCUpwL9XJl95TLzD9FjpuyuWElQ8_5ZnF3SuErstPenQa4q9MYsj9XmPhNSk-BQan-cimxIAPYm1BgZNm5DMylT98sus9ScYTgOowV2n13MW0uA7kk9JOZIIjG07UuaSnuEQei03AU9zkejYD8yLwBi98ON5s0_jW2V3ebY-01VBQXhztu5Iev_SCynNyqQW-uqEzL9SSlzX8dEa79KKmOJEo2o325AVeDOBvco2XDCCra5RkRhUIPV3ZHvQr4EZJNqvi1zelWs3-FJ9vXE02-6XZkZKd6TzhPfiMDc1Z88-eVlx-uwhPjvJyfUSU9cAgbNDREDETxUcmIAMqqbXVAUCnaPkpbxy0VZ6YGSNsD9w77L6nIKiz-0KkVtxDZKCXh5BbDwAiWza8KWKclnVUnMLGhnjANEgKzzvmb1UJr1wZ0xRZ9KXyxr9oy0kP1Be-ysFSUd-YUTSgDvuQZV_DPjH2XP99tXqmfWJ8PJN9hswaRGhp5Jxo003l93u7Ivy-XR1BEhxVoYpvV9fCh8lo-N9ayHYpYlEsdArk1qvkuGRSlkBWNeEr_ZsvODbwM8Jp5q7pLK7cUy0bRHnYwkyHReS_fh6_tTdnfcQZPWb7fLN967XwebcVNOEENn5FX9oszCiy5BG9HQDIPffIx8bkKrZCMV77e5Qria9wNwkhIi3-7SOjRD-v5azkwiV0hTToAQTYsAT8DRTJklI90PF4JbsiMvObeoJtbwPy3E-K1_4DOxAjNwQFHf_zqWEbo9vmxGF-IerSwaJNSVfUUxnnYT8JWFYHYzWGyMvqtdymk1pmBaOJ64dgTVVcao7S0PwfV4DNUzxKQX-jNzqMihaXu4y8lyGIPJycJezm7nfGJiHhhhV4EWSQ1Y2ypBGv_s1iZ5pvTCeGkthY2Q4pe-GYKrFGTnBSLWwHqsVA2gwb1McjYjUGNgu_mnzyB45ZpKrqXQDDiozbQ4Ju7DJb5Vi_EoPmeHQDj5h5sFwAWtq0NGI_lRAog2K_QnZvSV3SFDVlaKDq9PjgIORc6wi5bzbAusWbjDd_sb211QsrNfW-0SWWgYwz9qRg14OiuntGESXSq9Cmx8WgPaK5H0FQGZUlzq3Bk8ov6GUhPeZSKP4gUyfRloSyj2DBZSe_0JOXO3e4Q6BFZLqhpStyAxoUZftEW_J3pKNjCrvKCOm-Taz0EVBEH9zqLTJwwXEoR86YYNTrtpARTOHo2qco_oMSX_2O4cpAfDZz0ZMHuqxunNnannVdFv5SdAHXngHLguLwAVuUTGlrg_xnUeW4Msi9-CKXpmmEQv6BCIW8Q4S5rn0vp394QgMCCo4473jOEeOX1G4_CUOhJZydGOCEbC5cMrM_54SKBu7hz8P9MCkDLj1ZsPwPDB1YyDwLFJlxb9oEZoRC4whvTJAfX2xNP4wv73ojxwrOII2ivNrnqNX6EM41bxmqMrF9tltSut-OR2XHO-DdJduoRnJjmKJl_WaZQypbZqfVepURuDNGChqyby--xsGMA-yQBBrVigXSKliuYG7dxWBp3TJFrvD4Aym1gAQOgjlObIHknv1cA83g_rHx6vq7JfwqMFYu6H6IZ6eeTUde1IixstE7EzU_4u5LzkQb8HKSMt3j9m3dlH4OigcPvcSJy8aJoN-UCFInfnE7IX0ul_S5HAgvgLM_BEVa3KTa0u8nxAY7xaIXrwWJZ23fhiZrOkNYJI1XAiN11sjtVgVS8viZCkTabUtpEtX2nPe767IbwVzPdOG-C6W_-8uNN_j1WjYeQfsSjmAjab2jZqx3BCDOjTbHkP_vKSzdABFA6bu2Fqt3io2UVTYq-a_Jf2b4JGmuiHomXjhsH3KZp_MDw1nZ8zf1mejyuH_NHFScVzb-vO_ieZ-RDQZn32VPaaDlylSMGa4kE9-54tHZUkFR4Jy1vpyKjXBa3uIEQBE5RFn7XCKbVA4Ea9BCou5ku7E6Zod0SfjMmmknB6jzLTVSBgMP2AkFb98m943O1XXsDQstMmTZdqmNJTOirLoL2Vu1AXqsdS7O-DrVcDImR7ekSGPhUSg2LQkObRPT26sSeiygKlNDi3PktIA1duuJ066NoIHCJupl2mugbFDrZ90SBaQ9n72Ya7fjKdrSdp3izCxqlldeZPANZMMZ5KwjX9WZnl-lPNsn3iCNaEhBCqSWne7YN6xxRS6gKoMobVav-HsZ841qr5iaYzDFD2kA4R35A-Dm5zJyfSCV4NPdUEGzIIbjg1-kYv8PFR_kImuXIwGXT86BxpgEY6PRaD8-ZFZMzerGvEhS8R39NpQ-hiZ_P_ZY3wamWHlwttaTvX3fqpflHlhKV_9AI9HZ",
"DataProtected": true
}

View File

@ -1,9 +0,0 @@
{
"Version": 1,
"Id": "74ABBD16A9EF6567607D1F748BB91597",
"Created": "2022-03-29T20:44:37.9948898Z",
"Algorithm": "RS256",
"IsX509Certificate": false,
"Data": "CfDJ8P3RLEnEd5JHjUIOTYyyJAzeYir0LDVxp1O__t0rzDUFxCBt5XtK6FK6fLgopH3OcjrMTbORu_DJp3lf4bf015LKnOk0yjzfzZ5xRX3qwHwz1jvdXKqzt-Pf85kiRlrNv6qiTH7UXP5xGTY3Tn7TdkVJfPmvfHtQyw1FhIPJnx5KQ469H2DRnoxmpwpspHrGlrPA5cJn3Uc7xFnTNEe0laORnilL1rxTTsKFFhJCWCcoxMozgh_SQqEhy9B7Vb4rQHn-ULb8qO4IaKDvbuCJNuGD2nJxy5lBNkdFKJD724IlGIB1nV3w5LR3YVYcxxIc1bLrbK3byHbVHsl8i9uacpN4-JP2Z16Sku9jhsQ21d1tNssE7gmxe8u6qE4RQjL2URSci8_XdSsRa0DBYNaVOSLv60M4dtwg6pJeWB6GfvJ8_JFnTDFDs51rXc77RL4tANblHLzuQl2C3gMMbJPoviWSs8R0hg2mCp0-pQWwSzNvNmtWwsMNXPgHtfIrJTGDKTQEiYIkvkf34gsBaweyea3Q5H2prmt10qVHr47LpkjGqxpHvi9eboJQkG2y-1MBptNpdiYZ4gbViplu8Ru5M4YsCmb0zZF2Q1DZsKVM-T_PFZCgyy1LjLwSHczvcflQh__6YmSwhehI7Nka86m3lK80nwAr9u0qoUyqjavte-XjNiRbUd7MHaEy2bT_jj40oqdh6sGURIkmmJljxPQfu7Scqgcs6chQSY4JXEnfLBa0AK40mefPwpk76QOJBQRBJ3PvnSLc5RMhgs2c2Vc54j4VuQU0tjiHoDPcgerj5oRIQCDiA2_ylleNmxBEomENO0FRortejvV7FNb2qzTfey1r6bTwJvN81EFfMhGUCsj7X0KkBywJMESsQlU3pbs_JChQfX-6rMjofkMYEtnupYnCutUFVO-xZoXrJvw5AOxtJn4JoPHBYeEhC29zjHvtzfSnnnDzCQxiJkWO6pyuAFVIyJUK50Bx_yuaiDicscEjShfd-fQEN_l3eFsUzTGa5rX9gfsPckH8jkpkFkXJlUKFt-nt_9FDnqi5WM6Hf_d891jocGkgiSLM2YURz5Fkyq8S6o-hrBnVf4Pz4dtfsQBw-NnOAl4FPnaknsVdDLZ-qe9gaZdN3wbHQMwFq2eTmm36M6ky47A2xO8MksDSlh4ROcrqJZOBaCWE6fFowcot1sJXFAqNw5iuEKNmtFtJU6oPWxTGY5C0BdjExksQZzqmg2JkjbqZE0zRBFBs0oSJHZsQTnBZmTELIUzMjZVO5eXfVp0tBoOWoW0KgTdHEhlHhNXkvZDoNIdQKu7RVEmhF3AmWWUYzpAW1Y_oEPAsF1Jf-msAlCiMnchbg3yxDG7n6VKAPssQQs3RGPjPLCjOKtHtK4X_3ivVvHbX0xxZhUk44DBv8HDd72rQLEenrXKuIEr_L6VzZ93BpisnxMWxJV6pRcYe1LTtu4nQGZ20hiJs98zHRHomwWJFqxIlPZrSrqTrxUAN4jCl4WSLgf-c2zRfO3AHqvlVCt518s92IUx75372znyoM7-xB5h95T2yxg9x9dlY-_-wICdlyPiQ8arAQ824Cl_2QkSU_ba30gAvWlXGYRVFpg3PSmP0mIhq-ffA8HLB0ARZfYl1_vMspd9kbPyJVCRSaFObC_L-AwvKV8f7Oqqd6bwbUYvdA_6cw1gFUeiqH2wuggOjFI3WDp-5ttVdmZnDVDK--LR3y5b2cYHAf3EG2N-7qMBwZqpOb3ivnRFX_SUlB9V9BlvSe_sLU5zJphBoSWm2-_4j9rWQjCaswlBLbScRA3r1KC5BFxFgbFFv7p4hWk_xjdAx5q4RHM6wqFfGj1WkrjRtdnMC7z1ZM7Bdsno-5yt6PQBP-y4QIvpSpefXl8E4_gBJ6dzToQwLS_Tpk7CjzlIV3oUZ5XfMV0s14Flky6ErsvBdXMzNbHwvxwCAoxbYDrjZ9U-w9gibGOOVBYmKjhkeGLGs8ejqc8TxrzEEFL1li1ZfXxeNAcu4zyNwTHsWaaLVciWaw-UuPqA4uDFxMNmxI6kfXa49L0voFkQaeMo48J2lVjH00QV8f-nXnVaZFztiTU7fYYlpK-RxRSL1q0qQOFMEKOdltqqKxKbM7grNSoBQz-ZHqQq7ZR4v7NRl-yyTGmcGvOzTaDfLP9snbDfiU2QnqH-S2pgtobbYJ_UZvGfg8AZurvNBbl-KuBOrN3yarxe5STJY9mHY_8y2c8C_foQifRSNr_oDANvMbfsukrV8HJimtMk9WF15Qaz51BCiZ9NIxiCsgaJHZ48Oi8EUput8rtTInjNjAvb33N4whgDKQVLWXE59k13dlZX7xA1V-pFbY9TvFLFsWwWS6Jrj8okejPb5Fsb9zraapVTTCIEr3VYR9BB_V7tgkldqpNatO6_qqczD4owmZ-dL6IDyE4f2u_2FCgUV1FP30UMdkRmKHAbhZ9kGCK-ZI5XS33qh",
"DataProtected": true
}

View File

@ -1,9 +0,0 @@
{
"Version": 1,
"Id": "9258A527F8A78F2F47D30E7F145FD59F",
"Created": "2022-02-15T09:58:48.5269984Z",
"Algorithm": "RS256",
"IsX509Certificate": false,
"Data": "CfDJ8HYLA_44KBlEtnKYw5Y6NgZcbR_xFrM2Jsvq7lBG7H9pe38jngLl4EUknvBtq5hxuuwWtTX5qnwK_90h5-sbgF98Tio47qnnv-wA50LawMrDvcEbWMjdBXeFD4hE4QCSCi43i3oRms09g1c6gHipjTOTGmZ0Tj6wGAJZHkdJz6uBuvnWkuypYjaZG1vap_baLugSmjP71PUzn7jgFR1dQDEOcZE91-dERlCPeU7RXdDOTrUJMjD4yvfXO3VdB53YiZErMIgCv7rx1qZhzBPmyg2Z3XK86kY877HD4I-DOerJKeqPYl9vfVmFQgRRLFdOhi5ZpmUwJaRKG0zjTDDfOuvFG16WNPCrr3-_AIU3ANaCvL4Lg44t2lamlRaKlEvT5aKxphO2cVZjSWsTPJMHgHXWYM01e09i3WDbL07g35vJWsnRrrhxhiMoVJJG68-WrZVtev47fT69of6Z5_lhFcc7donENuxlN3K2V8P90Nkxu4eYbHwp267IvadONcgCMO_wHdKwZZswFUs5HYVyYVOZKtmE2T4I7JJWrOeL2iM_VWSFwkwV0hCLQyKazQZwVIe8s2s3glYY8ektc36reTZoSg4ykhanq26OLX4VKw9UzvfyV_J-EozNh2WXlhtgGqoeomjVrNp6U612ywre3QLN-lvSDjd2MoQsZ-CG4S6kyTuXNT0KxsdXs-hXUlXRNbri8fshIjSkYjCVWUKvNFvn7IMJ5AxYakWekKdPL7r75Q7HNJMMYxt8jh7fv7N8QKWuOnWWy_kA8N6qXIsHsetBeBfGBHbq92mQkfcdArVKuysqTzSy2wm9t4mLNFbzO1QPAQ9VS6aYS3DcWh2NF_pc2xlRCRt9Mb1P9IYEUQk7P2iakeYUhKH1MMNh0GuMwkCIaed4XCTEVZfSB70YtPUCawgNFP9hn5ENUVNRWBf6717gT1ioybimXghodrCOHiYxxQDDpss3e8MIl_x-BaqW8C2zYFd6xE0pVFXV5-X7O6XP2sc3ClOd1EyVnLRT1-87Uof-1KYA2kzTyPfWrnC72maTbOJzeje2f6oT98BfsgkvakOAchAkEl_FJz_Dv_KdJ9ZwC9Xv0Wan4dvSS5aR35iifXptuZ0du0pc2t6_CoHGLZxOG6SvXm7AN24XYFcWnRPvGUS2M5NG4pHJn73vOPaon1SAIBUrLiDXSWeW_27G_5UG5P1lPXYecFMjVG2vdKPEDxygu3yj1e5CDyeVmvcnI3-Hl_4skomLB14as8U950O7fr-CuS_BAli6m0mplgAPCOrfeyq_o-xWdM9vNoaEHRGA5e2ZfEIknCinSY7CuoGCnMmR0O8eT2P3aQ34TKHRRspvCVs8GAyzCZaVT8_ZeOHCl4FU8Ac5NIe3OMRPuZs1uJaBfBIVlPP9MfhKgEA_S5t8vfa3RJhiU0jMy5h9OToqnBOQsiIkY0mjSMsn3VvsqeNutK5DKoTpATX822sSHCSYXAewk7F-agvqKnM_cPVhib9Z1r0UXLS2neLZwF5ob7uI1nYU8TNb6cawcWPGBz9FoMjtxXsMsAci5luEVg1ZfGTU9kShAa3sdfRYC5E4L37_Fy_4EZyNEKEMPxx8I20PCPfqEPR_JB0geDv0Up9ZfD2ZwgwovYDVbGv3qIbgbkEH2Z7zf2e4gH9sZClvei1XigDL9gjfJ0b9IdA3QpWw6b3uleR-WbNWag5S2Phz6kPB2irBgoN7oG_gUegXQTzCif0mgeQSwbea1vXOngXBLG1PiyRk_iPKPhZMmg1UoMeqXQlXqDL4VFRnMOsYdOKr-BWsgdCM9zE3CCyVueBX0zTuZU0kM0P8hUH9RsZYdqPOXS0d4Fy0YUmQZTHWwSMbCUG1XmJ4QN3y1FKUKBvRRHZmZboYHz5EKFMHhAbk9ZHZRCpLm4hIlH81IiSgRlYm3CacJqjlAiLp0Tc0zF6oFlZFipA-nM5znhgDJMSV-CSW1FSDvYFvHolOxR4U0hlw_XG6NeytrkiAR7-wvU3ufkslsWowtcyswCNHcT7eg-tpptSXyT0RJaQhWwAc9L9lYWZnCBwknUCak23u1V7jM8ZldOM5jiQrjRvEBv-sqMto4Qo6129AatIKri04PYD9VlHzLP76KY4F-UHUcu-9g3cJp9mnbnzhmD1LvNPQmH2giY0pc9hFWW6_Ablz7GmW2cngb9xwHAgi-WBSrZYoW6l2dAdkm72ECwWmMguwT6OZdaZZzjBYixHKM-mnb4uzVT6CU-pp4-G9dYtX5EPqhKcmsmwbV6qiziV61rGYypP37spT8H_SWTFmqD-sMPg6jJj1PncSFd2mlZFBkuFJDvF6Aorf35t9-rePPRc18k14Poa8J8j_mYVJo3lEIrtRDLF3d8EvZ9UEjmgBj25gSiYhOJBPriRop1qmlVVSUjoTBIJaXlTXefbcZTqc8vguzQ5Oy8rjzTaxeP1-OgsCDO0xw7ibWEeN",
"DataProtected": true
}

View File

@ -1 +0,0 @@
{"Version":1,"Id":"A7DD53B5F56AA3937910E9A73600964A","Created":"2022-10-13T20:19:56.3638146Z","Algorithm":"RS256","IsX509Certificate":false,"Data":"CfDJ8GjYME9sg_tHn5C8_j2EtO1vvYKDE1hzq5Kp8GHesS2tNpBMrM_9i8n6u2MDK4eczb8P8fRryy3dD8HS7GCrRB4dY-qvHq7eRrDdJz8C-HHEZTRt-H843A7O0aOLgXJoR6P0Yk3EbBBJcmFsEGHy9G9PfmVU6LyCpRcuv9be6YLfBI-ahU3XvkSLTLEV0YIs9HRY24Ue71_vWp7G_IawDuUMjQZgTT-ATwvu97iE1ubfIwh-HQWF34Rfk7xvuyWgWftqWxfzCDqP1VIE088c8zCvGTIDb6P7TCC-PFOtOlb6xNy7TlyHNSnvDLCu8WJvc9r5S0P_6Byl9zHVwxmXtGira_tu-7ZkqaVHHrLVwoV0-f4bTRnXn7nvXvvLdOHCTZcl9zh9pyNYVDlLy6arQcfLY09B6pqdaPxw8lt6hrs9D5vwVzknt9PANW7wod9-hN8RBX0oAf0qOyF2Kn6Bt4wWDTO9-JbNebHmGfq0rkaFHepugz4XS40-NfCYwo9Wn3H0uw5Wq0r4SWxhdU9Vbrgb0SCl4am46O_smKVsM5VVSA_3IqvYSWLq1OpqIasJthonDq8ZAxX9w6i3nXjea-T3kD-eoZxUnB5hSnMN62HoyvBSTIlYjUtw_bRHNmnb7oqneL2zCNGZBPIdOf9QByYOCifJvK27AFeSm6xMEZPMK1MRMr4K64_9Jj61wAZTtYp6tIMig8plHwnxpqjrMBYGvjH_L5YHcnDl784IujzwjYfuTqrD8BzlaTTcbCYl4Jxk5DKP6Jlhg7srv6MwO-Y4jvBfOq9PSLR8nN0KdNMHN-OV46b_aRIyefpAfkJIuAWKc2Qoh3jd6yPObVXwP9qYJ21DnaMuBigxt7c6m71z_3NKiSV1d-O9XNPwbwQ8mlkKwc236KnlSRmLli1HMQIJKJhiC5XI1gBXP6XbSi3bvVXgeEj9cVpBnXFkvkRxfXxZ3jZZG97VNuKuH0LSaeHatZIR8IcdeRYRieyAKFyQlXAhWqqTibaZKBx6SCs-9vSi7zojEkng4Aodgjpf79zH_FRQRWg9xufftZpJlAclE1T5119uCMcwDkOngL3xVbTY7S9Ak9lB7lDyuDKm2kIilbuhtrsLx3XJqLEsH0ub8PUuaBmnOZRz8fGikUoy2ZU9F0fIm3_Advymdohu8jjMQ6x4Cp3YWNusn-FblEC8HcdOgdQOw63ZRwJuij1xdLQlTgx3qsRf8xl2zOMnF3nUWodULk2ynTpkYjCp4lbQGGboZ1lxbrKeMeybvr2hmjANtYQz2ahRdMGoVDB2HSruEOrYHx7lFIk5EVaOBhqLigBkLFw5RtDMMo3x8SdLBkNzP2C3oYTy_iGaTwpSRktabgDTmCySLPXGXWiRy0AVTGwozvLhPl1xz-14vlidGvfxcW-n2ahfpN9kqM3MyB5GT85wq-aYxyYi6m3eF2Gek6xSmtVRhCwWnXlUysfawsCQDK_Bio9nEJiYF9WVHjKXvB7ZKq8dQy0IBWrXFz2p04JdBl6s9rzXUvTWtfJUePRh0gQqV24iFCRkg86_WpLXpgPMg91AXwurgrhgJjfUKhxeyl0Riej_hVndAF16H-lz0-N4mDhyy2liRTX56dlC4cWTv2DU4iPtLOarfCna_m7QTdzyeidkcNzTjdtCkTAciZaA_8HZifDbjyIJeCTHBHoIZqfO1VaRiXytx5gEdtt-DQSanj4EA5cvlRLF1xRD7VGI5FTYR-mua1xdw0xpPj28GQ9Tjh8fi2a1WbwRzmjKnOAPwJyG5YelMRHgYnpLqqmESNuLjgfvlAlFmXqPjaJ8FSiPKZEFpwoy2lH_cSx4lYprq2Z9evdY6yaP6lI0lDi2WF3ddCzEeWj2MMg1Rz7fqYzjxum4RINbugJNeck584dTJnESySSZCqQ67m_vd6QE4u6ujB6yzu7TpXc_sOG2AS3r39XtuiPn570r8Z6LWUfdv8WnyRHJ_P5Sf4YAZ8LrGRuz6UHyKesL3bQnHvj0tv9PlOUv9hxemQcfkDi0nrN_3E3HGXbFHQLJ-9RHuVgE0SvL2JIA0aOfpIl69eN8CkBRHVvFnmfKh6OzFDMToBXkhczBWAmCW9nwGVARd_7yjWpu9y8oeAL3yuPXUvJQTDvjLxFHvGntNISf8KM5g9SW_QIxzUFClw2qlqhRLo29TFiSsVQM-hxSu05Js_fGocSek4nkLAotNpCG1AAoWP8TeI1NpLZVRwwzngaBijL_AbIoeFyTY31XdUztEQsi0dvBpu0iLd68GBTKOdeFeZ2vo9AFa4OwTFZ7SATUYRMgixzLlcuWqn60JKdWSQgSPCTLBHHZfgkmfxXLLwT65GEHlwuI8pb20xBeorUhbs3cc9LqXGnuwno5K5v0LaeFailxaBMl4fcgoBDj8TpdKqFKrcsIPol6suVKZRW_drrkc18p5Nt_MR5Xnd6D9SrkXYOUlc8c7gRrnAxE","DataProtected":true}

View File

@ -1 +0,0 @@
{"Version":1,"Id":"B33EF2DCF9AAEDDA74F42B239C122EC3","Created":"2022-12-21T12:54:30.8778452Z","Algorithm":"RS256","IsX509Certificate":false,"Data":"CfDJ8BYS1jC_Z-ZPsg3E7DQNOTPJbX5na2yKwYTMzyoQuiVxDh2roPqW5hjhMHjO5KyMi0Hg_JgQ6TmQ8hgf-4kff-Z3PtIlT2ydkdtv0ZIljsrCbma4CFulhcRah8UczQetDDhe8CITbqTPnmX0Erz_MuBTt8f2zlj1Ne_OsuqyKYUCu_yo8SEy5vYT-_Q1626X77NtbvyWg8NheVKZadglyxml9X6AFe6zh3kRBX7odVWW0d45N9aQodGDq-Bv2h4DiLC_h5mtmwWcUTvwCQ5G4ix_12BSl_NzyDpkqZHi4wpYyLUCUfWALp-yni2tb-RT4GAmKqKx5pksPvjgSrhCkysXeJVKlyKnrto5jkV-R-E2EDrZHZCPFxZbOmdhRCkJczqVPzEyRikvv66deH_3RnENmpJR6qxG5s6EZ3o8kPBkQ5Lf_WL48_eD3Bkc3gSDarefr-eRohlCIfpAj--TTmZOBAeqDLFinsnEIVynxYQQidGdzKRe8jBhPI797mEjxfOGQ2v713Mp6UfbiPS6pJfDujQlAqvySSMAzSekdWaSmcYOFBKJ5K4V9PjyQwf96m4KPJlI0uB694_ULHJ34zGCYgxAU2bl1y5Sv0_MABxe3nDGGsgCXy1nvmGvdCQqJUmeJR8-FnYl_7-jS2GlFU7NdgNfCoiM4t2ZERZ2N2sMguOYxkSjj2ELblXNPD55fP3mw_20CSrcS-ms7FdsDbC-BNw_lx-BGy7oYrUVJZ4ifoTVM-xxBU3eWuzSCuGyuED60Ms05w5CL3CyQRrrP6XK-55X7F5IH19CrVUjV99a3X0ybib5X3Fw5m4vSRmz0jWS-tKK2dVZHtpSL6ixrbT88sVytaDyH3VWbVjUIkjnCtUnDGIp_BPRAnN6lYINX77yPb6JmBDd_TNhH2veM8IpCrHeuNNGz126_CcxHTw0kOc_Q-QxyqMOGgq6DmNBnLRav4UIsa8WaSsePi-k50lCYn5dBUSlBUnA4Vm3jIYX0-DUH2jy2rwNPw7xG_FqrnUP7DQLXO4ksQCVAHH80CQFYwrSJl6bSHNwrSis4YYnkhnp0CDJoz8CMlaNL67xGfxdqb2ztuKh64hxtB-pKja486lPMJWtgCW8ZtUxYK8lWqb7RA0bWCw2tYfLUgdCaK4ydCDXAmwLUoZA_BEEAaelx8r94qSc0nc3Dw__iVM2jc-yxgU_1ltMqjyYl7Rg_sDlAMg0Rg0jkY-yf8iY4HWWEUCT7UZi08Az-XokyVUHaXcsq4zV5K3qLzoLW1ZapRAVBSw3PG7W5m_ZonmXvu9tKdC-shgTFSWz0B9dRM_n6hIb19rgpEvjS55Wfu5CywS9YGqobIOU8LuZaQqBtJdq5-S4ZZSBi37qkoys-y6-N5Ga_dFMUzMeML3t1PkTmFH-AFYwW0YzahMtWOFVeTr3HwOzOm5hPQTSrLSp4sA7pPhoYoLuApoN0UvjqLUY7qjR8HsbOTker0AJcdf8fYA58SuFyX3MqdMyFsDBgsygyEsjvcU8x0kKF-6MAcLbWs9NAKV9TH98nHAZem-31xkRVicRAbEykweFMIaR8I8c-_stEKneWmPx0_oZnGSM4oaP9WG0mX7PEdl-krOuoBWplDOxoEFOng09QjWo8PMMaj5qMjkuCmOIGTx4zYcpvgo2hCqRZ1JmAmmD4jjETQvS33eOjMvETC4tdwvXyM-uZ-qNPlPKOqHFXDfTpv4UhnIWl4ieV9m1KzziejkinfVysFWsQD7uIvUcNvPBvfkTGpmvSfHIFzDllYk2RptbigJyiA8mbX30fSOBcoCMaK9SWJMRCV0ffg-zgURhd9ctOYjmUStEIPiGSEl-7EKBlrOIfDgCyxH3o8xphDRd6aqBHCElf07z7RUIU_oGduH8pIo8GwjLeXKrHCF6g9CosEaCO09K9E32pL5e9ojA_1o3WJC25OkqWaWEJ9iz7JSSpYxnkSDCvo6_8vXIXWjPqPWZwC5MkAWYKfgynv-iPwfZmGl1NCDZDw4OMtsrh1kpATdRlgaefafnLLysPfpMMRirIje2f6cqweTU7AXyh8WBfaoNHVybZmRmjK4jJuSFw1yCSDcHIxBcXlThZg41dkntNicmEbSYVrajXpnurxTNMiuQfNhDUsetXKReWLCwdIkXa7seQ5f8Om5-RR0DpLlPGrUiDLr9q24dZ8zOVU3Fnv_qSn-sOHn0ALV17LSaNfYjU-T-svlN5ksM2gnnNqqc8qadsiyP7WqoZZ9YdKwcQIFPWx0vB-G0Ej-4aQRtR7gxyNKP4zhDnEh9QkYfQRRcGA9_Pzwq7iDkPm66GFQJPpYioGQfZJrnsrjV5BiDON1ZHIpeUfXHs9qcC-U0g-jG2dTg51Znc_AS6rX-RxW3_dQXeeUFwndStmJUuZPHk4micnpjHZLO2Xcj14PMG81OgqtIxhpXLZq8MbhKjHLeKr2DvjwLEVph2yR1UD7D","DataProtected":true}

View File

@ -1 +0,0 @@
{"Version":1,"Id":"DCE5098F8B9D1301447CC90AB1307BB1","Created":"2023-02-21T14:52:03.5423989Z","Algorithm":"RS256","IsX509Certificate":false,"Data":"CfDJ8Pno3caweVxDrMdMtoqjLU-zkq97hfMbqd_a71uRzwCkfuVDrGVJuTHsecFn6xm9QskMBE5i1dNJ4l-EBrrflUZ0_ZiqESp5NGi4Uw7SaU-kijgI8566Ll_A6uy2dYsA6plpZ_1L2KFJuaCwGdMs68NXgZj8-8shIngrOBjTkvNeH0j1BUmvj7iHu1dheRQHBamrlh4L-pdPNAx9lR-yeOWoyJCUSNCviC9P-hLsd9nJzfn77gU4Kc4i8pfDyPf-pN3_IFSMU1T-PiVUwBobxXxEDj8oS5hSUDRVi49n4u5oluz68chky3NhxWjYNyfmjOS8CD0-GsL7VPxApDP8z33pOW8hSwSF-PWsQczitlvFqSf45kGpYBCs8JmwU1yqAgeKKho6tICk1CK4Zad1-0WMok6HMUHixqaB9MfEBWUqdeLjQcwLZo-iJ5LGLzAhL5o7JgtufV_c1RgYPXH1umXdIKD2IK_vWtDUv3Y7GHOiSyYBIJCaBxhVrk9ruztu-BWno4E_U-Jej_t18P7QBwAT9FQsO2lryGOEtG6f-zf_JwwHeJE9CtFxofXzkIKtc5fqliCYTp8JAfgzZ_8MKxLfs-ZD_iZPiLX8clAbFokJ86fqsL2s3EmTGTVxcc2nP7xmYm_5D9R_7QqBZPM5az0vIayvAbkjGFII6P6WyfB1j2nl1BwamMb8EdCuM7FOvD_bnstXETFpYC8oYhJYQNruRhWjY_tv7F1cVPCWD-pX5IARvRgsJEbE_WdgvicWcwLpz0MWu89GrI4qP7WSoLGorlFmss_Ubf5feu7KYbpPrdGVLJbaaipYFTQgxaZ0GB9CjjMe8LPmU_9P-5wbkZ69LDyzIVIEpCuTF1fZr7SWr-C8NIVEvIyCTQoJmaFbvfdejVTxm2eOyolJLTGedHOkuaDg90hBFDtyQ78DVgzihZX3uZ0BwkCkkkiBB1boY3B0IWKDR3OWsG2lDqIn61FcLaAHgAqQF7JdMSmjEIGOVKUAEcnDf7NyVbWjZtPhpMLhmwu3OmPPrIqu-8_2e2RjlRuvXClhNpLyo-H4HipVztSUkP7ujukuZsRwJFj4p-VV2O7lyB7ogocAHF-AEMvw7ywmMPysYY_-_EU3U2vtRYIisKOV_VrsaMujNhMbrZUCq-ZIIsA-8GdLA2dqargOfd4f7jodpAtrBm6a5O8vWyAehdKfGj9i29tgfAQd2VnRqtN0eArruLGuIopP9FcEK_lNmHPjrpDaHZzA7AnfYBJsnOVKRehZSAmZGQUdlXV0rDzmLxgMZSN4P68eTLFCil8RwJFHzdExHk7VWd6xMo1m-EG_BioFcpazqEJYPjwCt9Rx_9_NMuvu1IiTiP_U2GO65dvZh2-iDPMGyTfeFJBuiIHW9fGg2BH5dw6Q9swMNXBmO174dGhQSA9BWTXnDFW3PsKEhFj5avEbV2Tkp4QQAiTkLaRbDSVfFH7NiKImy4Py4l1W52ftVBt5yPUDJi2GHHk-zxhgqBmY2k-duV9eeiNvXklDHySo0dOZShzUTqYmg0tUgdrthytN8TMp6BSAZtO0YFZgELPkeFKoE9Rz_BwazdwK1OphzQ8dvECEVO5nJRil8_6iwvu04aQ_s_fFMmwa2xrft3DY1uGXswukhOcw_he_nnwAfY7ExA__BbLiEc0NNgG8ZDd6hKdiR_RZeY-4FHMl0J59TwSgc2KNnWEqsUHLXN4Y6VC1TA4eVf9zcku4CPNQCMZPFAE7hgYdttLzrRyEPnsfGTWBYt_wVN7EszCbidkGLIvHr3ZNd0Oz49W7KNRZzVydOMila9AytE1tRegU3e3HSoFFqF9Gqr1mKAQ_B4N5UBxYB39ta5cPwVXGHTsvrak3XggzuHOIqsGyLxEYZka2-ykx0gKMCIWqf_w63Mu_IYkSOQT4HQ3yheBchqeUZPqAAZASp00SvWIt_Cirj1O1XKxQyNVWiv-Im_i6xy4V5dl1RQSwmxQYe_7oiPS6dqewVR1WJZsmnptq521SsJLZQffHK-CDtxT69fE218ZIaNOzkDERp6c422B8wqZK5rf1zn6lO1I4MwTjkETMY_jFtFZw3_Yo9zYMLmC2kIzkupXjhrzT1vCWIaU6UYegi72Ikbx9fvmDHV6g9Kiy_KPBR8ECe89Skqz8DklPIhm3tqy5eaQ5iqcyW8Gxyq1K2DN1BMoCAqIya5d-RddpLvRv-W_cTf-DfJOxmGpKlYCcp4d6pel32a2ykGlNQSWJ9_8hk5jcypkosDWN8M8OROkBxLo9qtP0FWLnITuw1aXC-c03ypfeGJeE2HN9vwT3Rxk4i_rlGUXgIDgSk9XfyQghfKXBTpuOvrbf1VoEcsS_E6qaNJmpGpz9Ok7Ks4UDb3DtnadbABdyhZQLGg49QAywXqj4qFdgLBnDmVTHLm8eyIDDeVC0SiD061DhZ7qtzI9U7wYbWpp1oRNTuPZDlypBaZpE","DataProtected":true}

View File

@ -1 +0,0 @@
{"AdditionalData":{},"Alg":"RS256","Crv":null,"D":"af7TFMQS67FxuYbUvAAiXHqqGF7HYby1Vy-8l7FjICcmb3829IWPDTm4gjv_pCqV97w46rFaZ7qBGfQII00rfDlCYdTgh94IJARpBdEax2U3o_7uvgVjpngH88li9hQI6IkcS4xGmljZ_5R6RF_fW4NMLu3n2hQ_3UyR-TVt1xigDLVnItYyC2eOuif2TgJAA_T-rgcSRFZCyjkUSkRF4Y_l9FMqFqiRZHLZAlX0DyQStptYTice2ezkLJPixCOI4k27_Bg3HcHfkfPPPNyhfJiHPMUl1NfgZ91_RV9kC2nZmdhz0tdq-tf878iFjp-Rdk7MwjAKCwggGtFPpFNiyQ","DP":"G4Ximfbf8LZG6YUSEPALnPiHFZldxEaP27KJGS-K3QDBnOc-QBswU2G43h6salJsj5dWEkBYrfOX73sE-JYgNwpCHjPXkVJPTKaGs95DPS8j0bzGwzHoJcFVFInygxFKziahcZzrGnvjPgOUBpgmrfJ-S78779WSJU3v7GlFvHk","DQ":"w6FR407kPQmLCrGN2iGKPdNnyOP7qK9w-332QVJQNPpT4Y8nW0cgYIFn1ObZ6-q5xv_jl12FFqbKrQUsXVde_oOYe4AHq3fYHm594T-GkaNQcmNTDwc2qNj3ZhEcYTGLLf6Udvu35MqEd4Nk-IYlItgt_hlLBFmm8XDZHwxQLm0","E":"AQAB","K":null,"KeyId":"D2252FAB0F2BA4E42E1EBDBC1E281E8F","KeyOps":[],"Kid":"D2252FAB0F2BA4E42E1EBDBC1E281E8F","Kty":"RSA","N":"kt6GLyuy4a5jJrlV_4dFW-YZU0J5kT1A6raNIg4nFiY_ct9w3uOgGxEPCSDSF5a_2ldGR95XGol1ygLY81_TtjMFe7yCGUH6cnHXVO75vCuvNXp_3q5xW8L7WueVOC_iXUHf4AEjLz-DFQDHUG4s2vtrXQfGzPt_GsA54UaFBS7KjMOQ6dr-ndBhGxNie33PRfq33SlyoAr72DFL1DNqdnMEXCXLjfX8AQuvhPsYE0sZch6Qbqy2Q6zpEV7N4r36STajjuIMgKK5WfB4UBNnRwCKE1AgyRKVjBVpcyUWFMCB8OQaCZ1UgnGM8K_uD74PMCbHwnwDnKiii_iUd52POQ","Oth":null,"P":"wCLaXWinvykcdpCDfZp3P0SAOLtD48Ioa2U-Yi9y-vjfUpfrQgelpYXzj6PKlIdw8rCjcDIJVYXHJX5SV1hDjKpoSeXC1yXduNLTPDxnR4JfWxgeilNsvS1X9z9Y0KfrCtZuZBYpbq8c9PODDw6mnYlxEC9Ugg8bPPm1BSi-Yls","Q":"w6_X4c6oE78rhUv34x1cb92DL4Ub6KF1BSlOptBMLKWsggQtNZxApC1Thi4eEOHVkr378vgx564rkuAtJbBivNPd5LKXuiqalSUY6332rIIDOe3YK41VoBThtudetvbJubjRdEpcGvxO_5XVBOV1y0WbuzpzOb66tDh2iDsDYPs","QI":"YuJogiqlbtI8CRpDcBDt3PoHYl8YTE3opFp_vAM5r1_g34KckzXFVY6-bIXQRhvyGGHhF5T9obdEogd1hzOFwLbKLXVVhb4CowkMF5-GRachee2L46xpGZtGe0gp_MgEzXFbBHIjv6hZtTMfZasnqUALdBh3vbUF1L0D1M0exnI","Use":null,"X":null,"X5c":[],"X5t":null,"X5tS256":null,"X5u":null,"Y":null,"KeySize":2048,"HasPrivateKey":true,"CryptoProviderFactory":{"CryptoProviderCache":{},"CustomCryptoProvider":null,"CacheSignatureProviders":true,"SignatureProviderObjectPoolCacheSize":16}}

View File

@ -0,0 +1,6 @@
namespace Identity.Configurations;
public class AuthOptions
{
public string IssuerUri { get; set; }
}

View File

@ -1,9 +1,9 @@
namespace Identity.Configurations;
using System.Collections.Generic;
using Duende.IdentityServer;
using Duende.IdentityServer.Models;
using Identity.Identity.Constants;
namespace Identity;
using Identity.Constants;
public static class Config
{

View File

@ -1,8 +1,8 @@
namespace Identity.Configurations;
using BuildingBlocks.Core;
using BuildingBlocks.Core.Event;
namespace Identity;
public sealed class EventMapper : IEventMapper
{
public IIntegrationEvent MapToIntegrationEvent(IDomainEvent @event)

View File

@ -0,0 +1,5 @@
namespace Identity.Configurations;
public class IdentityRoot
{
}

View File

@ -1,12 +1,12 @@
namespace Identity.Configurations;
using System.Security.Claims;
using System.Threading.Tasks;
using Duende.IdentityServer.Models;
using Duende.IdentityServer.Validation;
using Identity.Identity.Models;
using Identity.Models;
using Microsoft.AspNetCore.Identity;
namespace Identity;
public class UserValidator : IResourceOwnerPasswordValidator
{
private readonly SignInManager<User> _signInManager;

View File

@ -1,19 +1,22 @@
using Identity.Data;
using Identity.Identity.Models;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Identity;
using Microsoft.Extensions.DependencyInjection;
using BuildingBlocks.Web;
using Microsoft.AspNetCore.Builder;
namespace Identity.Extensions.Infrastructure;
using System.Net;
using Microsoft.IdentityModel.Logging;
using Configurations;
public static class IdentityServerExtensions
{
public static IServiceCollection AddCustomIdentityServer(this IServiceCollection services, IWebHostEnvironment env)
public static WebApplicationBuilder AddCustomIdentityServer(this WebApplicationBuilder builder)
{
services.AddIdentity<User, Role>(config =>
builder.Services.AddValidateOptions<AuthOptions>();
var authOptions = builder.Services.GetOptions<AuthOptions>(nameof(AuthOptions));
builder.Services.AddIdentity<User, Role>(config =>
{
config.Password.RequiredLength = 6;
config.Password.RequireDigit = false;
@ -23,12 +26,13 @@ public static class IdentityServerExtensions
.AddEntityFrameworkStores<IdentityContext>()
.AddDefaultTokenProviders();
var identityServerBuilder = services.AddIdentityServer(options =>
var identityServerBuilder = builder.Services.AddIdentityServer(options =>
{
options.Events.RaiseErrorEvents = true;
options.Events.RaiseInformationEvents = true;
options.Events.RaiseFailureEvents = true;
options.Events.RaiseSuccessEvents = true;
options.IssuerUri = authOptions.IssuerUri;
})
.AddInMemoryIdentityResources(Config.IdentityResources)
.AddInMemoryApiResources(Config.ApiResources)
@ -38,8 +42,8 @@ public static class IdentityServerExtensions
.AddResourceOwnerValidator<UserValidator>();
//ref: https://documentation.openiddict.com/configuration/encryption-and-signing-credentials.html
// identityServerBuilder.AddDeveloperSigningCredential();
identityServerBuilder.AddDeveloperSigningCredential();
return services;
return builder;
}
}

View File

@ -26,6 +26,8 @@ using Serilog;
namespace Identity.Extensions.Infrastructure;
using Configurations;
public static class InfrastructureExtensions
{
public static WebApplicationBuilder AddInfrastructure(this WebApplicationBuilder builder)
@ -74,15 +76,7 @@ public static class InfrastructureExtensions
SnowFlakIdGenerator.Configure(4);
builder.Services.AddCustomIdentityServer(env);
//ref: https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/proxy-load-balancer?view=aspnetcore-7.0&viewFallbackFrom=aspnetcore-2.2
//ref: https://medium.com/@christopherlenard/identity-server-and-nginx-ingress-controller-in-kubernetes-7146c22a2466
// builder.Services.Configure<ForwardedHeadersOptions>(options =>
// {
// options.ForwardedHeaders =
// ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
// });
builder.AddCustomIdentityServer();
Microsoft.IdentityModel.Logging.IdentityModelEventSource.ShowPII = true;
@ -95,10 +89,6 @@ public static class InfrastructureExtensions
var env = app.Environment;
var appOptions = app.GetOptions<AppOptions>(nameof(AppOptions));
//ref: https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/proxy-load-balancer?view=aspnetcore-7.0&viewFallbackFrom=aspnetcore-2.2
//ref: https://medium.com/@christopherlenard/identity-server-and-nginx-ingress-controller-in-kubernetes-7146c22a2466
// app.UseForwardedHeaders();
app.UseProblemDetails();
app.UseSerilogRequestLogging(options =>
{
@ -113,12 +103,6 @@ public static class InfrastructureExtensions
app.MapMetrics();
app.MapGet("/", x => x.Response.WriteAsync(appOptions.Name));
//
// app.Use((httpContext, next) =>
// {
// httpContext.Request.Scheme = "https";
// return next();
// });
if (env.IsDevelopment())
{

View File

@ -5,6 +5,8 @@ using Microsoft.Extensions.DependencyInjection;
namespace Identity.Extensions.Infrastructure;
using Configurations;
public static class MediatRExtensions
{
public static IServiceCollection AddCustomMediatR(this IServiceCollection services)

View File

@ -1,5 +0,0 @@
namespace Identity;
public class IdentityRoot
{
}

View File

@ -8,7 +8,8 @@ COPY ./src/Services/Passenger/src/Passenger.Api/Passenger.Api.csproj ./Services/
# Restore nuget packages
RUN dotnet restore ./Services/Passenger/src/Passenger.Api/Passenger.Api.csproj
RUN --mount=type=cache,id=passenger_nuget,target=/root/.nuget/packages \
dotnet restore ./Services/Passenger/src/Passenger.Api/Passenger.Api.csproj
# Copy project files
COPY ./src/BuildingBlocks ./BuildingBlocks/
@ -19,13 +20,15 @@ COPY ./src/Services/Passenger/src/Passenger.Api/ ./Services/Passenger/src/Passe
# and no restore, as we did it already
RUN ls
RUN dotnet build -c Release --no-restore ./Services/Passenger/src/Passenger.Api/Passenger.Api.csproj
RUN --mount=type=cache,id=passenger_nuget,target=/root/.nuget/packages \
dotnet build -c Release --no-restore ./Services/Passenger/src/Passenger.Api/Passenger.Api.csproj
WORKDIR /Services/Passenger/src/Passenger.Api
# Publish project to output folder
# and no build, as we did it already
RUN dotnet publish -c Release --no-build -o out
RUN --mount=type=cache,id=passenger_nuget,target=/root/.nuget/packages \
dotnet publish -c Release --no-build -o out
FROM mcr.microsoft.com/dotnet/aspnet:7.0
@ -33,8 +36,11 @@ FROM mcr.microsoft.com/dotnet/aspnet:7.0
WORKDIR /
COPY --from=builder /Services/Passenger/src/Passenger.Api/out .
ENV ASPNETCORE_URLS https://*:5012, http://*:6012
ENV ASPNETCORE_URLS https://*:443, http://*:80
ENV ASPNETCORE_ENVIRONMENT docker
EXPOSE 80
EXPOSE 443
ENTRYPOINT ["dotnet", "Passenger.Api.dll"]

View File

@ -16,7 +16,7 @@
"dotnetRunMessages": true,
"launchBrowser": true,
"launchUrl": "swagger",
"applicationUrl": "https://localhost:5012;http://localhost:6012",
"applicationUrl": "https://localhost:5012",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}

View File

@ -9,9 +9,10 @@
"ConnectionString": "Server=postgres;Port=5432;Database=persist_message;User Id=postgres;Password=postgres;Include Error Detail=true"
},
"Jwt": {
"Authority": "http://myidentityserver.com",
"Authority": "http://host.docker.internal:6005",
"Audience": "passenger-api",
"RequireHttpsMetadata": false
"RequireHttpsMetadata": false,
"MetadataAddress": "http://host.docker.internal:6005/.well-known/openid-configuration"
},
"MongoOptions": {
"ConnectionString": "mongodb://mongo:27017",