Usando OpenID com um serviço Web: A melhor maneira para autenticar?
-
11-09-2019 - |
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:
- Se um know hackers é OpenIdURL de um usuário, eles podem facilmente ter acesso ao WebService.
- 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 ...
Solução
Você pode querer dar uma olhada em OAuth:
(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:
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