Solución de problemas de AD FS: sintaxis de reglas de notificaciones
Una notificación es una declaración que hace un individuo sobre sí mismo o sobre otro individuo. Las notificaciones se emiten mediante un usuario de confianza y se les asigna uno o varios valores; tras ello, se empaquetan en tokens de seguridad emitidos por el servidor de AD FS. En este artículo se trata la sintaxis y creación de notificaciones. Para obtener información sobre la emisión de notificaciones, consulte Solución de problemas de AD FS: emisión de notificaciones.
Nota
Puede usar ClaimsXRay en el sitio de Ayuda de AD FS como apoyo para solucionar problemas de notificaciones.
Cómo se procesan las reglas de notificación
Las reglas de notificación se procesan a través de la canalización de notificaciones mediante el motor de notificaciones. El motor de notificaciones es un componente lógico del Servicio de federación que examina el conjunto de notificaciones entrantes que presenta un usuario y, después, según la lógica de cada regla, generará un conjunto de resultados de notificaciones.
Cómo crear una regla de notificación
Las reglas de notificación se crean por separado para cada relación de confianza federada dentro del Servicio de federación y no se comparten entre varias relaciones de confianza. Las reglas se pueden crear desde: una plantilla de regla de notificación, desde cero mediante la creación de la regla con el lenguaje de reglas de notificaciones o usar Windows PowerShell para personalizar una regla.
Descripción de los componentes del lenguaje de reglas de notificaciones
El lenguaje de reglas de notificaciones consta de los siguientes componentes, separados por el operador " = >":
Una condición: se usa para comprobar las notificaciones de entrada y determinar si se debe ejecutar la instrucción de emisión de la regla. Representa una expresión lógica que debe evaluarse como verdadera para ejecutar la parte del cuerpo de la regla.
Una declaración de emisión.
Ejemplo:
c:[type == "Name", value == "domain user"] => issue(type = "Role", value = "employee");
Esta notificación tiene los siguientes elementos:
- Condición:
c:[type == "Name", value == "domain user"]
: evalúa la notificación de entrada de si el nombre de la cuenta de Windows es un usuario del dominio. - Emisión:
issue(type = "Role", value = "employee")
: si la condición es verdadera, agrega una nueva notificación a la notificación de entrada con el rol de empleado.
Para obtener más información sobre las notificaciones y la sintaxis, consulte El rol del lenguaje de reglas de notificaciones.
Editor de reglas de notificaciones
El editor de reglas de notificaciones realiza la comprobación de sintaxis una vez que haya completado la notificación y seleccione Aceptar. Por lo tanto, si la sintaxis no es correcta, el editor lo indicará.
Registros de eventos
Al intentar solucionar los problemas de una notificación mediante los registros, el mejor enfoque es buscar la salida de las notificaciones. Puede buscar los eventos 1000 y 1001 en el registro de eventos.
Creación de una aplicación de ejemplo
También puede crear una aplicación de ejemplo que se haga eco de las notificaciones. Por ejemplo, puede usar una aplicación de ejemplo y crear un usuario de confianza que tenga la misma notificación cuyo problema intenta solucionar y ver si la aplicación tiene algún problema con esa notificación.
Aquí puede encontrar una buena aplicación web de ejemplo. Esta aplicación devuelve las notificaciones que recibe del usuario de confianza. Para usarla, debe editar la aplicación web.config mediante:
- El cambio de https://app1.contoso.com/sampapp a la dirección URL que se usará para hospedar la aplicación de ejemplo.
- El cambio de todas las instancias de sts.contoso.com para que apunten al servidor de federación de AD FS.
- La sustitución de la huella digital por su huella digital.
- Reemplace
decryptionKey
yvalidationKey
por los valores adecuados para su escenario.
El siguiente artículo de blog tiene excelentes instrucciones detalladas para configurarlo.