我一直在尝试按照如何配置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和持票人令牌。
答案 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。