#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 есть класс для настройки значений по умолчанию в соответствии со снимком экрана:
затем, чтобы изменить это, мне нужно только изменить значения этого или установить другие значения. Спасибо всем за чтение, я надеюсь, что это может помочь кому-то еще