我想使用 token 保护 asp.net Web api 服务。现在我知道您通常会实现 STS 服务器,但我不想这样做,那么我的其他选择是什么。
我正在考虑让 Controller 不 protected ,客户端可以调用传递用户名和密码,这将返回一个 token ,然后该 token 将被使用并且需要调用 protected 服务上的其他 Controller 。
因此,使用 DelegatingHandler 与 AuthorizeAttribute 会带来一些问题。上面的选项必须是一个authorizeAttribute,因为我需要让 Controller 不 protected ,以便客户端调用身份验证。我不明白如何使用委派处理程序来从技术上保护整个服务,而不是让 1 个 Controller 不 protected 。
我看到的另一个选项是提供另一个服务来允许客户端进行身份验证并获取 token ,然后我可以使用委托(delegate)处理程序锁定我的第二个服务。
让我们想象一下,我沿着 STS 路由,我仍然需要提供某种方式让客户端联系“OPEN”服务/ Controller ,而后者又会调用 STS 来获取 token 。
考虑到这一点,其他服务是我的最佳选择吗?
最佳答案
我过去使用 Hawk ( https://github.com/hueniverse/hawk ) 实现了类似的场景。我在 GitHub 上有一个 .NET 中 Hawk 的实现,它使用消息处理程序与 Web API 集成。
https://github.com/pcibraro/hawknet
按照我在项目中实现的方式。客户端应用程序首先使用真实用户名/密码(使用 https)进行基本身份验证来调用 Web api。 Web API 对用户进行身份验证,并将一组 hawk 凭据返回给客户端(相当于 token )。其余的调用由 hawk 使用协商的 hawk 凭证进行保护。这个很简单,不涉及任何STS。
关于asp.net-web-api - Asp.Net Web API : Protecting with a token?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15835666/