繁体   English   中英

如何从托管在单独服务器上的前端客户端使用 Windows Active Directory 对 .Net Core WebAPI 中的用户进行身份验证?

[英]How to authenticate a user in a .Net Core WebAPI using Windows Active Directory from a frontend client that is hosted on a separate server?

我使用以下命令生成了一个 WebAPI 服务:

dotnet new webapi --auth Windows

然后在我的启动文件中添加这个:

services.AddAuthentication(NegotiateDefaults.AuthenticationScheme).AddNegotiate();

现在,如果我尝试访问需要授权的 API 端点,我会收到一个警告框,如提示输入我的用户名和密码(仅一次)。 当我正确输入我的凭据时,我确实收到了 JSON 响应。

我的下一个计划是使用 React 创建一个单页应用程序,该应用程序将托管在不同的服务器上(可能在容器中)。 我希望在我的 API 中有一个/login端点,它将从前端客户端接收用户名和密码,并尝试使用这些凭据针对 Windows Active Directory 对用户进行身份验证。

我找不到任何线索我该怎么做。 我什至不知道这是否可能。

所以,我的问题是,这可能吗? 如果没有,考虑到我将有其他将使用此 API 的客户端(包括 android 应用程序),最佳替代方法是什么?

一些附加信息:* .Net Core 版本:3.1.0 * 不使用 IIS。 仅使用 Kestrel,但如果有任何帮助,也可以使用 IIS。

您的客户端应用程序和 web api 在不同的领域,我建议使用一个身份提供程序,例如,身份 server4/Azure AD,使身份提供程序集成 Windows 身份验证。这将使您的场景更容易实现不同类型的 Windows 身份验证和 SSO的应用程序。 否则您需要将 AD 的凭据从客户端发送到您的 web api,并联系 AD 验证您的 web api 中的凭据,这可能会导致安全问题。

身份服务器 4 中的 Windows 身份验证:

http://docs.identityserver.io/en/latest/topics/windows.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM