Регистрация сервера идентификации не перенаправляется обратно в приложение React - PullRequest
2 голосов
/ 22 мая 2019

У меня есть серверная часть ASP.NET Core с внешним интерфейсом React, расположенная в разных источниках.

Базовая часть ядра ASP.NET настроена для использования встроенного сервера идентификации:

// Startup
public void ConfigureServices(IServiceCollection services)
{
  ...
  services.AddIdentityServer()
    .AddApiAuthorization<ApplicationUser, ApplicationDbContext>();
  ...
}

Я добавил OidcConfigurationController, который ожидает сервер идентификации:

public class OidcConfigurationController : Controller
{
    public OidcConfigurationController(IClientRequestParametersProvider clientRequestParametersProvider)
    {
        ClientRequestParametersProvider = clientRequestParametersProvider;
    }

    public IClientRequestParametersProvider ClientRequestParametersProvider { get; }

    [HttpGet("_configuration/{clientId}")]
    public IActionResult GetClientRequestParameters([FromRoute]string clientId)
    {
        var parameters = ClientRequestParametersProvider.GetClientParameters(HttpContext, clientId);
        return Ok(parameters);
    }
}

Я также добавил следующие параметры в appsettings.json, которые читает сервер идентификации:

...
"IdentityServer": {
  "Clients": {
    "WebApplication1": {
      "Profile": "SPA",
      "RedirectUri": "http://localhost:3000/authentication/login-callback",
      "LogoutUri": "http://localhost:3000/authentication/logout-callback"
    }
  }
},
...

Приложение React размещено на http://localhost:3000 и использует oidc-client для взаимодействия с сервером ASP.NET Core. Код внешнего интерфейса, по-видимому, правильно запрашивает знак, передавая правильный URL-адрес возврата:

enter image description here

Страницы аутентификации ASP.NET Core успешно отображаются:

enter image description here

Но если вы публикуете новую регистрацию, ASP.NET Core перенаправляет в свой корень, а не http://localhost:3000:

enter image description here

Есть ли что-то, что я пропустил или встроенная идентификация ASP.NET работает, только если клиент размещен в том же источнике?

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 22 мая 2019

Вы просто пропускаете свой обратный URL во время поездки туда и обратно до Account/Register. Это не имеет ничего общего с происхождением. Проверьте с чистым входом - это должно работать из коробки.

Регистрация нового аккаунта - это не то, за что отвечает Identityserver. Вы должны справиться с этим самостоятельно. Вы должны проходить через ваш обратный URL каждый раз, когда вы перенаправляете, начиная с кнопки «Зарегистрироваться» в форме входа и заканчивая вашим действием [HttpPost]Register. Скорее всего, вы хотели бы сохранить этот URL, даже если пользователь отменяет регистрацию посередине и решает войти с существующей учетной записью.

См. этот вопрос / ответ для справки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...