как определить конечные точки в приложении авторизации клиента, okta, oidc .net

#openid-connect #endpoint #okta

Вопрос:

После игры с аутентификацией oidc, чтобы лучше ее понять. Я знаю, где я терплю неудачу, я неправильно настраиваю конечные точки. Поэтому я скачал немного кода и немного поиграл с ним.

Что я хочу сделать, так это изменить перенаправление для входа и выхода из системы. Этот код предназначен для того, чтобы я мог подключиться через внешний сервер (okta): при запуске:

 public void ConfigureServices(IServiceCollection services)
        {
            services.ConfigureApplicationCookie(options =>
            {
                options.Cookie.HttpOnly = true;
                options.Cookie.SecurePolicy = Microsoft.AspNetCore.Http.CookieSecurePolicy.Always;
            })
            .AddAuthentication(options =>
            {
                options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
                options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
            })
           .AddCookie()
           .AddOktaMvc(new OktaMvcOptions
           {
                // Replace these values with your Okta configuration
               OktaDomain = Configuration.GetValue<string>("Okta:OktaDomain"),
               AuthorizationServerId = Configuration.GetValue<string>("Okta:AuthorizationServerId"),
               ClientId = Configuration.GetValue<string>("Okta:ClientId"),
               ClientSecret = Configuration.GetValue<string>("Okta:ClientSecret"),
               Scope = new List<string> { "openid", "profile", "email" },
           });

            services.AddControllersWithViews();
        }


public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
                // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
                app.UseHsts();
            }
            app.UseHttpsRedirection();
            app.UseStaticFiles();

            app.UseRouting();

            app.UseAuthentication();

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller=Home}/{action=Index}/{id?}");
            });
        }
 

В файлах readme указано, что для того, чтобы это работало, я должен обновить конечные точки в okta, что я и сделал, настроив их на …/код авторизации/обратный вызов для входа в систему и ../выход/обратный вызов для выхода из системы.

Поэтому я посмотрел на код, и авторизация-код не контроллера, а либо выхода.

Это мой домашний контроллер:

 public class AccountController : Controller
    {
        public IActionResult SignIn()
        {
            if (!HttpContext.User.Identity.IsAuthenticated)
            {
                return Challenge(OktaDefaults.MvcAuthenticationScheme);
            }

            return RedirectToAction("Index", "Home");
        }

        [HttpPost]
        public IActionResult SignOut()
        {
            return new SignOutResult(
                new[]
                {
                     OktaDefaults.MvcAuthenticationScheme,
                     CookieAuthenticationDefaults.AuthenticationScheme,
                },
                new AuthenticationProperties { RedirectUri = "/Home/" });
        }
 

Итак, кто-нибудь может объяснить мне конечные точки с моей стороны, пожалуйста? Я не вижу обратного вызова или кода авторизации, но я вижу выход, но не с обратным вызовом?

Ответ №1:

Наконец-то я нашел его!!!

Проблема заключалась в том, что он установлен по умолчанию, в загружаемом пакете nuget есть класс для настройки значений по умолчанию в соответствии со снимком экрана:

Значения по умолчанию Okta

затем, чтобы изменить это, мне нужно только изменить значения этого или установить другие значения. Спасибо всем за чтение, я надеюсь, что это может помочь кому-то еще