Pregunta

Lo que quiero hacer es:

1) autenticar al cliente para la primera llamada que hace al servicio de WCF, esto estará en función de cada usuario en lugar de una base por aplicación.

2) Comprobar el cliente está autorizado para realizar la llamada.

3) Para las posteriores llamadas a autorizar únicamente, con la autenticación ya ha sido hecha en el paso 1 para una llamada anterior.

o

Si el cliente se ha conectado a una instancia diferente del servicio por alguna razón o el "apretón de manos" se rompe para volver a autenticarse.

Espero este sentido marcas, ¿esto suceda de manera implícita en WCF utilizando por ejemplo nombre de usuario y contraseña de autenticación y autorización o hacer I / ¿hay alguna manera de escribir algo a medida? Básicamente, esto es para la eficiencia.

Muchas gracias, Fugu

¿Fue útil?

Solución

Esto se llama contexto de seguridad (o sesión de seguridad) y es posible con la seguridad de los mensajes. La única limitación es que se maneja sesión entre instancia de servicio individual y proxy de cliente (todas las llamadas se deben hacer en la misma instancia de proxy).

Aquí hay alguna configuración básica para permitir contexto de seguridad:

<wsHttpBinding>
  <binding name="wsHttp">
    <security mode="Message">
      <message clientCredentialsType="UserName" estabilishSecurityContext="true" />
    </security>
  </binding>
</wsHttpBinding>

EstabilishSecurityContext es cierto por defecto. Cuando se activa esta en el protocolo WS-SecureConversation se utiliza. Primera llamada pasa credenciales que están autenticados y token de seguridad se emite al cliente. llamadas próximos usan este token de seguridad para proporcionar la identidad del cliente. Este comportamiento es transparente para el desarrollador por lo que no tiene que tratar con fichas en absoluto.

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