Ajouter un adaptateur MAC entrant
Le MAC (code d'authentification des messages) est une méthode utilisée pour déterminer l'intégrité d'une demande authentification unique. Vous devez développer la logique sur votre système source pour générer un MAC, que le service UAS peut valider.
Configurer les paramètres de l'UAS
Dans l'écran des paramètres UAS, sélectionnez Ajouter un adaptateur d'authentification. Renseignez les champs comme suit :
Champ | Description |
|---|---|
Alias | Il s'agit d'un nom unique pour l'adaptateur qui est utilisé dans les URL. L'alias sera stocké sous forme de lettres minuscules et ne doit pas contenir de caractères URL spéciaux. |
Activé | Cette bascule détermine si l'adaptateur peut être utilisé. |
Type d'authentification | MAC |
Utiliser un adaptateur sortant | Sélectionnez l'adaptateur d'authentification qui sera utilisé pour l'authentification sortante auprès du service externe. Si vous n'en sélectionnez aucun, l'adaptateur sortant par défaut sera utilisé. |
Débogage activé | Cette option détermine si les instructions de débogage sont écrites dans les journaux à des fins de dépannage. |
Utilisateurs restreints | Entrez une liste de noms d'utilisateur séparés par des virgules qui ne peuvent pas utiliser cet adaptateur. |
Algorithme |
|
Paramètres | Il s'agit du mappage entre les noms de vos paramètres et les valeurs standard. Par exemple, la chaîne de requête que vous fournissez comporte une valeur de paramètre nommée « heure » qui doit correspondre à la valeur « Horodatage » attendue. |
Authentification | Paramètre qui contient la signature d'authentification MAC. Valeur recommandée : auth |
Horodatage GMT | Paramètre qui contient l'horodatage. Valeur recommandée : horodatage |
ID utilisateur | Paramètre qui contient l'ID utilisateur (nom d'utilisateur ou batch_uid/ID externe de l'utilisateur ; cela dépend de la façon dont vous configurez le fournisseur d'authentification SAML dans Blackboard). Valeur recommandée : UserID |
Code cours | Paramètre qui contient l'identifiant du cours. Il peut s'agir de l'identifiant Blackboard interne du cours (format _9999_1) ou de l'identifiant batch_uid/externe. Le système traitera tout ce qui ressemble à un identifiant de cours interne comme tel et tout le reste comme un identifiant externe. Valeur recommandée : CourseID |
Vers l'avant | Paramètre contenant l'URL à transférer dans Learn. Il peut contenir ou non le nom d'hôte Blackboard. Valeur recommandée : forward |
Horodatage Delta | Différence autorisée (en millisecondes) entre les horodatages entre le moment où la demande a été générée et celui où elle a été reçue par le service Authentication Adapter. Valeur recommandée : 10 000 à 60 000 |
Paramètres MAC | Tous les paramètres supplémentaires répertoriés ici seront inclus dans le calcul du MAC (l'ID utilisateur et l'horodatage sont toujours inclus). |
Secret | La clé partagée qui sera utilisée pour calculer le MAC.
Sur les systèmes distants, placez le secret partagé dans des répertoires sécurisés. Une fois enregistrée, la valeur sera masquée et vous ne pourrez pas y accéder mais vous pouvez la modifier. |
Texte d'aide de la page d'erreur | Entrez le texte qui apparaîtra sur la page d'erreur affichée en cas de problème d'authentification ou de provisionnement. |
Désactiver le suivi Nonce | Activez cette option à des fins de résolution des problèmes afin de pouvoir réutiliser les demandes d'authentification. Pour des raisons de sécurité, nous vous recommandons de laisser cette option désactivée afin que le suivi des données soit activé. |
Activer le provisionnement des utilisateurs | Activez cette option pour permettre la création automatique d'utilisateurs à partir des informations fournies dans la demande MAC. |
Activer le provisionnement des effectifs | Activez cette option pour permettre la création automatique d'effectifs si l'effectif n'existe pas et si un CourseID est fourni. |
Autoriser la modification de la disponibilité des effectifs | Activez cette option pour permettre au système d'activer les effectifs qui existent déjà et qui sont désactivés. |
Sélectionnez Enregistrer pour enregistrer votre configuration.
L'URL de l'adaptateur configuré est https://{region}.prolongations.blackboard.com/interface de programmation d'application/v2/authadapters/sites/{siteId}/auth/{alias}.
Génération de MAC sur le système sécurisé
Pour authentifier correctement les utilisateurs, le système sécurisé doit être en mesure de générer un code MAC (code d'authentification des messages) valide à envoyer avec la demande d'authentification unique. Ce MAC est utilisé pour déterminer l'intégrité d'une demande d'authentification unique. Pour générer un MAC sécurisé :
Triez les paramètres (horodatage, ID utilisateur, tous les paramètres supplémentaires définis dans Paramètres de demande utilisés pour le réglage MAC) par ordre alphabétique par nom de paramètre.
Concaténez les valeurs des paramètres en fonction des noms de paramètres triés en une seule chaîne.
Ajoutez le secret partagé à la chaîne obtenue à l'étape 2.
Chiffrez la chaîne en une chaîne de 16 octets à l'aide de l'algorithme MD5.
Convertissez la chaîne de 16 octets en une chaîne alphanumérique (hexadécimale) de 32 octets pour la rendre compatible avec les URL.
Exemple
Cet exemple utilise des valeurs par défaut pour les chaînes de paramètres de demande et une valeur de secret partagé de « blackboard », et « CourseID » est également défini comme paramètre supplémentaire dans les paramètres de demande utilisés pour Mac.
Paramètres triés (valeurs des paramètres entre parenthèses) : CourseID (
TC-101), timestamp (1268769454017), UserID (test01)Valeurs de paramètres concaténées :
TC-1011268769454017Test01Secret partagé ajouté :
TC-1011268769454017Test01BlackboardChaîne chiffrée :
Œiv̈bá̈ež©DXºVQâChaîne convertie :
8c4956a842e183659ea96478ba7671e2
Exemples de scripts Mac
Exemple Java
Algorithme sécurisé :
/**
* 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;
}Exemple PHP
Algorithme sécurisé :
/* 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;
}Exemple Perl
Algorithme sécurisé :
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;
}