Añadir un adaptador MAC entrante
MAC (código de autenticación de mensajes) es un método que se utiliza para determinar la integridad de una solicitud SSO or inicio de sesión único. Desarrolle la lógica en su sistema fuente para generar una MAC, que el servicio UAS pueda validar.
Configurar la configuración del UAS
Desde la pantalla de Configuración de UAS, seleccione Añadir adaptador de autenticación. Rellena los campos de la siguiente manera:
Campo | Descripción |
|---|---|
Alias | Este es un nombre único para el adaptador y se utiliza en URLs. El alias se almacenará como letras minúsculas y no debe contener caracteres URL especiales. |
Activado | Este interruptor determina si el adaptador está disponible para su uso. |
Tipo de autenticación | MAC |
Utilice adaptador de salida | Seleccione el adaptador de autenticación que se utilizará para la autenticación saliente al servicio externo. Si no selecciona uno, se utilizará el adaptador saliente por defecto. |
Depuración habilitada | Este interruptor determina si las sentencias de depuración se escriben en los registros para fines de resolución de problemas. |
Usuarios restringidos | Introduzca una lista separada por comas de nombres de usuario que no pueden usar este adaptador. |
Algoritmo |
|
Parámetros | Este es el mapeo entre los nombres de los parámetros y los valores estándar. Por ejemplo, la cadena de consulta que proporcione tiene un valor de parámetro llamado "tiempo" y esto debería corresponder al valor esperado de "Timestamp". |
Auth | El parámetro que contiene la firma de autenticación MAC. Valor recomendado: autenticación |
Marca temporal GMT | El parámetro que contiene la marca de tiempo. Valor recomendado: marca temporal |
ID de usuario | El parámetro que contiene el ID de usuario (el nombre de usuario del usuario o lote_uid/ID externo; esto depende de cómo configure el proveedor de autenticación SAML en Blackboard). Valor recomendado: userId |
ID del curso | El parámetro que contiene el ID del curso. Esto puede ser el Blackboard identificador interno del curso (formato _9999_1) o el ID lote_uid/externo. El sistema tratará todo lo que parezca un identificador interno de curso como tal y cualquier otra cosa como un ID externo. Valor recomendado: courseId |
Adelante | El parámetro que contiene la URL para reenviar dentro de Learn. Esto puede o no contener el nombre de Blackboard anfitrión. Valor recomendado: hacia adelante |
Delta con marca temporal | La diferencia permitida (en milisegundos) entre las marcas de tiempo desde que se generó la solicitud y cuando fue recibida por el servicio de Adaptador de Autenticación. Valor recomendado: 10.000 - 60.000 |
Parámetros MAC | Cualquier parámetro adicional que se enumere aquí se incluirá en el cálculo MAC (el ID de usuario y la marca de tiempo siempre se incluyen). |
Secreto | La clave compartida que se utilizará para calcular el MAC.
En sistemas remotos, coloca el secreto compartido en directorios seguros. Una vez guardado, el valor se ocultará y no podrá acceder a él, pero puede cambiarlo. |
Texto de ayuda de la página de error | Introduce el texto que aparecerá en la página de error que se muestra cuando haya un problema con la autenticación o el aprovisionamiento. |
Deshabilitar el seguimiento Nonce | Active este interruptor para fines de resolución de problemas y así poder reutilizar las solicitudes de autenticación. Por razones de seguridad, recomendamos mantener este interruptor desactivado para que el seguimiento no esté activo. |
Habilitar la provisión de usuario | Activa este interruptor para permitir que los usuarios se creen automáticamente a partir de la información proporcionada en la solicitud MAC. |
Habilitar la provisión de inscripción | Activa este interruptor para permitir que las inscripciones se creen automáticamente si la inscripción no existe y se proporciona un CourseID. |
Permitir que cambie la disponibilidad de inscripción | Activa este interruptor para permitir que el sistema habilite las inscripciones que ya existen y están deshabilitadas. |
Seleccione Guardar para guardar su configuración.
La URL del adaptador configurado es https://{region}.extensions.blackboard.com/api/v2/authadapters/sites/{siteId}/auth/{alias}.
Generación de MACs en el sistema de confianza
Para autenticar correctamente a los usuarios, el sistema de confianza debe ser capaz de generar un MAC (código de autenticación de mensaje) válido para enviar junto con la solicitud SSO or inicio de sesión único. Este MAC se utiliza para determinar la integridad de una solicitud SSO or inicio de sesión único. Para generar un MAC seguro:
Ordene los parámetros (marca de tiempo, ID de usuario, cualquier parámetro adicional definido en Parámetros de Solicitud usados para la configuración MAC) alfabéticamente por nombre de parámetro.
Concatena los valores de los parámetros mediante los nombres de los parámetros ordenados en una sola cadena.
Añade el Secreto Compartido a la cadena obtenida del Paso 2.
Cifra la cadena en una cadena de 16 bytes usando el algoritmo MD5.
Convierte la cadena de 16 bytes en una cadena alfanumérica (hexadecimal) de 32 bytes para que sea compatible con URLs.
Ejemplo
Este ejemplo utiliza valores predeterminados para cadenas de parámetros de solicitud y un valor de Secreto Compartido como "blackboard", y "courseId" también se define como un parámetro adicional en los Parámetros de Solicitud utilizados para Mac.
Parámetros ordenados (valores de parámetros entre paréntesis): courseId (
TC-101), marca de tiempo (1268769454017), userId (examen01)Valores de parámetros concatenados:
TC-1011268769454017test01Secreto compartido añadido:
TC-1011268769454017test01blackboardCadena cifrada:
ŒIV ̈Báƒež©dxºvqâCadena convertida:
8c4956a842e183659ea96478ba7671e2
Ejemplos de scripts para Mac
Ejemplo de Java
Algoritmo seguro:
/**
* Calculates a secure MAC (message authentication code) from an array of strings and shared secret.
* @param values – Parameters must first be sorted alphabetically by parameter name, then the values of these sorted parameters passed to calculateSecureMac
* @param secret - the shared secret
* @return The calculated MAC
*/
private String calculateSecureMAC (final String[]
values, final String secret) throws
NoSuchAlgorithmException
{
// concatenate param values
final int size = values.length;
String paramString = "";
for(int i=0; i<size; i++)
{
paramString += values[i];
}
// get md5 hash from ascii value and secret
final MessageDigest md = MessageDigest.getInstance("MD5");
final byte[] hashBytes = md.digest((paramString + secret).getBytes());
md.reset();
// convert to hex
String mac = "";
String hexByte;
for (int k=0; k<hashBytes.length; k++)
{
hexByte = Integer.toHexString(hashBytes[k] < 0 ? hashBytes[k] + 256 : hashBytes[k]);
mac += (hexByte.length()==1) ? "0" + hexByte : hexByte;
}
return mac;
}Ejemplo de PHP
Algoritmo seguro:
/* Calculates a MAC (message authentication code) from an array of strings and a secret.
Sort request parameters alphabetically by parameter name first, then pass values of sorted
parameters and shared secret to calculateSecureMac */
function calculateSecureMac($params, $secret)
{
// concatenate param values
$data = implode('', $params);
// get md5 of concatenated param values and secret
$mac = md5($data . $secret);
return $mac;
}Ejemplo Perl
Algoritmo seguro:
use Digest::MD5;
# Calculates a MAC (message authentication code) from an array of strings and a secret. Sort request parameters alphabetically by parameter name first, then pass values of sorted parameters and shared secret to calculateSecureMac
sub calculateSecureMac
{
my @args = @_;
$secret = pop(@args);
# concatenate param values
$data = join("", @args);
# get md5 of concatenated param values and secret
$ctx = Digest::MD5->new;
$ctx->add($data . $secret);
$mac = $ctx->hexdigest;
return $mac;
}