Saltar para o conteúdo principal

Configurações de MDM para Administradores

O RedirectWeb suporta a Configuração de Aplicações Geridas da Apple (Managed App Configuration), permitindo-lhe (administradores de TI) implementar e gerir as configurações da aplicação de forma centralizada nos dispositivos de funcionários/alunos através de uma solução de Gestão de Dispositivos Móveis (MDM), como Jamf, Intune, Kandji, etc.

Esta página descreve as chaves configuráveis, os comportamentos da aplicação, as melhores práticas e as limitações.

Visão Geral

info

Para Implementações via Apple Business Manager / Apple School Manager (VPP): A aplicação RedirectWeb padrão utiliza um modelo freemium de Compras na Aplicação (In-App Purchase), o qual não é elegível para compras em volume VPP. Para implementar a aplicação totalmente desbloqueada na sua organização, adquira a aplicação RedirectWeb Pro, que é uma versão de pagamento único concebida especificamente para distribuição via MDM/VPP.

Ao enviar configurações através do seu MDM, pode alcançar o seguinte:

  • Regras Forçadas: Aplicar regras de redirecionamento a nível organizacional que os utilizadores não podem modificar nem eliminar.
  • Distribuição Inicial de Regras: Distribuir um conjunto de regras modelo que serve como predefinição no primeiro lançamento da aplicação.
  • Controlo da Interface: Restringir o acesso a funcionalidades específicas (como a Biblioteca) e indicar claramente dentro da aplicação que esta se encontra sob gestão organizacional.
  • Obtenção de Regras Grandes (Fallback): Contornar os limites de tamanho do payload de MDM obtendo regras a partir de um servidor externo.

Casos de Uso

  • Encaminhamento simples durante migrações de sistemas: Ao migrar de um sistema interno antigo (ex: legacy-crm.internal.local) para uma nova plataforma (ex: salesforce.com), distribua um enforcedRuleSet. Mesmo que os funcionários utilizem marcadores antigos, são automaticamente redirecionados para o novo sistema, eliminando pedidos de suporte de TI relativos a links desatualizados.
  • Assistência no Acesso à Intranet: Distribua regras de redirecionamento utilizando esquemas de URL personalizados para facilitar o acesso a recursos da intranet através de túneis VPN por aplicação (Per-App VPN), como o Omnissa Web.
warning

Os envios de configuração de MDM são aplicados imediatamente apenas se o utilizador abrir a aplicação RedirectWeb. Embora a aplicação utilize tarefas em segundo plano para enviar atualizações de MDM para a extensão do browser de forma silenciosa, esta é uma execução de "melhor esforço" ditada pelo SO. O momento da execução é altamente imprevisível e a tarefa pode nem chegar a ser executada. Portanto, esta funcionalidade não deve ser utilizada para resposta a incidentes críticos (ex: tentar redirecionar instantaneamente todos os funcionários para um site de reserva poucos minutos após uma falha num serviço cloud).

Demo

O ficheiro plist utilizado no vídeo está disponível aqui: sample-mdm.plist, que utiliza chaves de dicionário (<dict>). Também está disponível o ficheiro sample-mdm-json-string.plist, que utiliza chaves de String JSON (mesmos dados).

No vídeo, foi utilizado o MDM da ManageEngine para implementar a configuração, mas a mesma configuração pode ser utilizada para outras soluções de MDM, desde que suportem a Configuração de Aplicações Geridas da Apple.

note

Dicionário (Dictionary) vs. String JSON: Embora o tipo Dicionário (Dictionary) seja mais seguro em termos de tipos, algumas soluções de MDM (como o Omnissa Workspace ONE UEM) não suportam o tipo Dicionário na configuração de aplicações geridas. Nesses casos, utilizar o tipo String JSON é uma solução alternativa recomendada.

Chaves Configuráveis

Implemente as seguintes chaves e valores para a Configuração de Aplicações Geridas através da sua consola de MDM, normalmente no formato plist.

Nome da ChaveTipoDescrição
enforcedRuleSetConjunto de regrasUm conjunto de regras aplicado com prioridade superior às regras normais. A primeira regra na lista tem precedência. Os utilizadores não podem editar, eliminar nem reordenar estas regras. Estão sempre ativas, ignorando o interruptor global da aplicação, e não sincronizam via iCloud.
enforcedRuleSetJSONStringString JSONIgual a enforcedRuleSet, mas o conjunto de regras é fornecido como uma string JSON não formatada. Isto é útil para plataformas MDM que não suportam o tipo Dicionário na configuração de aplicações geridas.
prefilledRuleSetConjunto de regrasUm conjunto de regras criado em vez da regra de exemplo padrão quando um utilizador lança a aplicação pela primeira vez sem regras existentes. Uma vez distribuídas, estas funcionam como regras normais, permitindo a modificação e eliminação pelo utilizador e sincronização via iCloud.
prefilledRuleSetJSONStringString JSONIgual a prefilledRuleSet, mas o conjunto de regras é fornecido como uma string JSON não formatada. Isto é útil para plataformas MDM que não suportam o tipo Dicionário na configuração de aplicações geridas.
organizationNameStringApresenta "Gerido por [organizationName]" no topo do ecrã de definições na aplicação, indicando ao utilizador que a aplicação é gerida.
managedConfigVersionStringUma string de versão arbitrária para a configuração. Apresentada na interface, permitindo que o suporte de TI verifique se o payload de MDM mais recente chegou ao dispositivo durante a resolução de problemas.
showsLibrarySectionBooleanSe definido como false, a funcionalidade de Biblioteca de Regras é ocultada e a secção é substituída por uma mensagem de erro "Restringido pela sua organização.".
fallbackFallbackEspecifique isto quando as configurações excederem os limites de payload do MDM. A aplicação irá obter a configuração a partir do URL especificado em fallbackDataURL.
fallbackJSONStringString JSONIgual a fallback, mas a configuração de fallback é fornecida como uma string JSON não formatada. Isto é útil para plataformas MDM que não suportam o tipo Dicionário na configuração de aplicações geridas.

