如何在客户端授权应用程序、okta、oidc .net 中计算端点

时间:2021-06-02 13:42:26

标签: 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?}");
            });
        }

在自述文件中,它指定为了使其工作,我必须更新 okta 上的端点,我已经完成了,将它们设置为 .../authorization-code/callback for login 和 . ./signout/callback 用于注销。

于是我看了一下code,authorization-code不是controller,要么是signout。

这是我的家庭控制器:

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 个答案:

答案 0 :(得分:0)

我终于找到了!!!

问题是它是默认设置的,在下载的nuget包中,有一个类可以按照截图设置默认值:

Okta defaults

然后要改变这个,我只需要改变这个的值,或者设置一个不同的值。感谢大家阅读,希望能帮到别人

相关问题