Я пытаюсь использовать приложение 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
Как настроить ABP в качестве поставщика OIDC, если он скрыт за Traefik? ⇐ C#
Место общения программистов C#
1763710992
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'
Подробнее здесь: [url]https://stackoverflow.com/questions/79816622/how-do-i-configure-abp-as-an-oidc-provider-if-it-is-hidden-behind-traefik[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия