Uso de Atributos de Fed: Autorización de OAM y Cabeceras HTTP

En este artículo se describe cómo se pueden utilizar los atributos recibidos en los mensajes SSO de SAML/OpenID en las políticas de autorización de OAM y cómo se pueden proporcionar a aplicaciones web protegidas.

En tiempo de ejecución, cuando OAM/SP procesa correctamente un mensaje de respuesta SSO de SAML/OpenID, el servidor guarda parte de la información de la respuesta en la sesión de OAM como atributos que se pueden utilizar en las políticas de autorización de OAM.

La información de respuesta SSO de SAML/OpenID se guarda en la sesión de OAM como atributos a los que hacen referencia los siguientes identificadores:

Visión general

Un entorno OAM típico se compone de lo siguiente:

Cuando un usuario autenticado solicita acceso a un recurso protegido:

Las políticas de autorización de OAM utilizadas para evaluar si un usuario puede acceder a un recurso o no se pueden basar en varias condiciones:

Un administrador puede utilizar los datos de federación recibidos en el mensaje SSO de SAML/OpenID en una regla de autorización mediante una condición de atributo que evalúe los atributos de federación.

Las respuestas de autorización de OAM que se utilizan para inyectar datos en la solicitud HTTP para ponerlos a disposición de las aplicaciones web protegidas se basan en

De forma similar a las políticas de autorización de OAM, un administrador puede inyectar datos de federación en la solicitud HTTP mediante el uso de atributos de sesión de OAM que hacen referencia a las entradas de federación ($session.attr.fed.partner, $session.attr.fed.attr.ATTR_NAME…)

Configuración de SSO de Federación

Utilice la misma configuración de federación de SAML 2.0 configurada para el anterior, donde:

Se utilizarán dos usuarios:

Alice:

Bob:

La respuesta XML SAML con la afirmación devuelta por IdP es:

<samlp:Response ..>
    <saml:Issuer ...>http://acme.com
/idp</saml:Issuer>
    <samlp:Status>
        <samlp:StatusCode
Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
    </samlp:Status>
    <saml:Assertion ...>
        <saml:Issuer ...>http://acme.com /idp</saml:Issuer>
        <dsig:Signature ...>
        ...
        </dsig:Signature>
        <saml:Subject>
            <saml:NameID ...>alice</saml:NameID>
            ...
        </saml:Subject>         <saml:Conditions ...>
         ...
        </saml:Conditions>         <saml:AuthnStatement ...>
        ...
        </saml:AuthnStatement>
        <saml:AttributeStatement ...>
            <saml:Attribute Name="email" ...>
                <saml:AttributeValue
...>alice@oracle.com</saml:AttributeValue>
            </saml:Attribute>
            <saml:Attribute Name="title" ...>
                <saml:AttributeValue
...>manager</saml:AttributeValue>
            </saml:Attribute>
            <saml:Attribute Name="surname" ...>
                <saml:AttributeValue
...>Appleton</saml:AttributeValue>
            </saml:Attribute>
            <saml:Attribute Name="fname" ...>
                <saml:AttributeValue
...>Alice</saml:AttributeValue>
            </saml:Attribute>
        </saml:AttributeStatement>
    </saml:Assertion>
</samlp:Response>

La página Probar SP muestra diferentes resultados, ya que OAM/SP ha procesado los atributos según las reglas en las que:

Descripción de la ilustración Test_Federation_SSO.jpg

Aplicación web protegida

En este ejemplo, utilice los siguientes componentes:

Un ejemplo de un explorador que accede al recurso sin estar protegido por OAM/WebGate da como resultado la siguiente visualización (en la prueba, la aplicación web estará protegida como se indica arriba):

Descripción de la ilustración Protected_web_Application.jpg

Condiciones de autorización

En el siguiente ejemplo se muestra cómo crear una política de autorización con atributos de federación almacenados en la sesión de OAM para un recurso con las siguientes restricciones:

