post_logout_redirect_uri ASP NET Core 2.2 AzureAD Razor Class Library RCL - PullRequest
0 голосов
/ 21 декабря 2018

Мы попробовали использовать образец https://github.com/Azure-Samples/active-directory-aspnetcore-webapp-openidconnect-v2/ Прошел образец и все работает.Мы не можем заставить его перенаправить после выхода из системы.Кроме того, похоже, что контроллера учетных записей нет, но он вызывается в _layout.chtml, это должно быть что-то новое.

Ответы [ 2 ]

0 голосов
/ 25 декабря 2018

Да, он перенаправляет на приложение - я бы хотел, чтобы он перенаправил на другую страницу.

Вы можете перенаправить пользователя наеще одна страница после выхода с помощью события OnSignedOutCallbackRedirect:

  1. In Startup.cs add using System.Threading.Tasks;
  2. Настройте новый URL-адрес перенаправления в событии OnSignedOutCallbackRedirect:

    services.Configure<OpenIdConnectOptions>(AzureADDefaults.OpenIdScheme, options =>
    {
        options.Authority = options.Authority + "/v2.0/";
    
        options.TokenValidationParameters.ValidateIssuer = false;
    
        options.Events.OnSignedOutCallbackRedirect = (context) =>
        {
    
            context.Response.Redirect("/Home/About");
            context.HandleResponse();
    
            return Task.CompletedTask;
        };
    });
    
0 голосов
/ 22 декабря 2018

Код контроллера аккаунта теперь встроен в фреймворк.Вы можете увидеть это в Microsoft.AspNetCore.Authentication.AzureAD.UI.AzureAD.Controllers.Internal (см. https://github.com/aspnet/AADIntegration/blob/0efa96de73e3235fbfc55cfe51d9547a693010cc/src/Microsoft.AspNetCore.Authentication.AzureAD.UI/Areas/AzureAD/Controllers/AccountController.cs):

namespace Microsoft.AspNetCore.Authentication.AzureAD.UI.AzureAD.Controllers.Internal
{
    [AllowAnonymous]
    [Area("AzureAD")]
    [NonController]
    [Route("[area]/[controller]/[action]")]
    internal class AccountController : Controller
    {
        public IOptionsMonitor<AzureADOptions> Options
        {
            get;
        }

        public AccountController(IOptionsMonitor<AzureADOptions> options)
        {
            this.Options = options;
        }

        [HttpGet("{scheme?}")]
        public IActionResult SignIn([FromRoute] string scheme)
        {
            scheme = scheme ?? AzureADDefaults.AuthenticationScheme;
            string str = base.Url.Content("~/");
            return this.Challenge(new AuthenticationProperties()
            {
                RedirectUri = str
            }, new String[] { scheme });
        }

        [HttpGet("{scheme?}")]
        public IActionResult SignOut([FromRoute] string scheme)
        {
            scheme = scheme ?? AzureADDefaults.AuthenticationScheme;
            AzureADOptions azureADOption = this.Options.Get(scheme);
            string str = base.Url.Page("/Account/SignedOut", null, null, base.Request.Scheme);
            return this.SignOut(new AuthenticationProperties()
            {
                RedirectUri = str
            }, new String[] { azureADOption.CookieSchemeName, azureADOption.OpenIdConnectSchemeName });
        }
    }
}

К сожалению, я не могу принудительно выполнить перенаправление после выхода из системы. Вместо этогоЯ вижу страницу с надписью «Вы успешно вышли из системы». Я хотел бы знать, как перенаправить пользователя обратно на страницу «Индекс».

...