令牌端点无法解析控制器类型

时间:2014-07-29 02:33:48

标签: asp.net-mvc asp.net-web-api oauth-2.0 castle-windsor asp.net-identity

我一直在尝试按照如何配置Web Api以使用Asp.Net Identity 2.0的承载令牌的示例,我遇到了一个打嗝。在本教程http://www.asp.net/web-api/overview/security/individual-accounts-in-web-api之后,它指出我应该能够发布到http:// {servername} / Token以获取持有者令牌。当我这样做的时候,当Castle Windsor试图将Token解析为控制器时,我得到一个例外。

我要完成的目标是使用预设的帐户控制器登录,然后检索令牌。我正在尝试使用cookie和持票人令牌。

  1. 这是使用默认帐户控制器进行身份验证的正确方法吗?
  2. 如果这不是正确的方法,我是否应该更仔细地遵循教程并让用户登录api控制器?
  3. 我需要为IoC配置做些什么来确保我的终点解决?

1 个答案:

答案 0 :(得分:2)

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

您应该创建一个负责验证OAuth Berarer令牌的MessageHandler:该消息处理程序可能(应该)由您的IoC解决,而不是在WebApi管道中进行配置。

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

DotNetOpenOAuth是一个很好的起点:看看mvc5 sample/message handler implementation