我有一个 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 应用程序托管于ASP.NET Core 服务器http://localhost:3000并用于oidc-client与 ASP.NET Core 服务器进行交互。前端代码似乎在传递正确的返回 url 时正确请求登录:
ASP.NET Core 身份验证页面成功显示:
但是如果你发布一个新的注册,ASP.NET Core 会重定向到它的根目录而不是http://localhost:3000:
有没有我遗漏的东西,或者内置的 ASP.NET 标识是否仅在客户端托管在同一来源时才有效?
任何帮助表示赞赏。


