Реализация потока авторизации Cook ie в IdentityServer4 - PullRequest
0 голосов
/ 03 мая 2020

Я работаю над инфраструктурным проектом и думаю, что мог бы использовать некоторые рекомендации; Я полил документы и, кажется, немного потерян. Мой проект настроен следующим образом.

У меня есть сервер (API), который подключен к базе данных MySQL через EntityFramework. На этом сервере есть экземпляр IdentityServer4, а также ряд потребляемых конечных точек. Подключение к этому серверу будет настольным приложением и несколькими мобильными приложениями. Эти приложения будут подключаться к серверу и авторизоваться через грант ResourceOwnerPassword. (Эта часть, кажется, работает.)

Часть, в которой я запутался: у меня также есть веб-сервер MVC (Web), который должен иметь возможность доступа к тем же конечным точкам через AJAX / CORS. Этот сервер представляет собой отдельную сборку и не имеет пакета IdentityServer4. Я хотел бы иметь специальную веб-страницу (/ логин), которая должна позволять пользователю вводить имя пользователя / пароль / флажок Запомнить меня. Затем форма должна передать клиенту модель с помощью запроса HttpPost, который затем отправит данные в API, который должен пройти аутентификацию в базе данных, и в случае успеха выдаст авторизационный код ie (сеанс / постоянный на основе окна RememberMe) какую сеть затем можно использовать для авторизации пользователя и получения заявок от. Повар ie также будет использоваться для доступа к конечным точкам в API, которые требуют аутентификации.

В настоящее время я могу использовать Postman для отправки запроса в API, который возвращает два файла cookie: idsrv.session и .AspNetCore.Identity.Application.

Есть ли какие-либо проблемы с этой инфраструктурой, поскольку я предвидели это? Как мне распознать и потреблять повара ie, используя Asp. NET Идентичность (т. Е. Чтобы я мог получить доступ к User.Context со страницы Razor)

Следующее из моего файла конфигурации из Web:

        public void ConfigureServices(IServiceCollection services) {
            services.Configure<CookiePolicyOptions>(options => {
                // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                options.CheckConsentNeeded = context => false;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });


            services.AddMvc()
                .SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

            JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();

            services.AddAuthentication(o => {
                    o.DefaultScheme = "Cookies";
                    o.DefaultChallengeScheme = "oidc";
                })
                .AddCookie("Cookies")
                .AddOpenIdConnect("oidc", o => {
                    o.Authority = Configuration["Authority"];
                    o.RequireHttpsMetadata = false;

                    o.ClientId = Configuration["ClientId"];
                    o.ClientSecret = Configuration["ClientSecret"];
                    o.ResponseType = "code";
                    o.SaveTokens = true;
                });
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env) {
            if(env.IsDevelopment()) {
                app.UseDeveloperExceptionPage();
            }
            else {
                app.UseExceptionHandler("/Home/Error");
                app.UseHsts();
            }

            app.UseHttpsRedirection();
            app.UseStaticFiles();
            app.UseAuthentication();

            app.UseMvc(routes => {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });
        }

1 Ответ

0 голосов
/ 03 мая 2020

В основном ваше приложение будет состоять из трех частей.

Identity Server 4

API

Клиенты

У вас будет только один экземпляр Identity Sever 4 запуск, который может авторизовать несколько API и нескольких клиентов, таких как MVC, SPA с различными потоками.

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