Угловой SPA и OAuth2 IdentityServer4 внутри Docker - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть угловой клиент SPA. Api в качестве сервера ресурсов для обслуживания SPA и IdentityServer4 в качестве OAuth2. Все они в докере.

Angular использует плагин angular-oauth2-oidc.

Проблема связана с URI эмитента и Angular или Resource Server. Потому что докер, сервер ID4 получает другое имя вместо localhost: 5000. например, sso: 5000.

Поэтому, когда Angular пытается загрузить документ обнаружения, возникает ошибка: издатель недействителен.

Если URI эмитента изменяется в параметрах конфигурации IdentityServer, то серверу ресурсов не удается проверить токен JWT, поскольку сервер ресурсов не знает URI localhost: 5000.

докер-compose.yml:

version: "3"
services:
    database:
        image: "microsoft/mssql-server-linux"
        environment:
            SA_PASSWORD: "@Password1"
            ACCEPT_EULA: "Y"
        ports:
            - "44274:1433"
    sso:
        image: "jpproject/v1"
        build: 
          context: .
          dockerfile: sso.dockerfile
        ports:
            - "5000:5000"
        depends_on:
            - database
        environment: 
            SQLSERVER_CONNECTION: "Server=database,1433;Initial Catalog=JpProject;Persist Security Info=False;User ID=sa;Password=@Password1;MultipleActiveResultSets=False;Connection Timeout=30;"
            ASPNETCORE_ENVIRONMENT: "Development"
            ISSUER_URI: "http://localhost:5000"
    user-management-api:
        build: 
          context: .
          dockerfile: user-management.dockerfile
        ports:
            - "5003:5003"
        depends_on:
            - database
            - sso
        environment: 
            SQLSERVER_CONNECTION: "Server=database,1433;Initial Catalog=JpProject;Persist Security Info=False;User ID=sa;Password=@Password1;MultipleActiveResultSets=False;Connection Timeout=30;"
            ASPNETCORE_ENVIRONMENT: "Development"
            AUTHORITY: "http://localhost:5000"
    user-management-ui:
        container_name: user-management-ui
        build: 
          context: .
          dockerfile: ui-user-management.dockerfile
        ports:
            - 4200:80

Есть способ указать докеру использовать localhost вместо имени хоста. Или лучший способ иметь один и тот же URI эмитента между Api и SPA.

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