Pergunta

Tenho tentado seguir exemplos de como configurar a API da Web para usar tokens de portador com o Asp.Net Identity 2.0 e tive um soluço.Seguindo este tutorial http://www.asp.net/web-api/overview/security/individual-accounts-in-web-api afirma que devo poder postar em http://{servername}/Token para obter um token de portador.quando faço isso, recebo uma exceção para Castle Windsor quando ele tenta resolver o Token como controlador.

O que estou tentando realizar de maneira geral é fazer login usando o controlador de conta predefinido e, em seguida, recuperar um token.Estou tentando usar cookies e tokens ao portador.

  1. esta é a abordagem correta para usar o controlador de conta padrão para autenticação?
  2. se esta não for a abordagem correta, devo seguir o tutorial mais de perto e fazer com que o usuário faça login em um controlador de API?
  3. o que preciso fazer na configuração do IoC para garantir que meus pontos finais sejam resolvidos?
Foi útil?

Solução

A autorização no WebApi deve ser tratada em um MessageHandler, não no nível do controlador.

Você deve criar um MessageHandler responsável por verificar um token OAuth Berarer:esse manipulador de mensagens pode (deve) ser resolvido pelo seu IoC e então configurado no pipeline WebApi.

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

DotNetOpenOAuth é um ótimo lugar para começar:dê uma olhada no implementação do manipulador de amostra/mensagem mvc5.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top