Конфигурации OpenIdConnect с помощью OKTA - PullRequest
0 голосов
/ 30 января 2020

У меня есть веб-приложение, которое использует OpenIdConnectAuthenntication. Есть Карты для входа и выхода из системы. Пример для входа в систему показан ниже.

        app.Map("/login.aspx", map =>
        {
            map.Run(ctx =>
            {
                if (ctx.Authentication.User == null || !ctx.Authentication.User.Identity.IsAuthenticated)
                {
                    // trigger authentication
                    ctx.Response.StatusCode = 401;
                }
                else
                {
                    ctx.Response.Redirect("/");
                }

                return Task.FromResult(0);
            });
        });

Я пытаюсь найти способ полностью выйти из опции openidconnect и перенаправить пользователя в совершенно новое веб-приложение, когда оно получает строку statuscode = 401.

Здесь цель состоит в том, чтобы у меня было два приложения A и B. Оба используют аутентификацию OKTA. По какой-то причине мне нужно, чтобы пользователи, приходящие в приложение A, были перенаправлены прямо в B и заставили их войти в систему. После аутентификации из B они будут направлены в A. Мне нужно, чтобы B был входным шлюзом для приложения A.

1 Ответ

1 голос
/ 30 января 2020

В реализации OpenID Owin есть событие AuthenticationFailed (называемое Уведомления)

В примере

app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
      // config...
      ClientId = //...,
      ClientSecret = // ...,
      // etc

      // events
      Notifications = new OpenIdConnectAuthenticationNotifications
      {
      // AuthenticationFailed
            AuthenticationFailed = context =>
            {
                  context.HandleResponse();

                  // Handle redirect

                  //context.Response.Write(context.Exception.Message);
                  //_logger.Log(context.Exception.Message);
                  return Task.FromResult(0);
            },
            // ...
      }
}

Более полный пример можно найти здесь https://github.com/EricHerlitz/Identityserver4-Episerver-Demo/blob/master/IdEpi/IdEpi.WebEpiserver/Business/Owin/Startup.cs

...