Как настроить ABP в качестве поставщика OIDC, если он скрыт за Traefik?C#

Место общения программистов C#
Ответить
Anonymous
 Как настроить ABP в качестве поставщика OIDC, если он скрыт за Traefik?

Сообщение Anonymous »

Я пытаюсь использовать приложение ABP в качестве поставщика удостоверений с помощью OIDC. Когда я запускаю приложение ABP и основное сервисное приложение на VS, у меня нет проблем. Я могу перенаправить в ABP при попытке доступа к основной службе, если нет аутентификации, проверить пользователя и отправить файлы cookie для справки. Поскольку ожидается, что обе службы будут находиться на одном и том же сервере при запуске, у меня есть общий доступ к БД для проверки авторизации пользователей и т. д.
Проблема в том, что я пытаюсь установить обратный прокси-сервер (Traefik) и получить доступ к этой же настройке. Это решение будет работать в клиентской системе/сети, и его необходимо объединить вместе, т. е. я дам им пару файлов компоновки с Traefik и Identity как часть инфраструктуры, а мою основную службу — как отдельную компоновку. Другие подобные службы могут появиться позже.
Мои проблемы делятся на два основных раздела: URL-адрес и используемые конфигурации, а также сертификат SSL (если мне нужно переключиться на https, чтобы файлы cookie сохранялись). Если придерживаться только http, браузер будет удалять файлы cookie ABP и сохранять только мои служебные.
Я также не уверен, как поток OIDC будет работать в таком сценарии. Я могу использовать сеть Docker для внутреннего общения, но мне также нужны URL-адреса, обращенные к браузеру для перенаправления.
Урезанный файл docker-compose.yml со всеми соответствующими приложениями:
services:
reverse-proxy:
container_name: traefik
image: 'traefik:3.0'
restart: always
networks:
- service
# - host
command:
- '--api.insecure=true'
- '--api.dashboard=true'
- '--providers.docker=true'
- '--accessLog=true'
- '--accessLog.filePath=/logs/traefik/access.log'
- '--log.level=INFO'

# Entrypoints
- '--entrypoints.web.address=:80'
- '--entrypoints.websecure.address=:443'
# - '--entryPoints.websecure.http.tls=true'

# Certificates
- '--providers.file.directory=/etc/traefik'
- '--providers.file.watch=true'
ports:
- '80:80'
- '443:443'
- '8080:8080'

volumes:
- '/var/run/docker.sock:/var/run/docker.sock'
- '${Root_Folder:-.}/Logs:/logs/'
- '${Root_Folder:-.}/configs/traefik/certs:/etc/certs'
- '${Root_Folder:-.}/configs/traefik/certificates.yml:/etc/traefik/certificates.yml:ro'
logging:
driver: json-file
options: { max-size: 20m, max-file: '5' }

main-service:
container_name: main-service
image: 'main-service:local'
restart: always
extra_hosts:
- "pc-name:"
ports:
- '30200:80'
- '30210:443'
depends_on:
- abp-identity
labels:
- "traefik.enable=true"

- traefik.http.routers.main-service-application.rule=PathRegexp(`^/(web|api)/service`)
- traefik.http.routers.main-service-application.entrypoints=web

- traefik.http.routers.main-service-application-secure.entrypoints=websecure
- traefik.http.routers.main-service-application-secure.tls=true
- traefik.http.routers.main-service-application-secure.rule=PathRegexp(`^/(web|api)/service`)
networks:
- service
logging:
driver: json-file
options: {max-size: 3m, max-file: '2'}
volumes:
- '${App_Root_Dir:-.}/data:/data'
- '${App_Root_Dir:-.}/logs:/app/logs'
- 'secrets-service:/app/secrets'
- 'D:\Repos\data:/app/data'
environment:
Configuration__BaseUrl: '/web/service/'
Configuration__ReportApiBaseUrl: 'http://main-service/web/service'

Configuration__Clients__0__RootUrls__0: ${ServiceUrl}
Configuration__Clients__0__RedirectUris__0: ${ServiceUrl}
Configuration__Clients__0__PostLogoutRedirectUris__0: ${ServiceUrl}
Configuration__Clients__0__AllowedCorsOrigins__0: ${ServiceUrl}

AuthConfiguration__Authority: ${Authority}
AuthConfiguration__RequireHttpsMetadata: ${RequireHttpsMetadata}

ASPNETCORE_HTTP_PORTS: 80

mongo-database:
container_name: mongo-service
image: 'mongo:7.0'
restart: always
ports:
- '30201:27017'
networks:
- service
volumes:
- 'mongodata-service:/data/db'
logging:
driver: json-file
options: {max-size: 20m, max-file: '5'}

abp-identity:
container_name: abp-identity
image: 'identity:local'
restart: always
ports:
- '31105:80'
- '31106:443'
labels:
- traefik.enable=true
- traefik.http.routers.abpidentity.entrypoints=web
- traefik.http.routers.abpidentity.rule=PathPrefix(`/web/abp-identity`)

- traefik.http.routers.abpidentity-secure.entrypoints=websecure
- traefik.http.routers.abpidentity-secure.rule=PathPrefix(`/web/abp-identity`)
- traefik.http.routers.abpidentity-secure.tls=true

logging:
driver: json-file
options: {max-size: 20m, max-file: '5'}
volumes:
- 'D:\Repos\data:/app/data'
- 'secrets-abp:/app/secrets'
networks:
- service
# - host
environment:
TZ: '${Time_Zone}'
ConnectionStrings__Default: "Data Source=/app/data/AbpIdentitySolution.db;"
App__BasePath: '/web/abp-identity/'
# App__SelfUrl: ${Authority}
AllowedHosts: "*"
AuthServer__Authority: ${Authority}
AuthServer__RequireHttpsMetadata: ${RequireHttpsMetadata}

.env данные файла:
ServiceUrl='https://pc-name/web/ddqm/'
Authority='https://pc-name/web/abp-identity/'
RequireHttpsMetadata="false"
Root_Folder='D:/Repos'


Подробнее здесь: https://stackoverflow.com/questions/798 ... nd-traefik
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»