Noções básicas sobre expressões de provisionamento declarativo
Atualizado: July 22, 2015
Importante
Este tópico será arquivado em breve.
Há um novo produto chamado "Azure Ative Directory Connect" que substitui o AADSync e o DirSync.
O Azure AD Connect incorpora os componentes e a funcionalidade lançados anteriormente como Dirsync e AAD Sync.
Em algum momento no futuro, o suporte para Dirsync e AAD Sync terminará.
Essas ferramentas não estão mais sendo atualizadas individualmente com aprimoramentos de recursos e todas as melhorias futuras serão incluídas nas atualizações do Azure AD Connect.
O Azure Ative Directory Synchronization Services (AAD Sync) baseia-se no provisionamento declarativo introduzido pela primeira vez no Forefront Identity Manager 2010 para permitir que você implemente sua lógica de negócios completa de integração de identidade sem precisar escrever código.
Uma parte essencial do provisionamento declarativo é a linguagem de expressão usada em fluxos de atributos. A linguagem usada é um subconjunto do Microsoft® Visual Basic® for Applications (VBA). Esta linguagem é usada no Microsoft Office e os usuários com experiência em VBScript também a reconhecerão. A Linguagem de Expressão de Provisionamento Declarativo está usando apenas funções e não é uma linguagem estruturada; não há métodos ou declarações. Em vez disso, as funções serão aninhadas para expressar o fluxo do programa.
Para obter mais detalhes, consulte Bem-vindo à referência de linguagem do Visual Basic for Applications para o Office 2013.
Os atributos são fortemente tipados. Uma função que espera um atributo de cadeia de caracteres de valor único não aceitará vários valores ou atributos de um tipo diferente. Também diferencia maiúsculas de minúsculas. Ambos os nomes de função e nomes de atributos devem ter caixa adequada ou um erro será lançado
Definições de idioma e identificadores
As funções têm um nome seguido de argumentos entre parênteses: FunctionName(<<argumento 1>>,<<argumento N>>).
Os atributos são identificados por colchetes: [attributeName]
Os parâmetros são identificados por sinais de percentagem: %ParameterName%
As constantes de cadeia de caracteres são cercadas por aspas: por exemplo, "Contoso"
Os valores numéricos são expressos sem aspas e espera-se que sejam decimais. Os valores hexadecimais são prefixados com &H. Por exemplo, 98052, &HFF
Os valores booleanos são expressos com constantes: True, False.
As constantes internas são expressas apenas com seu nome: NULL, CRLF, IgnoreThisFlow
Operadores
Podem ser utilizados os seguintes operadores:
Comparação: <, <=, <>, =, >, >=
Matemática: +, -, *, -
String: & (concatenar)
lógico : && (e), || ou)
Ordem de avaliação: ( )
Os operadores são avaliados da esquerda para a direita. 2*(5+3) não é o mesmo que 2*5+3. Os parênteses ( ) são usados para alterar a ordem de avaliação.
Parâmetros
Um parâmetro é definido por um Connector ou por um administrador usando o PowerShell. Os parâmetros geralmente contêm valores que serão diferentes de sistema para sistema, por exemplo, o nome do domínio em que o usuário está localizado. Estes podem ser usados em fluxos de atributos.
O Conector do Ative Directory forneceu os seguintes parâmetros para as Regras de Sincronização de entrada:
Domínio.Netbios |
Domínio.FQDN |
Domínio.LDAP |
Floresta.Netbios |
Floresta.FQDN |
Floresta.LDAP |
O sistema fornece o seguinte parâmetro:
Connector.ID
Um exemplo que preencherá o domínio do atributo metaverso com o nome netbios do domínio onde o usuário está localizado.
domínio <- %Domain. Netbios%
Cenários comuns
Comprimento dos atributos
Os atributos de cadeia de caracteres são, por padrão, definidos para serem indexáveis e o comprimento máximo é de 448 caracteres. Se você estiver trabalhando com atributos de cadeia de caracteres que podem conter mais, certifique-se de incluir o seguinte no fluxo de atributos:
attributeName <- Left([attributeName],448)
Alterando o userPrincipalSuffix
O atributo userPrincipalName no Ative Directory nem sempre é conhecido pelos usuários e pode não ser adequado como ID de login. O guia de instalação do AAD Sync permite escolher um atributo diferente, por exemplo, e-mail. Mas, em alguns casos, o atributo deve ser calculado. Por exemplo, a empresa Contoso tem dois diretórios AAD, um para produção e outro para teste. Eles querem que os usuários em seu locatário de teste apenas alterem o sufixo no login ID.userPrincipalName <- Word([userPrincipalName],1,"@") & "@contosotest.com"
Nesta expressão, pegamos tudo o que resta do primeiro @-sinal (Word) e concatenamos com uma string fixa.
Converter um valor múltiplo em um valor único
Alguns atributos no Ative Directory têm vários valores no esquema, embora pareçam com valor único em Usuários e Computadores do Ative Directory. Um exemplo é o atributo description.
Nesta expressão, caso o atributo tenha um valor, pegamos o primeiro item (Item) no atributo, removemos os espaços à esquerda e à direita (Trim) e, em seguida, mantemos os primeiros 448 caracteres (Left) na cadeia de caracteres.
Conceito avançado
NULL vs IgnoreThisFlow
Para Regras de Sincronização de entrada, a constante NULL deve ser sempre usada. Isso indica que o fluxo não tem valor para contribuir e outra regra pode contribuir com um valor. Se nenhuma regra contribuiu com um valor, o atributo metaverso será removido.
Para Regras de Sincronização de saída, há duas constantes diferentes a serem usadas: NULL e IgnoreThisFlow. Ambos indicam que o fluxo de atributos não tem nada a contribuir, mas a diferença é o que acontece quando nenhuma outra regra tem nada a contribuir. Se houver um valor existente no diretório conectado, um NULL preparará uma exclusão no atributo removendo-o, enquanto IgnoreThisFlow manterá o valor existente.
Valor Importado
A função ImportedValues é diferente de todas as outras funções, uma vez que o nome do atributo deve ser colocado entre aspas em vez de colchetes: ImportedValue("proxyAddresses").
Normalmente, durante a sincronização, um atributo usará o valor esperado, mesmo que ainda não tenha sido exportado ou um erro tenha sido recebido durante a exportação ("topo da torre"). Uma sincronização de entrada assumirá que um atributo que ainda não chegou a um diretório conectado acabará por alcançá-lo. Em alguns casos, é importante sincronizar apenas um valor que foi confirmado pelo diretório conectado e, neste caso, a função ImportedValue é usada ("holograma e torre de importação delta").
Um exemplo disso pode ser encontrado na Regra de Sincronização pronta para uso do AD – Usuário Comum do Exchange, onde no Exchange Híbrido o valor adicionado pelo Exchange online só deve ser sincronizado se tiver sido confirmado que o valor foi exportado com êxito:
proxyAddresses <- RemoveDuplicates(Trim(ImportedValues(“proxyAddresses”)))
Lista de funções
Conversão
CBool |
CDate |
CGuid |
ConvertFromBase64 |
ConvertToBase64 |
ConvertFromHex |
ConvertToHex |
CNum |
CRef |
CStr |
StringFromGuid |
StringFromSid |
Data/Hora
DataAdicionar |
DateFromNum |
FormatDateTime |
Agora |
NumFromDate |
Diretório
DNComponent |
DNComponentRev |
EscapeDNComponent |
Inspeção
IsBitSet |
IsDate |
IsEmpty |
IsGuid |
IsNull |
IsNullOrEmpty |
IsNumeric |
IsPresent |
IsString |
Matemática
BitAnd |
BitOr |
RandomNum |
Multi-valorado
Contém |
Contagem |
Número |
Aderir |
RemoveDuplicates |
Divisão |
Fluxo do Programa
Erro |
IIF |
Mudar |
Texto
GUID |
InStr |
InStrRev |
LCase |
Esquerda |
Len |
LTrim |
Média |
PadLeft |
PadRight |
PCase |
Substituir |
ReplaceChars |
Certo |
RTrim |
Guarnição |
UCase |
Palavra |
Especial
ImportedValues