IdentityServer4 и получение нескольких приложений для совместной аутентификации - PullRequest
0 голосов
/ 12 ноября 2019

У меня было много проблем в разных примерах, реализующих функцию единого входа или аналогичную функцию с сервером идентификации. Учитывая конфигурацию IDServ Startup.cs

var builder = services.AddIdentityServer()
                .AddInMemoryIdentityResources(Config.GetIdentityResources())
                .AddInMemoryApiResources(Config.GetApis())
                .AddInMemoryClients(Config.GetClients())
                .AddTestUsers(Config.GetUsers());

и двух клиентов:

services.AddMvc();

            JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();

            services.AddAuthentication(options =>
                {
                    options.DefaultScheme = "Cookies";
                    options.DefaultChallengeScheme = "oidc";
                })
                .AddCookie("Cookies")
                .AddOpenIdConnect("oidc", options =>
                {
                    options.Authority = "http://localhost:5000";
                    options.RequireHttpsMetadata = false;

                    options.ClientId = "mvc";
                    options.SaveTokens = true;
                });

+

services.AddMvcCore()
                .AddAuthorization()
                .AddJsonFormatters();

            services.AddAuthentication("Bearer")
                .AddJwtBearer("Bearer", options =>
                {
                    options.Authority = "http://localhost:5000";
                    options.RequireHttpsMetadata = false;

                    options.Audience = "api1";
                });

Я всегда сталкиваюсь с какой-то проблемой, получаявторой клиент для перенаправления на сервер аутентификации, когда запрос еще не пришел с действительным токеном. Я привел приведенное выше в качестве примеров, но, похоже, все еще остается вопрос о том, имеет ли client2 AddCookie в качестве первого, или один или оба используют AddJwtBearer и т. Д. После нескольких дней смешивания различных комбинацийconfig Я чувствую необходимость спросить, какие важные части конфигурации приводят к тому, что клиент перенаправляет на страницу аутентификации / входа в IdentityServer, и как добиться того, чтобы несколько клиентов играли хорошо, разделяя Auth между собой.

Iмы нашли канонические примеры IdentityServer (https://github.com/IdentityServer/IdentityServer4/tree/aspnetcore2/samples/Quickstarts/), но они не дают хорошего освещения этого: как в приведенном выше примере (я взял фрагменты из QS # 3, только первый клиент перенаправляет, исекунда будет просто 401, если у нее еще нет действительного токена на предъявителя.

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