Blog Agility

Como adicionar um novo atributo a usuários do Active Directory por meio da extensão do Schema

Como adicionar um novo atributo a usuários do Active Directory por meio da extensão do Schema

Por Alessandro Santos:
Este artigo descreve o procedimento para criar um atributo adicional no ambiente Active Directory. Essa alteração deverá ser executada no Servidor Windows rodando a role Schema Master.

1- Conecte-se ao Servidor Active Directory que roda a FSMO Schema Master.

2- Por padrão a engine Schema não vem instalada. Dessa forma é necessário carregar a dll executando o comando conforme imagem abaixo:

2015MICROSOFT - Como criar um atributo adicional extendendo o Schema01
3- Será exibida uma mensagem de confirmação. Clique OK para fechar a mensagem.

2015MICROSOFT - Como criar um atributo adicional extendendo o Schema02
4- Vá até o menu Start > Run > e digite MMC.

5- Vá até File e depois selecione a opção Add and Remove Snap-In e selecione Active Directory Schema e clique em Add.

6- Na console MCC selecione a opção Attribute e depois Create Attribute.

2015MICROSOFT - Como criar um atributo adicional extendendo o Schema03
7- Para a criação de um novo atributo é necessário que saibamos qual OID está sendo utilizado pelo ambiente. Para isso copie o código vbs abaixo no notepad e salve no desktop como OID.vbs, logo após executar o VBS.


' oidgen.vbs
' THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
' OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR
' FITNESS FOR A PARTICULAR PURPOSE.'
' Copyright (c) Microsoft Corporation. All rights reserved'
' This script is not supported under any Microsoft standard support program or service.
' The script is provided AS IS without warranty of any kind. Microsoft further disclaims all
' implied warranties including, without limitation, any implied warranties of merchantability
' or of fitness for a particular purpose. The entire risk arising out of the use or performance
' of the scripts and documentation remains with you. In no event shall Microsoft, its authors,
' or anyone else involved in the creation, production, or delivery of the script be liable for
' any damages whatsoever (including, without limitation, damages for loss of business profits,
' business interruption, loss of business information, or other pecuniary loss) arising out of
' the use of or inability to use the script or documentation, even if Microsoft has been advised
' of the possibility of such damages.
' ----------------------------------------------------------------------
Function GenerateOID()
'Initializing Variables
Dim guidString, oidPrefix
Dim guidPart0, guidPart1, guidPart2, guidPart3, guidPart4, guidPart5, guidPart6
Dim oidPart0, oidPart1, oidPart2, oidPart3, oidPart4, oidPart5, oidPart6
On Error Resume Next
'Generate GUID
Set TypeLib = CreateObject("Scriptlet.TypeLib")
guidString = TypeLib.Guid
'If no network card is available on the machine then generating GUID can result with an error.
If Err.Number <> 0 Then
Wscript.Echo "ERROR: Guid could not be generated, please ensure machine has a network card."
Err.Clear
WScript.Quit
End If