Estas chaves são todas opcionais.

Tipos de Valores de Configuração

Conjunto de Regras

Cada objeto de regra tem o mesmo formato do que pode partilhar/exportar através da aplicação, mas terá de o converter de JSON para plist, desta forma:

...
<key>enforcedRuleSet</key>
<dict>
<key>kind</key>
<string>RedirectList</string>
<key>bundleID</key>
<string>io.github.mshibanami.RedirectWebForSafari</string>
<key>formatVersion</key>
<string>5</string>
<key>redirects</key>
<array>
<dict>
<key>kind</key>
<string>Redirect</string>
<key>type</key>
<string>originalRedirect</string>
<key>title</key>
<string>Minha regra forçada</string>
<key>sourceURLPattern</key>
<dict>
<key>type</key>
<string>wildcard</string>
<key>value</key>
<string>https://example.com/1</string>
</dict>
<key>destinationURLPattern</key>
<string>https://google.com/search?q=1</string>
</dict>
</array>
</dict>
...

Fallback

Nome da ChaveTipoDescrição
fallbackDataURLString (URL)Um URL de endpoint de um ficheiro JSON/XML contendo conjuntos de regras.
authTokenStringUm token de autenticação anexado ao cabeçalho HTTP ao obter dados do fallbackDataURL. (Utilizado como Authorization: Bearer [authToken]).

String JSON

Algumas plataformas MDM (ex: Omnissa Workspace ONE UEM) não suportam o tipo Dicionário (<dict>) na configuração de aplicações geridas. Como solução, as chaves terminadas em JSONString (como enforcedRuleSetJSONString, prefilledRuleSetJSONString e fallbackJSONString) aceitam os mesmos dados que os seus equivalentes de Dicionário, mas codificados como uma string JSON não formatada dentro de um elemento <string> de um plist.

A string JSON pode ser minificada ou formatada com quebras de linha e indentação para facilitar a leitura, como demonstrado no seguinte exemplo:

...
<key>enforcedRuleSetJSONString</key>
<string>{
"kind": "RedirectList",
"bundleID": "io.github.mshibanami.RedirectWebForSafari",
"formatVersion": "5",
"redirects": [
{
"kind": "Redirect",
"type": "originalRedirect",
"title": "My enforced Rule",
"sourceURLPattern": {
"type": "wildcard",
"value": "https://example.com/1"
},
"destinationURLPattern": "https://google.com/search?q=1"
}
]
}</string>
...
note

Se estiverem presentes tanto uma chave de Dicionário como a sua chave JSONString correspondente (ex: ambas enforcedRuleSet e enforcedRuleSetJSONString), a chave de Dicionário terá precedência.

Avaliação de Regras e Resolução de Conflitos

  1. Se um enforcedRuleSet for fornecido, as suas regras são aplicadas com prioritude absoluta.
  2. Se não existirem regras normais, mas existir um prefilledRuleSet, o prefilledRuleSet é guardado como regras normais.
  3. A "Regra de redirecionamento de exemplo" padrão é gerada apenas se não existirem regras de MDM configuradas e se não existirem regras normais.

Comportamento do URL de Fallback

Quando uma chave existe tanto no payload de MDM inline como nos dados obtidos via fallbackDataURL, a aplicação lida com o conflito da seguinte forma:

  • Antes da Conclusão da Obtenção: As definições inline são estritamente priorizadas e utilizadas.
  • Após Obtenção com Sucesso: Os dados recuperados do fallbackDataURL substituem as definições inline correspondentes.
  • Após Falha na Obtenção: A aplicação continua a utilizar as definições inline.
  • Chaves Independentes: As chaves que existem apenas no payload inline são sempre preservadas.

Feedback de MDM e Verificação de Estado

Pode verificar se a configuração foi aplicada com sucesso através do canal de feedback de MDM (com.apple.feedback.managed), caso a sua solução de MDM o suporte. Após processar a configuração (ou concluir a obtenção do URL), a aplicação devolve os seguintes dados:

  • managedConfigVersion: A string de versão da tentativa de configuração.
  • result: success ou error.
  • messages: Um array contendo mensagens detalhadas de erro ou aviso, se aplicável.