2

我想用令牌保护一个 asp.net web api 服务。现在我知道您通常会实现 STS 服务器,但我不想这样做,所以我的其他选择是什么。

我正在考虑让控制器不受保护,客户端可以调用传入用户名和密码,这将返回一个令牌,然后该令牌将用于并且需要调用服务上的其他控制器,这些控制器将受到保护。

所以这带来了一些问题,使用 DelegatingHandler 与 AuthorizeAttribute。上面的选项必须是一个 authorizeAttribute 因为我需要让控制器不受保护,以便客户端调用身份验证。我不知道如何使用委托处理程序从技术上保护整个服务,而不是让 1 个控制器不受保护。

我看到的另一个选项是提供另一个服务以允许客户端进行身份验证并获取令牌,然后我可以使用委托处理程序锁定我的第二个服务。

让我们想象一下,我走的是 STS 路由,我仍然需要提供某种方式客户端可以联系“OPEN”服务/控制器,该服务/控制器反过来会调用 STS 以获取令牌。

所以考虑到这一点,另一项服务是我最好的选择吗?

4

1 回答 1

2

我过去使用 Hawk ( https://github.com/hueniverse/hawk )实现了类似的场景。我在 .NET 中为 Hawk 的 GitHub 实现了一个使用消息处理程序与 Web API 集成的实现。

https://github.com/pcibraro/hawknet

以我在项目中实施的方式。客户端应用程序首先使用带有真实用户名/密码的基本身份验证(使用 https)调用 web api。Web api 对用户进行身份验证,并将一组 hawk 凭据返回给客户端(它相当于一个令牌)。其余的调用由使用协商的 hawk 凭证的 hawk 保护。这很简单,不涉及任何 STS。

于 2013-04-05T14:50:01.007 回答