如何在没有 IIS/WCF 的情况下通过 REST API 调用验证 windows 用户?

How can I authenticate a windows user over a REST API call without IIS/WCF?

在为我的公司开发内部部署的仅限内联网的 REST API 服务器时,我在身份验证问题上完全搞糊涂了。

:

没有有:

想要:

想要:

我已阅读介绍如何 use Windows authentication with IIS, or how to use Azure Active Directory (AAD) with Nancy. Other questions here have already informed me how to authenticate username / password combinations against the Active Directory 的文章。但是,其中none满足了我的所有要求,或者有自己的要求(如AAD/ADFS)我无法满足。

似乎 Kerberos/SSPI 可能是我想要的,但使用 C# 似乎非常复杂且非常复杂。我可能不得不走这条路,但我真的可以从一些最小的工作示例中受益(接受的答案提供了一个 C# implementation/wrapper,包括一个示例项目,但我似乎无法它的正面或反面)。

也许我很天真,但我认为解决方案是以下几行:

  1. 客户端使用当前登录用户的凭据查询服务(AD、域控制器...?)以获取某种形式的身份验证令牌
  2. 然后将令牌与用户名一起发送到服务器,作为需要进行身份验证的请求的一部分
  3. 服务器提取令牌,并查询同一服务(AD、域控制器...)令牌是否真实、有效且属于相关用户

这可能吗?理想情况下,我可以使用某种现成的库插入我的项目(我知道,我正在达到)?

您可以使用无状态身份验证和 Jwt 来做到这一点。将用户名和密码发送到“/auth”(示例),“/auth”将搜索 AD(示例)并验证用户是否存在,然后在加载时使用用户名创建 Jwt 令牌。当您发出请求时,您只会发送一个 Jwt 令牌,Nancy 会验证该令牌。