Pergunta

Temos um serviço web que será hospedagem em um servidor web público e será contactado por serviços web hospedados em servidores web dentro das paredes de um hospital. Temos escrito ambas as peças do software por isso temos o controle completo sobre o que é implementado.

Nós gostaríamos de proteger as comunicações entre os dois servidores web. Atualmente, a única coisa que temos em lugar é https no servidor web público e um guid para identificar os clientes.

Existem tipos de nível de rede de autorização podemos apoiar, mas eu não gosto de depender de estes desde que nem todos os nossos clientes (hospitais) será capaz de fazer a mesma coisa. Alguns não têm a capacidade de nos dar um IP estático e alguns não será capaz de fazer uma VPN, então nós não podemos depender apenas desses métodos.

Quais as técnicas que você está usando ou que você recomendaria para autorizar as comunicações com os seus serviços web? A nossa principal preocupação é manter as pessoas de obter uma ID hospitais (atualmente apenas um GUID) e obtenção de dados de nossa web serviço que se pretende para o hospital.

Vamos empregar outras medidas de segurança de nível de rede para limitar o acesso do público a nosso sistema, mas eu sinto uma solução de software é necessário também.

O sistema ainda não está em produção, mas está se aproximando da conclusão do desenvolvimento. Sua desenvolvido em C # no .NET 3.5

FWIW Eu estava pensando em algum tipo de autorização baseada em token porque eu sei que um empregador anterior algo usado ao longo destas linhas. No entanto, eu não sei especificamente o que procurar ou qualquer outra informação sobre o tema.

Editar: Enquanto eu gostaria de usar WCF, atualmente ninguém na equipe (inclusive eu) tem alguma experiência de usá-lo e já desenvolveu os serviços da web, juntamente com o código que interage com eles. Todas as referências da web onde adicionados utilizando o método .NET 2.0 (a partir de vs.net08, orientadas para NET 3.5) e nós preferimos não refazer completamente que. Eu não vou dizer que WCF não é uma opção, mas eu não acho que vai com essa opção de bom grado.

Foi útil?

Solução

Você poderia usar algo como autenticação básica sobre https para fornecer a senha nome de usuário desafiando? Eu acredito que a Microsoft SOAP suporta bastante bem. Você praticamente só uso IIS para configurar básica auth (deve usar SSL), e em sua C # apenas passar ICredentials ao seu proxy.

De googling, parece que outras línguas suportar autenticação básica sobre o SOAP também.

Outras dicas

Certificados de cliente pode ser usado para fornecer credenciais de um chamador para seus webservices; não é tão difícil de tomar o cert passado e fazer qualquer avaliação adicional para ditar o que cert tem visibilidade sobre.

Você provavelmente vai querer usar algo como OAuth:

http://oauth.net/

Você pode usá-lo com o WCF para fornecer um ponto final.

A partir daí, você gostaria de mapear as reivindicações para um ID interno para os clientes (você teria que determinar o que esse mapeamento é).

Desta forma, você não tem que confiar na emissão nada a ninguém, tudo que você tem a fazer é criar o mapeamento com base nas reivindicações enviadas para você.

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