Diferencias entre SSO iniciado por SP y SSO iniciado por IDP

107

¿Alguien puede explicarme cuáles son las principales diferencias entre SSO iniciado por SP y SSO iniciado por IDP , incluyendo cuál sería la mejor solución para implementar el inicio de sesión único junto con ADFS + OpenAM Federation?

pbhle
fuente
2
Para aclararle a cualquier persona nueva los conceptos de inicio de sesión único: SP = proveedor de servicios (el sistema que el usuario desea utilizar) e IdP = proveedor de identificación (el sistema que autentica al usuario)
Seafish

Respuestas:

72

En IDP Init SSO (SSO web no solicitado), el proceso de federación lo inicia el IDP enviando una respuesta SAML no solicitada al SP. En SP-Init, el SP genera una AuthnRequest que se envía al IDP como primer paso en el proceso de Federación y el IDP luego responde con una Respuesta SAML. En mi humilde opinión, el soporte de ADFSv2 para SAML2.0 Web SSO SP-Init es más fuerte que su soporte de IDP-Init en lo que respecta a: integración con productos Fed de terceros (principalmente en torno al soporte para RelayState), por lo que si tiene una opción, querrá usar SP- Init, ya que probablemente hará la vida más fácil con ADFSv2.

Aquí hay algunas descripciones simples de SSO de la Guía de inicio de PingFederate 8.0 que puede consultar y que también pueden ayudar: https://documentation.pingidentity.com/pingfederate/pf80/index.shtml#gettingStartedGuide/task/idpIniticatedSsoPOST.html

Ian
fuente
81

SSO iniciado por IDP

De la documentación de PingFederate: - https://docs.pingidentity.com/bundle/pf_sm_supportedStandards_pf82/page/task/idpIniticatedSsoPOST.html

En este escenario, un usuario inicia sesión en el IdP e intenta acceder a un recurso en un servidor SP remoto. La aserción SAML se transporta al SP a través de HTTP POST.

Pasos de procesamiento:

  1. Un usuario ha iniciado sesión en el IdP.
  2. El usuario solicita acceso a un recurso SP protegido. El usuario no ha iniciado sesión en el sitio de SP.
  3. Opcionalmente, el IdP recupera atributos del almacén de datos del usuario.
  4. El servicio SSO del IdP devuelve un formulario HTML al navegador con una respuesta SAML que contiene la aserción de autenticación y cualquier atributo adicional. El navegador envía automáticamente el formulario HTML al SP.

SSO iniciado por SP

De la documentación de PingFederate: - http://documentation.pingidentity.com/display/PF610/SP-Initiation+SSO--POST-POST

En este escenario, un usuario intenta acceder a un recurso protegido directamente en un sitio web de SP sin iniciar sesión. El usuario no tiene una cuenta en el sitio de SP, pero tiene una cuenta federada administrada por un tercero IdP. El SP envía una solicitud de autenticación al IdP. Tanto la solicitud como la aserción SAML devuelta se envían a través del navegador del usuario a través de HTTP POST.

Pasos de procesamiento:

  1. El usuario solicita acceso a un recurso SP protegido. La solicitud se redirige al servidor de federación para manejar la autenticación.
  2. El servidor de federación envía un formulario HTML al navegador con una solicitud SAML de autenticación del IdP. El formulario HTML se publica automáticamente en el servicio SSO del IdP.
  3. Si el usuario aún no ha iniciado sesión en el sitio del IdP o si se requiere una nueva autenticación, el IdP solicita credenciales (por ejemplo, ID y contraseña) y el usuario inicia sesión.
  4. Se puede recuperar información adicional sobre el usuario del almacén de datos del usuario para incluirla en la respuesta SAML. (Estos atributos están predeterminados como parte del acuerdo de federación entre el IdP y el SP)

  5. El servicio SSO del IdP devuelve un formulario HTML al navegador con una respuesta SAML que contiene la aserción de autenticación y cualquier atributo adicional. El navegador envía automáticamente el formulario HTML al SP. NOTA: Las especificaciones SAML requieren que las respuestas POST estén firmadas digitalmente.

  6. (No se muestra) Si la firma y la afirmación son válidas, el SP establece una sesión para el usuario y redirige el navegador al recurso de destino.

user3061250
fuente
1
Re SP Iniciado SSO - el punto 3 anterior dice "Si el usuario aún no ha iniciado sesión en el sitio IdP o si se requiere una nueva autenticación, el IdP solicita credenciales (por ejemplo, ID y contraseña) y el usuario inicia sesión". ¿Cómo determina el sistema si el usuario ha iniciado sesión en el sitio IdP? ¿Genera una cookie, por ejemplo?
Edwardo
1
@Edwardo Tu suposición es correcta. Cuando se establece una sesión con un IdP, normalmente el IdP genera una cookie para mantener esa sesión.
jekennedy
Tengo otra pregunta stackoverflow.com/questions/43861315/… . ¿Puedes echarle un vistazo?
kawadhiya21
49

SSO iniciado por SP

Bill el usuario: "Hola, Jimmy, enséñame ese informe"

Jimmy the SP: "Oye, todavía no estoy seguro de quién eres. Tenemos un proceso aquí, así que primero debes verificarlo con Bob the IdP. Confío en él".

Bob el IdP: "Veo que Jimmy te envió aquí. Por favor, dame tus credenciales".

Bill el usuario: "Hola, soy Bill. Aquí están mis credenciales".

Bob, el IdP: "Hola, Bill. Parece que ya te registraste".

Bob, el IdP: "Hola, Jimmy. Este tipo, Bill, consulta y aquí hay información adicional sobre él. Haz lo que quieras desde aquí".

Jimmy the SP: "Ok, genial. Parece que Bill también está en nuestra lista de invitados conocidos. Dejaré entrar a Bill".

SSO iniciado por IdP

Bill el usuario: "Hola Bob. Quiero ir a la casa de Jimmy. La seguridad es estricta allí".

Bob, el IdP: "Hola, Jimmy. Confío en Bill. Verifica y aquí tienes información adicional sobre él. Haz lo que quieras desde aquí".

Jimmy the SP: "Ok, genial. Parece que Bill también está en nuestra lista de invitados conocidos. Dejaré entrar a Bill".


Entro en más detalles aquí, pero sigo manteniendo las cosas simples: https://jorgecolonconsulting.com/saml-sso-in-simple-terms/ .

2upmedia
fuente
33
No creo que la segunda conversación sea correcta ... en lugar de eso debería ser: IdP: "Oye, aquí tienes información sobre Sal, déjala entrar" / SP: "Ok, confío en ti, la dejaré en "
Jeff Olson
4
la primera conversación tampoco es correcta: en el primer paso, SP aún no sabe nada sobre qué usuario es, solo en IdP el usuario iniciará sesión y se identificará como "Sal"
Allie
4
La primera conversación debería ser: SP: "Oye, ¿dónde está tu identificación?" IdP: "Espera, lo comprobaré. Déjame ver tu identificación, por favor. Ok hermano, déjala entrar, se llama Sal y tiene 21 (opcionalmente)" SP: "¡Genial, eres genial! Ey tú, entra ! "
Erdal G.
3
Creo que esta respuesta no merece los votos negativos que obtuvo. Responde a la pregunta de una manera creativa, tal vez no tan precisa como algunos han señalado, pero creativa no menos.
Aaron C
2
Sería interesante ver la respuesta correcta en este formato. Mis ojos están vidriosos al leer las respuestas votadas, este formato ayuda a captar el concepto general muy rápidamente. No sé lo suficiente para crear con seguridad una respuesta basada en los comentarios.
Sean Connolly