Microsoft Active Directory Kullanıcı Hesabı Üzerine TC Kimlik No Alanı Ekleme

By | 21/06/2017

Merhaba,

Bu makalemizde sizlere başlıktan da anlaşılacağı gibi Active Directory kullanıcı hesapları üzerine TC Kimlik No hanesi ekleme işlemlerini anlatmaya çalışacağım.

Çok Önemli Not: Burada anlattığımız işlemin ve bunun gibi AD Schema üzerinde yapılacak olan ekleme işlemlerinin geri dönüşü yoktur. Yapılacak işlemleri test ortamlarınızda deneyip eğer sorun yok ise canlı ortamlarda uygulamanızı şiddetle tavsiye ederim. Ayrıca kolaymış ne güzel her istediğimizi ekleyebiliriz diye yöneticilerinizin her istediği attribute’u AD üzerine ekleyip AD ortamınızı çöpe çevirmemenizi öneririm. AD Schema üzerine yeni bir ekleme yapmadan önce 10 kere düşünün tartışın, bu işlem nerede karşıma sorun çıkarabilir diye, ilerde sorun yaşamayacağınıza emin olduktan sonra eklem işlemlerini yapınız.

Öncelikle Active Directory Schema üzerinde bu yeni alan ekleme işlemlerini yapacak kullanıcı hesabının AD üzerinde Schema Admin olması gerekmektedir.

Yetkili admin kullanıcı hesabı ile AD sunucusu üzerine logon olalım ve Schema üzerine yeni alan ekleyebilmesi için öncelikle aşağıdaki komut ile AD şema erişim kısayolunun mmc konsolunda gözükmesini sağlayalım.

Regsrv32 schmmgmt.dll

Şimdi MMC Consolunu açalım.

File Add/Remove Snap-in ile Active Directory Schema yönetim konsolunu açalım.

Active Directory Schema secip sağ tarafa ekleyelim.

 

Attirbutes üzerinde sağ tuşa basıp Create Attribute… ile yeni bir attribute yaratma ekranını açalım.

Gelen ekranı aşağdaki gibi dolduralım, Unique X500 Object ID bölümüne yazacağımız ID numarasını kulabilmek için DC üzerinde bir script çalıştırıp oradan gelecek numaraya göre bu değeri girmemiz gerekiyor.

Microsoft Technet’teki aşağıdaki Script yardımı ile bu değeri elde edebilirsiniz.

https://gallery.technet.microsoft.com/scriptcenter/56b78004-40d0-41cf-b95e-6e795b2e8a06

.vbs içeriği aşağıdaki gibidir buradaki bilgiler ile elle .vbs script’i yaratabilirsiniz.

 

‘ 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 info

Wscript.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

Biz aşağıdaki ekranda bize verilen 1.2.840.113556.1.8000.2554.999999  nolu değeri kullanacağız.

Elde ettiğimiz X500 Object değerini ilgili bölüme girelim ve yeni bir attribute oluşturalım.

Şimdi aynı ekranda Classes bölümüne erişip oradan User objesini bulup bu yeni TCKimlikNo attribute’nu users üzerinde kullanabilmek için ekleyelim. User seçip özelliklerine girelim.

Attributes tabına gelelim ve Add butonu ile TCKimlikNo listede bulup buraya ekleyelim.

tcKimlikNo eriştik.

Ok ile buraya ekledikten sonra aşağıdaki gibi gözükecektir.

Şimdi herhangi bir User hesabının özelliklerine girip Attirbute Editör bölümüne baktığımızda TckimlikNo görebilir ve buraya TC Kimlik Numarası bilgilerini ekleyebilirsiniz.

Yeni bir attribute ekleme işlemi bu aşamada tamamlanmıştır.

Artık tüm kullanıcı hesaplarında bu kısma erişip TC Kimlik bilgilerini ekleyebilirsiniz.

Makelmizin bundan sonraki kısmı bu şekilde bilgi girişi zor oluyor buraya TC Kimlik Numaralarını basit bir şekilde nasıl ekleyebiliriz diye merak eden arkadaşlarımız makaleyi okumaya devam edebilirler.

