我想用令牌保护asp.net web api服务。现在我知道你通常会实现一个STS服务器,但我不想这样做,所以我的其他选择是什么。
我在考虑让控制器不受保护,客户端可以调用它来传递用户名和密码,然后返回一个令牌,这个令牌随后将用于并且需要调用将受保护的服务上的其他控制器。 / p>
因此,这会使用DelegatingHandler与AuthorizeAttribute提出一些问题。上面的选项必须是authorizeAttribute,因为我需要保护控制器不受保护,以便客户端调用身份验证。我不知道如何使用委托处理程序,从技术上保护整个服务,而不是让1个控制器不受保护。
我看到的另一个选项是提供另一个服务,允许客户端进行身份验证并获取令牌,然后我可以使用委托处理程序锁定我的第二个服务..
让我们想象一下,我走下STS路由,我仍然需要提供某种方式,客户端可以联系“OPEN”服务/控制器,然后控制STS来获取令牌。
所以考虑到这一点,另一种服务是我最好的选择
真正感谢任何帮助或反馈。
答案 0 :(得分:2)
我过去使用Hawk(https://github.com/hueniverse/hawk)实现了类似的场景。我在GitHub中实现了Hawk in .NET,它使用消息处理程序与Web API集成。
https://github.com/pcibraro/hawknet
我在项目中实施的方式。客户端应用程序首先使用基本身份验证和真实用户名/密码(使用https)调用web api。 web api对用户进行身份验证,并将一组hawk凭据返回给客户端(它将等同于令牌)。其余的电话使用协商的鹰派证书以鹰派保护。这非常简单,不涉及任何STS。