Adicionar um adaptador MAC de entrada
MAC (código de autenticação de mensagem) é um método utilizado para determinar a integridade de uma requisição Acesso único. Você deve desenvolver a lógica no seu sistema fonte para gerar um MAC, que o serviço UAS pode validar.
Configure as Configurações do UAS
Na tela de Configurações do UAS, clique em Adicionar Adaptador de Autenticação. Preencha os campos da seguinte forma:
Campo | Descrição |
|---|---|
Cognome | Este é um nome único para o adaptador e é usado em URLs. O pseudônimo será armazenado como todas as letras minúsculas e não deve conter caracteres URL especiais. |
Habilitado | Esse interruptor determina se o adaptador está disponível para uso. |
Tipo de Autorização | MAC |
Use Adaptador de Saída | Clique no adaptador de autenticação que será usado para autenticação de saída para o serviço externo. Se você não selecionar um, o adaptador de saída padrão será usado. |
Depuração Habilitada | Esse interruptor determina se as instruções de depuração são gravadas nos registros para fins de solução de problemas. |
Usuários Restritos | Insira uma lista separada por vírgulas de nomes de usuário que não podem usar esse adaptador. |
Algoritmo |
|
Parâmetros | Esse é o mapeamento entre os nomes dos seus parâmetros e os valores padrão. Por exemplo, a string de consulta que você fornece tem um valor de parâmetro chamado "time" e isso deve mapear para o valor esperado de "Timestamp". |
Auth | O parâmetro que contém a assinatura de autenticação MAC. Valor recomendado: autenticação |
Timestamp GMT | O parâmetro que contém o carimbo de tempo. Valor recomendado: carimbo de data e hora |
Código do usuário | O parâmetro que contém o código de usuário (o nome de usuário do usuário ou batch_uid/código externo; isso depende de como você configura o provedor de autenticação SAML noBlackboard). Valor recomendado: userId |
Código do curso | O parâmetro que contém o código do curso. Isso pode ser o identificador interno do curso no Blackboard(formato _9999_1) ou o código batch_uid/externo. O sistema trata qualquer coisa que pareça um identificador interno de curso como tal e qualquer outra coisa como um código externo. Valor recomendado: courseId |
Encaminhar | O parâmetro que contém a URL a ser encaminhada no Learn. Isso pode ou não conter o nome do host do Blackboard. Valor recomendado: adiantar |
Delta de carimbo de tempo | A diferença permitida (em milissegundos) entre os carimbos de tempo entre o momento em que a solicitação foi gerada e a sua recepção pelo serviço Adaptador de Autenticação. Valor recomendado: 10.000 - 60.000 |
MAC Params | Quaisquer parâmetros adicionais listados aqui serão incluídos no cálculo do MAC (código do usuário e carimbo de tempo sempre estão incluídos). |
Segredo | A chave compartilhada que será usada para calcular o MAC.
Em sistemas remotos, coloque o segredo compartilhado em diretórios seguros. Uma vez gravado, o valor será mascarado e você não poderá acessá-lo, mas pode alterá-lo. |
Texto de Ajuda da Página de Erro | Insira o texto que será exibido na página de erro exibida quando houver algum problema com autenticação ou provisionamento. |
Desabilite o Monitoramento Nonce | Ative essa opção para fins de solução de problemas para que você possa reutilizar solicitações de autenticação. Por questões de segurança, recomendamos que você mantenha esse botão desligado para que o monitoramento não seja habilitado. |
Habilitar o Provisionamento do Usuário | Ative essa opção para permitir que os usuários sejam criados automaticamente a partir das informações fornecidas na solicitação MAC. |
Habilitar o Provisionamento de Matrícula | Ative essa opção para permitir que as matrículas sejam criadas automaticamente caso a matrícula não exista e um código seja fornecido. |
Permitir que a Disponibilidade de Matrícula Seja Alterada | Habilite essa opção para permitir que o sistema habilite matrículas já existentes e deshabilitadas. |
Clique em Salvar para salvar sua configuração.
A URL do adaptador configurado é https://{region}.extensions.blackboard.com/api/v2/authadapters/sites/{siteId}/auth/{alias}.
Gerando MACs no Sistema Confiável
Para autenticar corretamente os usuários, o sistema confiável deve ser capaz de gerar um MAC (código de autenticação de mensagem) válido para enviar junto com a solicitação Acesso único. Esse MAC é usado para determinar a integridade de uma requisição Acesso único. Para gerar um MAC seguro:
Ordene os parâmetros (Timestamp, código do Usuário, quaisquer parâmetros adicionais definidos em Parâmetros de Solicitação usados para configuração MAC) em ordem alfabética pelo nome do parâmetro.
Concatene os valores dos parâmetros pelos nomes ordenados dos parâmetros em uma única string.
Anexe o Segredo Compartilhado à string obtida a partir do Passo 2.
Criptografe a string em uma string de 16 bytes usando o algoritmo MD5.
Converta a string de 16 bytes em uma string alfanumérica (hexadecimal) de 32 bytes para torná-la amigável para URL.
Exemplo
Este exemplo usa valores padrão para cadeias de parâmetros de requisição e um valor de Segredo Compartilhado chamado "blackboard", e "código" também é definido como um parâmetro adicional nos Parâmetros de Solicitação usados para Mac.
Parâmetros ordenados (valores de parâmetros entre parênteses): código (
TC-101), carimbo de data (1268769454017), código do Usuário (test01)Valores de parâmetros concatenados:
TC-1011268769454017test01Segredo compartilhado anexado:
TC-1011268769454017test01blackboardString criptografado:
ŒIV ̈Báƒež©dxºvqâCorda convertida:
8c4956a842e183659ea96478ba7671e2
Exemplos de Script para Mac
Exemplo em 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;
}Exemplo 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;
}Exemplo 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;
}