Bu işlem için bir visual basic script’e ihtiyacımız var. Bu scripti önce aşağıdaki adresten indirebilirsizin veya AD DC sunucusu üzerindeki herhangi bir üzerinde bir folder oluşturup burada yaratacağınız bir tex file içie aşağıdaki kodları ekleyerek elle oluşturabilirsiniz.

Script’imizi C:\Script\TCKimlikNoEkle.vbs adresine bu isim ile ekliyoruz.

Bu Script içerisindeki kodlar aşağıdaki gibi olmalıdır.

 

Dim tcKimlikNo

Dim oUser1

Dim temp1

Set tcKimlikNo = Wscript.Arguments

Set oUser1 = GetObject(tcKimlikNo(0))

temp1 = InputBox(“TC.Kimlik-No: ” & oUser1.tcKimlikNo & vbCRLF & vbCRLF & “Girilmis degeri degistirmek veya yeni bilgi girmek için asagidaki bölüme yazip enter a basin”)

if temp1 <> “” then oUser1.Put “tcKimlikNo”,temp1

oUser1.SetInfo

Set oUser1 = Nothing

Set tcKimlikNo = Nothing

Set temp1 = Nothing

WScript.Quit

Active Directory Configuration üzerinde bir düzenleme yapacağız, ADSI edit açalım.

Connect diyerek Select Naming Context kısmında Configuration’u seçelim ve açalım.

Gelen ekranda DisplaySpecifiers \ CN=409 bölümü altındaki objeleri görüntüleyelim.

CN=409 grubu altındaki CN=user-Display seçip özellklerine eriştiğimizde en üstteki adminContextMenu edit edeceğiz ve daha önce oluşturduğumuz bir .vbs script’in adresini ve adının bulunduğu satırı ekleyelim.  

Şimdi aşağıdaki satırı buraya aşağıdaki resimdeki gibi ekleyelim.

,&TCKimlikNo, C:\Script\TCKimlikNoEkle.vbs

Ekranları kapatalım ve AD User and Computers ‘e erişelim ve bir User üzerinde bu TC Kimlik Numarası ekleme işlemini test edelim. User’i secip sağ tuşa basalım aşağıdaki resimdeki gibi TCKimlikNo kısmını görüyor olmalısınız.

TC Kimlik No eklemek için yaratmış olduğumuz script çalışacak ve aşağıdaki ekran açılacaktır. TC Kimlik-No: karşısı daha önce eklemedigi için boş olduğunu görebilirsiniz. TC Kimlik nosunu buradan ekleyebilirsiniz.

TC Kimlik No yazıp ve OK ile eklenmesini sağlayabilirsiniz.

Ekledikten sonra tekrar açarsanız TC.Kimlik-No: karşısında biraz önce eklemiş olduğunuz numarayı görebilirsiniz. Değiştirmek için yeni numarayı girip Ok işe onaylamanız yeterli.

User Attribute üzerinden kontrol etmek isterseniz aşağıdaki gibi TC Kimlik Nosunu görebilirsiniz.

Active Directory Users and Computers ekranında kullanıcı adı yanında bu bilgileri görmek isterseniz okumaya devam ediniz.

ADSI edit açalım.

ADSI Edit\DisplaySpecifiers\409\CN=organizationUnit-Display edit edelim.

Attributeadi (tcKimlikNo), Görünen Adı (TCKimlikNo), Varsayılan Görünsün (1), Sutun Genişliği (150), Özelliği (0)

tcKimlikNo,TCKimlikNo,1,150,0

Userların bulunduğu OU açtığınızda TC Kimlik No sütünü direk gözüküyor durumda olacaktır.

Not : Bu tab içinde TC Kimlik No bilgilerinin gözükmesi bazı ortamlarda çok geç olabilir. Biraz bekleyebilirsiniz DC replikasyonlarını manuel yapabilirsiniz, bu bilgilerin gelmesi çok uzun sürerse ortam müsait ise DC restart sonrası kesin bu bilgiler gelecektir ekrana.

Faydası olması dileklerimle.

Recep YÜKSEL (06.2017)

 

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.