Не удается перенаправить / подключиться к Identity Server 4 через MVC приложение - Docker ASP. NET Core 3.1 (IDX20803) - PullRequest
0 голосов
/ 30 марта 2020

У меня есть сервер Docker Linux (под управлением Ubutnu 18) с контейнером Identity Server и приложение mvc в контейнере из одного из быстрых запусков, которое выполняет поток hybrid. Однако, когда оба этих контейнера работают, я получаю IDX20803 Socket IO Exception. Кажется, что независимо от того, что я изменяю свойство authority, оно не работает.

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllersWithViews().AddRazorRuntimeCompilation();

    JwtSecurityTokenHandler.DefaultMapInboundClaims = false;

    services.AddAuthentication(options =>
    {
        options.DefaultScheme = "Cookies";
        options.DefaultChallengeScheme = "oidc";
    })
    .AddCookie("Cookies")
    .AddOpenIdConnect("oidc", options =>
    {
        //options.SignInScheme = "Cookies";

        options.Authority = "http://mylinuxserver.co.uk:8888"; // ids on p:8888
        options.RequireHttpsMetadata = false;

        options.ClientId = "mvc";
        options.ClientSecret = "secret";
        options.ResponseType = "code id_token";

        options.SaveTokens = true;
        options.GetClaimsFromUserInfoEndpoint = true;

        options.Scope.Add("web_api");
    });
}

Если вы запускаете приложение mvc в контейнере локально и указываете authority на http://mylinuxserver.co.uk:8888 с запущенными на сервере идентификаторами, редирект работает. Если вы запускаете mvc и ids в контейнерах локально, это работает, если вы используете ip своего хоста, а не localhost.

Я не понимаю, в чем проблема, потому что я всегда указывал authority на тот же URL-адрес, и он работал в пас с apis, когда оба работали на моем Linux сервере.

РЕДАКТИРОВАТЬ

Опции сервера идентификации:

options.IssuerUri = "http://mylinuxserver.co.uk:8888"; 
options.PublicOrigin = "http://mylinuxserver.co.uk:8888";

1 Ответ

0 голосов
/ 31 марта 2020

Попробуйте получить http://yourdomain.com/.well-known/2openid-configuration и проверьте значение эмитента . Вы должны использовать значение эмитента как authority в своих клиентах.

Если это решит вашу проблему, вы сможете сменить эмитента с помощью опции PublicOrigin.

...