通过 REST API 传递“Windows 身份验证”?
Posted
技术标签:
【中文标题】通过 REST API 传递“Windows 身份验证”?【英文标题】:Passing 'Windows Authentication' through REST API? 【发布时间】:2018-11-15 18:50:43 【问题描述】:我有权访问仅允许“Windows 身份验证”的 SQL Server 数据库系统 - 即使用您的 Windows 登录凭据访问数据。 (不使用用户名密码)。它还控制数据库权限。
我想为不熟悉 SQL 的用户构建一个 REST API,以便从该服务器获取数据。问题是,我需要使用用户的凭据来执行命令,而不是托管 REST API 的机器。我如何设计允许用户传递他们的登录名并让 API 使用该特定登录名向服务器发送查询的系统?
我找到了来自 Microsoft 的参考资料,不确定是否相关。
https://docs.microsoft.com/en-us/sql/relational-databases/security/choose-an-authentication-mode?view=sql-server-2017
【问题讨论】:
允许这样做的机制称为 Kerberos 委托。不,SQL Server 在这种情况下只是一个数据源,您不必对其配置进行任何更改(除了授予相应的 AD 用户权限之外)。 嗨@RogerWolf。谢谢你的建议。您能否给我一个简短的框架/指南,我该如何实现这一目标? 【参考方案1】:您所追求的是 Kerberos 委托,有时也称为“双跳”。只要您坚持使用 Microsoft 堆栈,就不必在代码中显式实现它;而是配置问题。
此post 详细描述了该功能所需的设置。您还可以在this help article 中找到一些基本要求。除此之外的任何东西,只需谷歌它。
【讨论】:
我在 Windows 机器上使用 Python (django) + SQL Server。您认为这很容易还是需要一些仔细的配置?谢谢。 @MTANG,您可能需要在代码中做/添加一些额外的事情,但不确定哪些 - 我不是真正的网络开发人员。以上是关于通过 REST API 传递“Windows 身份验证”?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Windows 身份验证凭据从客户端传递到 Web API 服务
通过 WCF 服务传递 NetworkCredential 以与 EWS API 一起使用
我应该通过 HTTP 标头或将正文作为 JSON 传递到 REST Api 吗?