2013-04-05 70 views
2

我想用一个令牌保护一个asp.net web api服务。现在我知道你通常会实现一个STS服务器,但我不想这样做,所以我的其他选项是什么。Asp.Net Web Api:使用令牌进行保护?

我在考虑离开控制器在客户端可以调用传入用户名和密码并且会返回一个令牌的情况下,不受保护,这个令牌随后将用于并且需要调用将被保护的服务上的其他控制器。

所以这带来了一些问题,使用DelegatingHandler vs AuthorizeAttribute。上述选项必须是一个authorizeAttribute,因为我需要让一个控制器不受保护,以便客户端进行身份验证。我没有看到我将如何使用委托处理程序,它将在技术上保护完整的服务,而不是让1个控制器不受保护。

另一种选择我看到的是提供其他服务来允许客户端进行身份验证,并得到一个令牌,然后我可以使用delegatinghandler锁定我的第二个服务..

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

因此,考虑这一点,是其他服务我最好的选择

任何帮助或反馈非常感激。

+0

嗯,我刚刚发现,这是一种通过Thinktecture IdentityServer将STS集成到我的应用程序的方法http://leastprivilege.com/2012/12/28/embedding-thinktecture-identityserver-in-your-own-applications/ – Martin 2013-04-05 14:09:36

+0

也许一个STS是一个posibility – Martin 2013-04-05 14:10:02

回答

2

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

https://github.com/pcibraro/hawknet

的方式我在一个项目中实现。客户端应用程序首先使用具有真实用户名/密码的基本身份验证(使用https)调用web api。 web api对用户进行身份验证,并将一组鹰证书返回给客户端(它相当于一个令牌)。其余的电话通过鹰协议使用谈判的鹰证。这非常简单,并且不涉及任何STS。

+0

太好了,我会去看看。感谢您的答复。 – Martin 2013-04-05 15:34:31