Интеграция Identity Server;Docker и MVC Core (веб-клиент) - PullRequest
0 голосов
/ 25 ноября 2018

Я пытаюсь заставить основное веб-приложение MVC работать с Identity Server и Docker.Вот шаги, которые я предпринял:

1) Загрузите быстрый старт: https://github.com/IdentityServer/IdentityServer4.Samples/tree/dev

Запустите проект и убедитесь, что он работает как положено.Теперь попробуйте добавить Docker в уравнение:

2) Откройте решение.Щелкните правой кнопкой мыши: IdentityServerWithAspNetIdentity и выберите: Добавить поддержку оркестровки контейнера (затем Docker Compose, затем Linux).3) Щелкните правой кнопкой мыши MVCClient и выберите: Добавить поддержку оркестровки контейнера (затем Docker Compose, затем Linux).4) Измените Docker-compose.override.yml на это (обратите внимание, что я изменил только порты для каждой службы с 80 на 5002: 80 и 5000: 80):

version: '3.4'

services:
  mvcclient:
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
    ports:
      - "5002:80"

  identityserverwithaspnetidentity:
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
    ports:
      - "5000:80"

5) Попробуйте запустить проектчтобы увидеть, что происходит.Когда я пытаюсь получить доступ: Дом / Безопасность;вместо того, чтобы пересылать на страницу входа в систему;Я вижу эту ошибку: 'Unable to obtain configuration from:http://localhost:5000/.well-known/openid-configuration'.

Я полагаю, что это потому, что контейнер Docker не может видеть localhost: 5000.Поэтому после прочтения нескольких сообщений в блоге;Я пытаюсь это:

6) Откройте автозагрузку в MVCClient и измените это:

options.Authority = "http://localhost:5000";

на это:

options.Authority = "http://identityserverwithaspnetidentity:80";

Однако я просто вижу ошибку DNS(404 я верю).Что мне нужно сделать, чтобы Identity Server работал с веб-приложением MVC в этом случае?

Пока я смотрел здесь: Как я могу использовать IdentityServer4 изнутри и снаружи док-машины? и здесь: Identity Server 4 и докер .Однако ответы пока не помогли.

Ответы [ 2 ]

0 голосов
/ 01 мая 2019

Последние пару дней я боролся с той же проблемой и, наконец, нашел решение, которое работает!Все, что вам нужно сделать, это установить Authority (в вашем клиенте mvc) и IssuerUri (в вашем API идентификации) на IP-адрес вашего хоста докера.В Windows это 10.0.75.1.

Я наконец смог придумать это после обзора реализации в eShopOnContainers , который, как я обнаружил, является действительно хорошим ресурсом для изучения того, как реализоватьDockerized микросервисная архитектура в .NET Core.

0 голосов
/ 25 ноября 2018

Как вы уже заметили в моей теме , у меня была похожая проблема.На моем IdentityServerAuthenticationOptions (сторона API) я настроил следующее:

1) Установите правильное значение Autority, в вашем случае я бы сказал, что оно должно быть http://identityserverwithaspnetidentity/
2) НастроитьApiName (это имя ApiResource)
3) Возможно также настроить JwtBackChannelHandler (я не уверен, требовалось ли это или нет)
4) Если вы не используете Https, я бы деактивировалэто (я не помню, если это явно необходимо: установите RequireHttpsMetadata в false)

И на клиенте я сделал фоллинг

1) Установите ValidateIssuerName в false
2) Если вы не используете Https, возможно, также деактивируйте его, установив для RequireHttps значение false (я не помню, требуется ли это явно)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...