gpt4 book ai didi

c# - 如何在没有 IIS/WCF 的情况下通过 REST API 调用对 Windows 用户进行身份验证?

转载 作者:可可西里 更新时间:2023-11-01 09:32:56 24 4
gpt4 key购买 nike

在为我的公司开发一个内部部署的、仅限内联网的 REST API 服务器时,我设法完全混淆了身份验证问题。

:

  • 用 C# 实现的 REST 网络服务器,使用自托管 Nancy,作为 Windows 服务运行
  • 一个可以查询服务器的C#客户端,由我们公司的用户运行

没有有:

  • 对我们的 Active Directory 和/或域 Controller 的任何形式的访问权限,除了在 Windows 下运行的任何应用程序通常具有的权限
  • 影响 AD 设置或配置的任何方式
  • Active Directory Federation Services (ADFS)(我认为。我们使用 Windows 7 和 Office 2010,只是为了了解软件领域的现状)
  • Azure 事件目录 (AAD)

想要:

  • 服务器验证请求是由我们公司的用户发出的一种方法
    • 如果客户端必须在每个请求中发送一些额外的身份验证数据,那完全没问题,只要它包含任何形式的用户密码

想要:

  • 必须设置任何额外的软件(我的服务器必须是最低配置和维护,以便普通用户可以安装和运行它)
  • 安装/配置/维护 IIS 服务器(见上文)
  • 使用 ASP.net(对我的需求来说太大了,另请参阅上述要点)
  • 以任何方式处理用户密码(公司政策和常识)
  • 模拟用户(我只需要验证请求的真实性)
  • 实现我自己的用户帐户数据库。我们已经有六个服务需要自己的用户名/密码组合,我不想再添加一个

我已阅读说明如何 use Windows authentication with IIS 的文章, 或者如何使用 Azure Active Directory (AAD) with Nancy .这里的其他问题已经告诉我如何authenticate username / password combinations against the Active Directory .但是,这些都不能满足我的所有要求或有我无法满足的自己的要求(如 AAD/ADFS)。

似乎Kerberos/SSPI可能是我想要的,但使用 C# 似乎非常复杂且非常复杂。有可能我将不得不走这条路,但我真的可以从一些最小的工作示例中受益(接受的答案提供了一个 C# 实现/包装器,包括一个示例项目,但我似乎无法做出头脑或它的尾部)。

也许我很天真,但我想象的解决方案是以下几行:

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

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

最佳答案

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

关于c# - 如何在没有 IIS/WCF 的情况下通过 REST API 调用对 Windows 用户进行身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40421570/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com