visual tokens seguridad hacer generar crear como bearer basada autenticacion wcf wcf-authentication

tokens - WCF: la solicitud de token de seguridad no pudo ser satisfecha porque la autenticación falló



token visual basic (4)

He escrito un Servicio WCF muy simple que envía y recibe mensajes. He probado la aplicación a través del host del servidor web predeterminado de VS 2008 y todo funciona bien. Pero cuando despliego el servicio WCF al IIS de otra computadora recibo el siguiente error:

"La solicitud de token de seguridad no se pudo cumplir porque la autenticación falló".

¿Cómo puedo configurar el tipo de autenticación para usar mi nombre de usuario y contraseña personalizados en el archivo de configuración? Si no es posible, dígame cómo puedo configurar sus credenciales de Windows porque las 2 computadoras que estoy usando no comparten los mismos usuarios.


Asegúrese de establecer esta configuración de bindingConfiguration (especificando el modo de seguridad ''ninguno'') tanto en el cliente como en el servidor, o de lo contrario recibirá este mensaje, que es una bindingConfiguration la depuración del problema.

El mensaje no pudo ser procesado. Esto es más probable porque la acción '' http://tempuri.org/IInterfaceName/OperationName '' es incorrecta o porque el mensaje contiene un token de contexto de seguridad no válido o caducado o porque hay una falta de coincidencia entre los enlaces. El token de contexto de seguridad no sería válido si el servicio abortó el canal debido a inactividad. Para evitar que el servicio interrumpa prematuramente las sesiones inactivas, aumente el tiempo de espera de recepción en el enlace del punto final del servicio.


Debe desactivar la seguridad del enlace. De lo contrario, creo que, de forma predeterminada, wsHttpBinding intentará negociar un Token de contexto de seguridad (SCT).

Por lo tanto, modifique la definición del punto final para que apunte a una sección de configuración de enlace. Aquí hay un ejemplo:

<endpoint address="" binding="wsHttpBinding" contract="HelloWorldService.IService1" bindingConfiguration="TheBindingConfig">

Y luego agregue algo así como la siguiente configuración de enlace justo después de la sección <services> en la sección <system.serviceModel> web.config.

<bindings> <wsHttpBinding> <binding name="TheBindingConfig"> <security mode="None" /> </binding> </wsHttpBinding> </bindings>

Configurar la seguridad a "Ninguno" es la clave.

Espero que esto haya ayudado!

Lo anterior me ayudó, pero lo que no es inmediatamente obvio es cómo agregarlo al servicio (está claro una vez que lo has hecho, pero no hasta que lo hayas hecho). La razón por la que no es completamente obvio es porque no hay una sección de enlaces por defecto, mientras que es probable que haya una en el cliente.

Entonces, para ser muy claros, al final del servicio, agregue la sección de enlaces (como se detalla arriba) y luego, al punto final apropiado agregue el atributo bindingConfiguration = "TheBindingConfig". Obvio una vez que lo has hecho una vez ...


En realidad, no necesita desactivar la seguridad y, en algunos casos, no debería hacerlo. Dentro de una configuración de vinculación, puede especificar la seguridad del nivel de mensaje que no establece un contexto de seguridad de la siguiente manera:

<security mode="Message"> <transport clientCredentialType="Windows" proxyCredentialType="None" realm="" /> <message clientCredentialType="Windows" negotiateServiceCredential="true" algorithmSuite="Default" establishSecurityContext="false" /> </security>

Tenga en cuenta el atributo establishSecurityContext. Tanto el cliente como el servicio deben tener una configuración de seguridad con establecerSeguridadContexto establecido en el mismo valor. Un valor de verdadero también funciona bien, pero se recomienda falso en un entorno donde los servidores están equilibrados de carga.


Si se encuentra en modo de depuración, configure el atributo de depuración como

<serviceDebug includeExceptionDetailInFaults="true"/>

de forma predeterminada, establece como falso ... por lo tanto, a la hora de depurar arroja esa excepción.

Espero eso ayude .