Pregunta

Estoy dando vueltas en círculos con respecto a WCF y la seguridad, así que voy a hacer un montón de preguntas aquí y espero que alguien pueda ayudarme a obtener una imagen clara.

  1. ¿Alguien puede darme una explicación sencilla en inglés de la seguridad a nivel de transporte vs mensaje?

  2. Creo creo Tengo un servicio que se ejecuta bajo SSL que autenticará al usuario según sus credenciales de Windows. También think entiendo cómo limitar el acceso a un método de servicio a través de PrincipalPermission. Pero, ¿cómo puedo recuperar el IPrinciple actual, de modo que pueda devolver diferentes resultados dependiendo de quién llame al servicio?

  3. He descubierto cómo activar el rastreo y puedo ver mis registros de rastreo usando " Microsoft Service Trace Log Viewer " pero estaré condenado si puedo entender lo que estoy mostrando. ¿Existe un recurso decente que explique cómo usar esta cosa?

  4. Cuando se utiliza el " Certificado " clientCredentialType, ¿es algo diferente a SSL?

  5. Cuando se utiliza " Windows " clientCredentialType ¿cómo puedo ver por qué usuario de Windows se está pasando?

  6. Mis requisitos significan que tengo que usar basicHttpBindings. ¿Estoy en lo cierto al suponer:

    • ¿Solo tengo disponible seguridad de nivel de transporte?
    • ¿No puedo implementar un nombre de usuario / contraseña personalizado para este enlace?

Sé que estas preguntas pueden parecer estúpidas, pero cualquier ayuda con la aclaración realmente ayudaría.

EDITAR:

  1. ¿Cómo puedo agregar encabezados SOAP personalizados a mi servicio de manera similar a los servicios .asmx? ¿Es este un enfoque válido?

EDITAR:

Además de las preguntas anteriores, me gustaría saber si es posible autenticar un dispositivo móvil de Windows basado en su usuario de Windows comprobando en Active Directory. Por todo lo que he encontrado hasta ahora, parece poco probable.

N.B. Para aquellos que no saben qué hay disponible para la versión de Windows CE de WCF es: Seguridad de nivel de transporte solamente, y ninguno / certificado para el Tipo de credencial de cliente. Entonces, parece que WCF de CE no permitirá esto de manera predeterminada, pero ¿podría enviar esta información de forma segura en el mensaje (a través de la firma del método) y sería esta una forma aceptable de enviar este tipo de información?

¿Fue útil?

Solución

No sé todas las respuestas, pero aquí están las que sí sé

  1. seguridad de transporte significa que la comunicación se encripta mientras se transporta el mensaje para que no pueda leerse ni manipularse. La seguridad del mensaje significa que el contenido del mensaje en sí está encriptado en el transporte, sin embargo, no necesariamente. La seguridad de los mensajes se puede utilizar, por ejemplo, con HTTP, mientras que la seguridad del transporte requeriría el uso de HTTPS (u otros enlaces).
  2. IPrincipal principal = Thread.CurrentPrincipal;
  3. sin respuesta
  4. Sí, aunque el SSL mismo usa certificados, no es lo mismo. Puede hacer que el cliente envíe un certificado que sea conocido por el servicio o que esté firmado por una autoridad confiable para que el servicio sepa quién es el cliente y si debe permitirle hacer la llamada o no. El uso de SSL solo garantizará que terceros no puedan leer la comunicación entre el cliente y los servicios interceptando los paquetes de red.
  5. IPrincipal principal = Thread.CurrentPrincipal; principal.Identity.Name;
  6. No.
    • Usted tiene Ninguno, Transporte, Mensaje y Seguridad mixta como sus opciones, sin embargo, la seguridad de transporte requerirá llamar al punto final usando HTTPS ya que esa es la versión segura del protocolo
    • EDITAR: consulte la discusión en este foro .

Y las preguntas ciertamente no son estúpidas.

P.S. Puedo recomendar el libro programación de servicios WCF de Juval Lowy, es realmente profundo y viene con un marco realmente útil que extiende WCF / Simplificando ciertas cosas.

Otros consejos

Consulte Guía de seguridad de WCF . Si necesita más información, debería poder encontrarlo todo allí, es bastante completo. Aunque parece que @olle dio una respuesta bastante completa ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top