У меня есть серверная часть 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-адрес возврата:
Страницы аутентификации ASP.NET Core успешно отображаются:
Но если вы публикуете новую регистрацию, ASP.NET Core перенаправляет в свой корень, а не http://localhost:3000
:
Есть ли что-то, что я пропустил или встроенная идентификация ASP.NET работает, только если клиент размещен в том же источнике?
Любая помощь приветствуется.