我一直在尝试遵循如何配置Web API以使用带有ASP.NET Identity 2.0的承载令牌的示例,并且我遇到了打嗝。以下教程 http://www.asp。 net / web-api / overview / security / honivers-accounts-in-web-api 它指出我应该能够发布到http:// {servername} /令牌以获得持票人令牌。当我这样做时,我会在尝试将令牌作为控制器分辨时获得城堡温莎的例外。

我尝试完成的内容是使用Canned帐户控制器登录,然后检索令牌。我正在尝试使用两个cookie和持票人令牌。

  1. 是使用默认帐户控制器进行身份验证的正确方法?
  2. 如果这不是正确的方法,我应该更接近地遵循教程,并将用户登录到API控制器?
  3. 我需要为我的IOC配置做些什么来确保我的终点解析?
有帮助吗?

解决方案

WebAPI的授权应在MessageHandler中处理,而不是控制器级别。

您应该创建一个响应的MessageHandler以验证OAuth Berarer令牌:该消息处理程序可以(应)由您的IOC解决,而不是在WebAPI管道中配置。

public static void RegisterGlobalHandlers(HttpConfiguration config, IWindsorContainer container)
{
    var authorizationMessageHandler = container.Resolve<AuthorizationMessageHandler>();
    config.MessageHandlers.Add(authorizationMessageHandler);
}
.

dotnetopenoauth是一个很棒的位置:看看 MVC5样本/消息处理程序实现

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top