Skip to main content

Voeg een binnenkomende MAC-adapter toe

MAC (message authentication code) is een methode die wordt gebruikt om de integriteit van een Eenmalige aanmelding-verzoek te bepalen. Je moet de logica op je bronsysteem ontwikkelen om een MAC te genereren, die de UAS-service kan valideren.

Configureer de UAS-instellingen

Selecteer in het UAS-instellingenmenu Authenticatieadapter toevoegen. Vul de velden als volgt in:

Veld

Beschrijving

Alias

Dit is een unieke naam voor de adapter en wordt gebruikt in URL's. De alias wordt opgeslagen als alleen kleine letters en mag geen speciale URL-tekens bevatten.

Ingeschakeld

Deze schakelaar bepaalt of de adapter beschikbaar is voor gebruik.

Auth Type

MAC

Gebruik Outbound Adapter

Selecteer de authenticatieadapter die gebruikt zal worden voor uitgaande authenticatie naar de externe service. Als je er geen selecteert, wordt de standaard uitgaande adapter gebruikt.

Debug ingeschakeld

Deze schakelaar bepaalt of debug-statements naar de logs worden geschreven voor probleemoplossingsdoeleinden.

Beperkte gebruikers

Voer een komma-gescheiden lijst in van gebruikersnamen die deze adapter niet kunnen gebruiken.

Algoritme

  • MD5: Selecteer om het legacy MD5-algoritme te gebruiken

  • SHA256: Kies om het veiligere SHA-256-algoritme te gebruiken

Parameters

Dit is de mapping tussen je parameternamen en de standaardwaarden. Bijvoorbeeld, de querystring die je oplevert heeft een parameterwaarde genaamd "time" en dit zou moeten worden gekoppeld aan de verwachte "Timestamp"-waarde.

Auth

De parameter die de MAC-authenticatiehandtekening bevat. Aanbevolen waarde: authenticatie

Tijdstempel GMT

De parameter die de tijdstempel bevat. Aanbevolen waarde: tijdstempel

Gebruikersnaam

De parameter die de User ID bevat (de gebruikersnaam of batch_uid/externe ID; dit hangt af van hoe je de SAML-authenticatieprovider in Blackboard configureert). Aanbevolen waarde: userId

Cursus-ID

De parameter die de cursus-ID bevat. Dit kan de Blackboard interne cursusidentificatie zijn (_9999_1-formaat) of de batch_uid/externe ID. Het systeem behandelt alles wat eruitziet als een interne cursusidentificatie als zodanig en alles wat verder uitziet als een externe ID. Aanbevolen waarde: courseId

Voorwaarts

De parameter die de URL bevat die binnen Learn doorgestuurd moet worden. Dit kan wel of niet de Blackboard hostnaam bevatten. Aanbevolen waarde: vooruit

Tijdstempel Delta

Het toegestane verschil (in milliseconden) tussen de tijdstempels vanaf het moment dat het verzoek werd gegenereerd en wanneer het werd ontvangen door de Authentication Adapter-service. Aanbevolen waarde: 10.000 - 60.000

MAC Params

Alle extra parameters die hier worden vermeld, worden opgenomen in de MAC-berekening (Gebruikers-ID en tijdstempel zijn altijd inbegrepen).

Geheim

De gedeelde sleutel die gebruikt zal worden om de MAC te berekenen.

  • Het geheim mag niet meer dan 255 tekens bedragen.

  • Het geheim kan geen tabbladen, controletekens of einde-van-regel tekens bevatten.

  • Gedeelde geheimen zijn hoofdlettergevoelig.

  • We raden aan om je gedeelde geheim regelmatig te veranderen.

  • Maak je gedeelde geheimen moeilijk te raden door ze lang te maken en een combinatie van cijfers en hoofd- en kleine letters toe te voegen.

Op externe systemen plaats je het gedeelde geheim in beveiligde mappen.

Eenmaal opgeslagen wordt de waarde gemaskeerd en kun je er geen toegang meer op, maar je kunt het veranderen.

Foutpagina Helptekst

Voer de tekst in die op de foutpagina verschijnt wanneer er een probleem is met authenticatie of provisioning.

Schakel Nonce-tracking uit

Zet deze schakelaar aan voor probleemoplossing zodat je authenticatieverzoeken kunt hergebruiken. Om veiligheidsredenen raden we aan deze schakelaar uit te laten staan zodat nonce-tracking ingeschakeld is.

Inschakelen van gebruikersprovisioning

Zet deze schakelaar in zodat gebruikers automatisch kunnen worden aangemaakt uit informatie die in het MAC-verzoek is verstrekt.

Schakel Inschrijvingsvoorziening in

Zet deze schakelaar in om inschrijvingen automatisch aan te maken als de inschrijving niet bestaat en een cursus-ID wordt verstrekt.

Laat de inschrijvingsbeschikbaarheid wijzigen

Zet deze schakelaar aan zodat het systeem inschrijvingen kan inschakelen die al bestaan en zijn uitgeschakeld.

Selecteer Opslaan om je configuratie op te slaan.

De URL voor de geconfigureerde adapter is https://{region}.extensions.blackboard.com/api/v2/authadapters/sites/{siteId}/auth/{alias}.

MAC's genereren op het vertrouwde systeem

Om gebruikers correct te authenticeren, moet het vertrouwde systeem in staat zijn een geldige MAC (message authentication code) te genereren om mee te sturen met het Eenmalige aanmelding-verzoek. Deze MAC wordt gebruikt om de integriteit van een Eenmalige aanmelding-verzoek te bepalen. Om een veilige MAC te genereren:

  1. Sorteer de parameters (tijdstempel, gebruikers-ID, eventuele extra parameters gedefinieerd in Request Parameters gebruikt voor MAC-instelling) alfabetisch op parameternaam.

  2. Zet de parameterwaarden samen met de gesorteerde parameternamen tot één string.

  3. Voeg het gedeelde geheim toe aan de string verkregen uit stap 2.

  4. Versleutel de string tot een string van 16 bytes met behulp van het MD5-algoritme.

  5. Zet de 16-byte string om in een 32-byte alfanumerieke (hexadecimale) string om het URL-vriendelijk te maken.

Voorbeeld

Dit voorbeeld gebruikt standaardwaarden voor request-parameterstrings en een Shared Secret-waarde van "blackboard," en "courseId" wordt ook gedefinieerd als een extra parameter in Request Parameters die voor Mac worden gebruikt.

  1. Gesorteerde parameters (parameterwaarden tussen haakjes): courseId (TC-101), timestamp (1268769454017), userId (test01)

  2. Parameterwaarden gekoppeld: TC-1011268769454017test01

  3. Gedeeld geheim toegevoegd: TC-1011268769454017test01blackboard

  4. Versleutelde tekenreeks: ŒIV¨Báƒež©dxºvqâ

  5. Omgebouwde snaar: 8c4956a842e183659ea96478ba7671e2

Mac-scriptvoorbeelden

Java-voorbeeld

Veilig algoritme:

    /**
     * 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;
    }

PHP-voorbeeld

Veilig algoritme:

/* 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;
}

Perl-voorbeeld

Veilig algoritme:

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;
}