Pergunta

Eu estou procurando alguma orientação sobre a melhor maneira de se autenticar ao meu WebService. Agora, eu tenho um WebService padrão em .NET 3.5, e um site MVC que fica em cima deste WebService.

As utilizações do website MVC OpenID para autenticar usuários, e durante a fase de desenvolvimento, nós simplesmente foram passando identificador OpenID Reivindicado do usuário para o WebService para autenticar. Obviamente, isso não é o que estará lançando para o cliente quando vamos ao vivo.

Assim, a minha pergunta é esta:? Qual é a melhor maneira de se autenticar no WebService

Alguns dos API é que eu joguei ao redor com usar a autenticação Tokens. Outra idéia que tínhamos era para, no momento da conexão à WebService, passe o cliente uma chave de criptografia que eles poderiam usar para todas as transferências.

Estou pensando alto aqui, e novamente, qualquer ajuda é muito apreciada! Obrigado!

...

UPDATE: Agora eu criei uma SoapAuthenticationHeader costume que tem uma propriedade OpenIdURL. Isto é usado em todas as chamadas de serviço para autenticar o usuário. O problema é duas vezes:

  1. Se um know hackers é OpenIdURL de um usuário, eles podem facilmente ter acesso ao WebService.
  2. O OpenIdURL está atualmente aprovado em texto simples.

Então, eu poderia passar uma chave de criptografia para o cliente no momento da conexão à WebService, e ter o cliente criptografar o OpenIdURL no cabeçalho SoapAuthentication. Mas eu não tenho certeza sobre a melhor forma de ir sobre isso ...

Foi útil?

Solução

Você pode querer dar uma olhada em OAuth:

http://oauth.net/

(Use http://oauth.net/code/ para codificação.)

Como é voltado especificamente para este cenário (Open ID não é, realmente).

Há uma outra pergunta sobre SA, que pergunta sobre a melhor maneira de garantir um serviço web, e Open ID e OAuth são ambos discutidos:

Autenticação Serviço Web usando OpenID

Outras dicas

serviços web ASMX (que a Microsoft agora considera ser "legado") não têm capacidade de usar OpenID para autenticação. Eles só podem usar o IIS fornece a eles. Você poderia adicionar um SoapExtension que iria fazer a autenticação OpenID para eles, mas eu não iria passar o tempo.

Eu não sei o suficiente sobre OpenID para ter certeza, mas eu suspeito que pode integrar com o WCF através da segurança federado. Eu tenho certeza que alguém vai responder com detalhes sobre isso.

Isto não é realmente uma resposta, mas não posso deixar um comentário ...

Você diz "Eu tenho um WebService padrão em .NET 3.5, e um site MVC que fica em cima deste WebService".

Eu poderia estar longe de base aqui, mas a linguagem implica que estes dois se sentam no mesmo servidor. Se assim for, por que você não pode simplesmente compartilhar o banco de dados usuários eo token biscoito?

James

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