ENTRA Внешний идентификатор, не перенаправляющийся на страницу входа после успешного входа в системуC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 ENTRA Внешний идентификатор, не перенаправляющийся на страницу входа после успешного входа в систему

Сообщение Anonymous »

Когда я регистрируюсь через внешний идентификатор, используя приведенный ниже код, он успешно зарегистрирует меня, но не перенаправляет меня на странице входа в систему. Это застряло на странице после входа; Снимок экрана прикреплен ниже. Я попробовал ответы из того, как перенаправить на определенную веб -страницу после выхода из Entra ID, но это не решило мою проблему. < /P>

Код: Выделить всё

Sign out
< /code>
Вот мой код файла программы.using Microsoft.AspNetCore.Authentication.OpenIdConnect;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc.Authorization;
using Microsoft.EntityFrameworkCore;
using Microsoft.Identity.Web;
using Microsoft.Identity.Web.UI;
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using TaskManagement.Context;

var builder = WebApplication.CreateBuilder(args);

JwtSecurityTokenHandler.DefaultMapInboundClaims = false;

builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApp(builder.Configuration);

builder.Services.Configure(OpenIdConnectDefaults.AuthenticationScheme, options =>
{
options.SaveTokens = true;

options.Events.OnRedirectToIdentityProviderForSignOut += async context =>
{
await NotifyToExternalAPIs(context.HttpContext);
};
// Post login call to extend claims and use later
options.Events.OnTokenValidated += async context =>
{
// Extend claims or call service which responsible to extend claims
// This only calls when user is login and add claims

await ExtenClaimsAsync(context);
};
});
builder.Services.AddDbContext(options =>
{
options.UseInMemoryDatabase("TaskManagements");
});

builder.Services.AddControllersWithViews(options =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
options.Filters.Add(new AuthorizeFilter(policy));
}).AddMicrosoftIdentityUI();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
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.UseRouting();

app.UseAuthorization();
app.UseAuthentication();

app.MapStaticAssets();

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

app.Run();

async Task NotifyToExternalAPIs(HttpContext context)
{
// Actual async work here
Console.WriteLine("Performing pre-logout actions");
await Task.Delay(1);
}

async Task ExtenClaimsAsync(TokenValidatedContext context)
{

// we can add db logic here or call db service to fetch data and then
// can extend claims as i did below.

// You can now use todoService
// Actual async work here
if (context.Principal.Identity is ClaimsIdentity identity && identity.IsAuthenticated)
{
// Add or modify claims here
if (!identity.HasClaim(c => c.Type == "CustomClaim"))
{
identity.AddClaim(new Claim("CustomClaim", "new custom claim"));
}
}
await Task.Delay(1);
}
< /code>
Я добавил AccountController, затем метод подписания, как указано здесь. < /p>
public class AccountController : Controller
{
public new IActionResult SignOut()
{
base.SignOut();

return RedirectToAction("Index", "Home");
}
}
После входа я застрял на этой странице, которую она должна перенаправить на страницу входа в систему.>

Подробнее здесь: https://stackoverflow.com/questions/797 ... lly-logout
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»