'Stop Error Resume Next
On Error GoTo 0
'The Microsoft OID Prefix used for the automated OID Generator
oidPrefix = "1.2.840.113556.1.8000.2554"
'Split GUID into 6 hexadecimal numbers
guidPart0 = Trim(Mid(guidString, 2, 4))
guidPart1 = Trim(Mid(guidString, 6, 4))
guidPart2 = Trim(Mid(guidString, 11, 4))
guidPart3 = Trim(Mid(guidString, 16, 4))
guidPart4 = Trim(Mid(guidString, 21, 4))
guidPart5 = Trim(Mid(guidString, 26, 6))
guidPart6 = Trim(Mid(guidString, 32, 6))
'Convert the hexadecimal to decimal
oidPart0 = CLng("&H" & guidPart0)
oidPart1 = CLng("&H" & guidPart1)
oidPart2 = CLng("&H" & guidPart2)
oidPart3 = CLng("&H" & guidPart3)
oidPart4 = CLng("&H" & guidPart4)
oidPart5 = CLng("&H" & guidPart5)
oidPart6 = CLng("&H" & guidPart6)'Concatenate all the generated OIDs together with the assigned Microsoft prefix and return
GenerateOID = oidPrefix & "." & oidPart0 & "." & oidPart1 & "." & oidPart2 & "." & oidPart3 & _ "." & oidPart4 & "." & oidPart5 & "." & oidPart6
End Function
'Output the resulted OID with best practice infoWscript.Echo "Your root OID is: " & VBCRLF & GenerateOID & VBCRLF & VBCRLF & VBCRLF & _
"This prefix should be used to name your schema attributes and classes. For example: " & _
"if your prefix is ""Microsoft"", you should name schema elements like ""microsoft-Employee-ShoeSize"". " & _
"For more information on the prefix, view the Schema Naming Rules in the server " & _
"Application Specification (http://www.microsoft.com/windowsserver2003/partners/isvs/appspec.mspx)." & _
VBCRLF & VBCRLF & _
"You can create subsequent OIDs for new schema classes and attributes by appending a .X to the OID where X may " & _
"be any number that you choose. A common schema extension scheme generally uses the following structure:" & VBCRLF & _
"If your assigned OID was: 1.2.840.113556.1.8000.2554.999999" & VBCRLF & VBCRLF & _
"then classes could be under: 1.2.840.113556.1.8000.2554.999999.1 " & VBCRLF & _
"which makes the first class OID: 1.2.840.113556.1.8000.2554.999999.1.1" & VBCRLF & _
"the second class OID: 1.2.840.113556.1.8000.2554.999999.1.2 etc..." & VBCRLF & VBCRLF & _
"Using this example attributes could be under: 1.2.840.113556.1.8000.2554.999999.2 " & VBCRLF & _
"which makes the first attribute OID: 1.2.840.113556.1.8000.2554.999999.2.1 " & VBCRLF & _
"the second attribute OID: 1.2.840.113556.1.8000.2554.999999.2.2 etc..." & VBCRLF & VBCRLF & _
"Here are some other useful links regarding AD schema:" & VBCRLF & _
"Understanding AD Schema" & VBCRLF & _
"http://technet2.microsoft.com/WindowsServer/en/Library/b7b5b74f-e6df-42f6-a928-e52979a512011033.mspx " & _
VBCRLF & VBCRLF & _
"Developer documentation on AD Schema:" & VBCRLF & _
"http://msdn2.microsoft.com/en-us/library/ms675085.aspx " & VBCRLF & VBCRLF & _
"Extending the Schema" & VBCRLF & _
"http://msdn2.microsoft.com/en-us/library/ms676900.aspx " & VBCRLF & VBCRLF & _
"Step-by-Step Guide to Using Active Directory Schema and Display Specifiers " & VBCRLF & _
"http://www.microsoft.com/technet/prodtechnol/windows2000serv/technologies/activedirectory/howto/adschema.mspx " & _
VBCRLF & VBCRLF & _
"Troubleshooting AD Schema " & VBCR & _
"http://technet2.microsoft.com/WindowsServer/en/Library/6008f7bf-80de-4fc0-ae3e-51eda0d7ab651033.mspx " & _
VBCRLF & VBCRLF\

 

Será gerada a imagem abaixo:

2015MICROSOFT - Como criar um atributo adicional extendendo o Schema04
8- Preencher conforme abaixo com um nome descritivo e no campo X500 OID inserir o dado gerado pelo vbs acima com o valor do OID e adicionar um .1 no final por exemplo

2015MICROSOFT - Como criar um atributo adicional extendendo o Schema05
9- Clique em OK para finalizar o processo.

10- Selecione a pasta Classes no MMC e navegue até User e com o botão direito selecione a opção Properties.

2015MICROSOFT - Como criar um atributo adicional extendendo o Schema06
11- Selecione a guia atributes e clique em ADD.

2015MICROSOFT - Como criar um atributo adicional extendendo o Schema07
12- Localize o atributo criado em clique OK

2015MICROSOFT - Como criar um atributo adicional extendendo o Schema08
13- Reinicie o serviço Active Directory Domain Services em services.msc.

14- Clique em Start, depois em Run e digite dsa.msc. A console Active Directory Users and Computers será aberta. Navegue até View e depois selecione a opção Advanced Features.

2015MICROSOFT - Como criar um atributo adicional extendendo o Schema09
15- Navegue até OU Users, selecione um usuário qualquer e com o botão direito selecione a opção Properties. Navegue até a guia Attribute Editor e confirme que o valor é apresentado.

2015MICROSOFT - Como criar um atributo adicional extendendo o Schema10

 

O artigo acima mostra de maneira objetiva a criação de um novo atributo no Schema do Active Directory.