C# 如何通过访问数据库的RESTful Web API使用Windows身份验证?

C# 如何通过访问数据库的RESTful Web API使用Windows身份验证?,c#,asp.net,rest,authentication,asp.net-web-api,C#,Asp.net,Rest,Authentication,Asp.net Web Api,我需要设计和实施一个网站的内部网,将使用Windows身份验证对域。此网站需要提供存储在SQL Server数据库中的一些数据。数据库还使用Windows身份验证。web应用程序启动时需要做的第一件事是调用某个存储过程,该存储过程将返回用户所属的组以及所有后续存储过程调用所需的某种类型的会话令牌。为了分离关注点,我考虑编写一个RESTfulWebAPI,它将作为数据库的接口,并提供所有POCO类,这些类最终将成为MVCWeb应用程序中我所有视图的模型。RESTful API必须托管在服务中,当它

我需要设计和实施一个网站的内部网,将使用Windows身份验证对域。此网站需要提供存储在SQL Server数据库中的一些数据。数据库还使用Windows身份验证。web应用程序启动时需要做的第一件事是调用某个存储过程,该存储过程将返回用户所属的组以及所有后续存储过程调用所需的某种类型的会话令牌。为了分离关注点,我考虑编写一个RESTfulWebAPI,它将作为数据库的接口,并提供所有POCO类,这些类最终将成为MVCWeb应用程序中我所有视图的模型。RESTful API必须托管在服务中,当它调用DB存储过程时,它将使用运行它的帐户来执行此操作。因此,与在web应用程序中发起调用的当前用户相关的信息将丢失。有解决办法吗?还是我通过为数据访问层引入RESTful API过度扼杀了设计?我现在记不起来了,但我不相信有什么方法可以告诉RESTful API使用来自客户端的Windows凭据。对于web应用程序,Windows身份验证是个坏主意吗?在我的案例中,这是一个客户端要求,旨在通过删除通常用于应用程序身份验证的额外登录步骤来简化我需要开发的web门户的使用。

我提到了第一个登录SP,因为理论上,在第一次调用之后,当我拥有会话令牌时,我不再需要Windows身份验证。所有后续的DB调用都将具有令牌,DB将很高兴。所以我想说的是,我可以使用RESTful API而不需要第一次调用,这可能是从服务器到数据库的直接调用。但是这种方法有点违背了将数据层很好地封装在RESTful服务中的全部目的。必须有更好的解决方案。您可以在ApicController上获得经过身份验证的用户。对于不同的web api版本,实际的方法是不同的,但是谷歌应该很容易做到这一点。然后,存储过程可以接受用户标识符作为参数,并执行它需要执行的操作。