要将ASP.NET Core的Windows身份验证从UI网站传递到API,可以使用以下解决方法:
首先,在UI网站的Startup.cs文件中进行配置。
services.AddAuthentication(IISDefaults.AuthenticationScheme);
app.UseAuthentication();
接下来,在API的Startup.cs文件中进行配置。
services.AddAuthentication(IISDefaults.AuthenticationScheme);
app.UseAuthentication();
然后,为了在UI网站的API调用中传递Windows身份验证信息,可以使用HttpClient和HttpClientHandler。
var httpClient = new HttpClient(new HttpClientHandler { UseDefaultCredentials = true });
var response = await httpClient.GetAsync("https://your-api-url");
在这里,使用UseDefaultCredentials属性将当前用户的Windows身份验证凭据传递给API。
最后,在API的Controller中,可以使用[Authorize]属性来限制只有经过身份验证的用户才能访问该API:
[Authorize]
[ApiController]
public class YourController : ControllerBase
{
// API endpoints
}
这样,只有经过身份验证的用户才能成功访问该API的端点。
这是一个基本的解决方法,但是具体的实现可能会根据你的应用程序的需求而有所不同。请根据你的具体情况进行适当的调整和修改。