Para crear dicha política de autorización, ejecute los siguientes pasos:

  1. Vaya a la consola de administración de OAM: http(s)://oam-admin-host:oam-adminport/oamconsole

  2. Vaya a Access Manager, Dominios de aplicación.

  3. Busque y haga clic en el dominio de aplicación para el recurso.

  4. Haga clic en Políticas de autorización

  5. Abra la política de autorización que protege el recurso (en este ejemplo, Protected Resource Policy).

  6. Haga clic en el separador condiciones.

  7. Haga clic en Agregar para definir una nueva condición:

    1. Nombre: TitleCondition

    2. Tipo: Attribute

  8. Haga clic en Agregar selección

  9. Descripción de la ilustración Add_Condition.jpg

  10. Seleccione la condición recién creada

  11. En la ventana Detalles de condición, haga clic en Agregar:

    • Espacio de nombres: Session

    • Nombre de atributo: Other

    • Introduzca el nombre del atributo: fed.title

    • Operador: Equals

    • Valor de atributo: manager

  12. Haga clic Aceptar

  13. Descripción de la ilustración Add_Attr_Condition.jpg

  14. Haga clic en el separador Reglas.

  15. Elimine la condición TRUE si está presente en la regla de permiso, condiciones seleccionadas

  16. Agregue TitleCondition a Permitir regla, condiciones seleccionadas

  17. Haga clic en Aplicar.

Descripción de la ilustración Authorization_Policy.jpg

Para probarlo, en un nuevo explorador, acceda al recurso protegido. Se le redirigirá a IdP.

Si se autentica en IdP con alice, el explorador muestra lo siguiente al final del momento, mostrando la cabecera HTTP de usuario remoto definida en alice (ya que IdP ha proporcionado el atributo de título definido en manager y OAM solo permite el acceso a los usuarios con el atributo de sesión de OAM fed.title definido en manager):

Descripción de la ilustración Document_root.jpg

Si se autentica en IdP con bob, el explorador muestra lo siguiente al final del momento, mostrando un error (ya que IdP ha proporcionado el atributo de título definido en Engineer y OAM solo permite el acceso a los usuarios con el atributo de sesión de OAM fed.title definido en manager):

Descripción de la ilustración OAM_Operation_error.jpg

Inyección de atributos federales

En el siguiente ejemplo se muestra cómo inyectar atributos SAML/OpenID recopilados de la respuesta SSO como cabeceras HTTP para la Web protegida con las siguientes restricciones:

La configuración se realiza mediante el uso de objetos de respuesta de autorización en una definición de política de autorización

Para configurar dicha política de autorización, realice los siguientes pasos:

  1. Vaya a la consola de administración de OAM: http(s)://oam-admin-host:oam-adminport/oamconsole

  2. Vaya a Access Manager, Dominios de aplicación.

  3. Busque y haga clic en el dominio de aplicación para el recurso

  4. Haga clic en Políticas de autorización

  5. Abra la política de autorización que protege el recurso (en este ejemplo, Protected Resource Policy).

  6. Haga clic en el separador Respuestas.

  7. Haga clic en Agregar para crear la entrada para la dirección de correo electrónico:

    • Tipo: Header

    • Nombre: emailaddress

    • Valor: $session.attr.fed.attr.email

  8. Haga clic en Agregar.

    Descripción de la ilustración Add_Response.jpg

  9. Haga clic en Add para crear la entrada para el nombre:

    • Tipo: Header

    • Nombre: firstname

    • Valor: $session.attr.fed.attr.firstname

  10. Haga clic en Agregar.

  11. Haga clic en Add para crear la entrada para el apellido:

    • Tipo: Header

    • Nombre: lastname

    • Valor: $session.attr.fed.attr.lastname

  12. Haga clic en Agregar.

  13. Haga clic en Aplicar.

Descripción de la ilustración ACS_Authorization_Policy.jpg

Para probarlo, en un nuevo explorador, acceda al recurso protegido. Se le redirigirá a IdP donde se produce la autenticación.

A continuación, OAM/WebGate inyecta los elementos de respuesta de autorización según los atributos de sesión de OAM (recibidos desde IdP) y la aplicación web protegida los muestra (mi página de prueba muestra una cabecera HTTP como HTTP_NAME, donde NAME es el nombre de la cabecera HTTP).

Descripción de la ilustración Authorization_Response.jpg

Más recursos de aprendizaje

Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.

Para obtener documentación sobre el producto, visite Oracle Help Center.