Pustaka Kerberos lengkap yang dibangun seluruhnya dalam kode terkelola tanpa (banyak) ketergantungan OS.
Proyek ini didukung oleh .NET Foundation.
Perpustakaan ini TIDAK didukung secara resmi oleh Microsoft. Jika Anda menggunakannya melalui ODP.NET Oracle, Kerberos.NET hanya didukung melalui Dukungan Oracle. Anda harus menghubungi Dukungan Oracle, meskipun Anda mengetahui bahwa masalahnya ada di Kerberos.NET. Dukungan Oracle akan bekerja dengan Microsoft secara langsung jika masalahnya ada di Kerberos.NET. Microsoft akan menutup kasus dukungan yang dibuat langsung dengan Microsoft untuk Kerberos.NET.
Ringkasnya: Repo ini TIDAK didukung secara resmi oleh Microsoft, meskipun faktanya beberapa karyawan Microsoft mungkin mengelola dan berkontribusi di dalamnya. Mereka melakukannya di waktu luang, atau sebagian sebagai waktu kerja untuk penggunaan internal, tanpa SLA apa pun dari Microsoft (atau dari karyawan Microsoft). Penggunaan ODP.NET pada Kerberos.NET hanya didukung melalui Dukungan Oracle.
Pustaka bawaan .NET yang memungkinkan Anda mengoperasikan pesan Kerberos. Anda dapat menjalankan klien, menghosting KDC Anda sendiri, atau sekadar memvalidasi tiket masuk. Ini dimaksudkan untuk menjadi seringan mungkin.
Penjelasan mendalam tentang desain Kerberos.NET tersedia dan layak untuk dibaca.
Proyek ini pada dasarnya adalah sebuah perpustakaan, tetapi juga mencakup sekumpulan alat berguna yang membungkus perpustakaan untuk membantu membangun aplikasi dan memecahkan masalah Kerberos.
Anda dapat menemukan penginstal ekstensi Fiddler di bawah rilis di sisi kanan halaman ini. Untuk informasi lebih lanjut, baca tulisan tentang cara menginstal dan menggunakannya.
Alat baris perintah Bruce adalah kumpulan utilitas yang memungkinkan Anda berinteraksi dengan komponen perpustakaan Kerberos.NET dan tersedia melalui dotnet tool install bruce -g
. Ini mencakup alat yang berguna untuk hal-hal seperti cache tiket dan manajemen tab kunci. Ini juga mencakup utilitas Dekoder Tiket yang disebutkan di bawah. Alat ini kurang lebih mengikuti standar baris perintah MIT dan Heimdal, tetapi untuk informasi lebih lanjut tentang semua alat dalam suite, ketik help
dari baris perintah Bruce.
Lihat postingan blog ini tentang cara menggunakan alat ini.
Lihat dan ubah file konfigurasi krb5.
Dekode Kerberos/Negosiasi tiket dan opsional dekripsi jika Anda mengetahui rahasianya.
Hapus semua file cache tiket.
Otentikasi pengguna dan minta TGT dengan banyak opsi yang tersedia untuk permintaan tersebut.
Lihat semua tiket dalam cache dan opsional minta lebih banyak tiket.
Kirim "ping" AS-REQ ke KDC untuk pengguna saat ini atau yang disediakan guna mendapatkan metadata bagi pengguna tersebut.
Melihat dan memanipulasi file keytab dengan dukungan untuk pemecahan masalah.
Minta tiket untuk pengguna saat ini dan format detailnya dengan cara yang berguna.
Alat ini menampilkan pesan logging yang berguna jika Anda meneruskan parameter baris perintah /verbose
.
Pustaka akan berfungsi pada semua platform .NET Standard 2.0 yang didukung dengan beberapa peringatan.
Ada dua cara untuk menggunakan perpustakaan ini. Yang pertama adalah mengunduh kode dan membuatnya secara lokal. Pilihan kedua yang lebih baik adalah menggunakan nuget saja.
PM> Instal-Paket Kerberos.NET
Ada tiga cara Anda dapat menggunakan perpustakaan ini.
Klien sengaja dibuat sederhana dibandingkan dengan klien yang ditemukan di platform lain. Ini berfitur lengkap dan mendukung pembuatan pesan SPNEgo.
var klien = new KerberosClient();var kerbCred = new KerberosPasswordCredential("[email protected]", "userP@ssw0rd!");await client.Authenticate(kerbCred);var tiket = menunggu klien.GetServiceTicket("host/appservice .corp.identityintervention.com");var header = "Negosiasi " + Konversi.ToBase64String(tiket.EncodeGssApi().ToArray());
Menghosting KDC sedikit lebih rumit karena memerlukan mendengarkan pada port tertentu. Biasanya Anda mendengarkan di port 88.
var port = 88;var options = new ListenerOptions{ListeningOn = new IPEndPoint(IPAddress.Loopback, port),DefaultRealm = "corp.identityintervention.com".ToUpper(),RealmLocator = realmName => new MyRealmService(realmName)};var pendengar = new KdcServiceListener(options);menunggu pendengar.Start();
Pendengar akan menunggu hingga listener.Stop()
dipanggil (atau dibuang).
Otentikasi tiket terjadi dalam dua tahap. Tahap pertama memvalidasi kebenaran tiket melalui IKerberosValidator
dengan implementasi default KerberosValidator
. Tahap kedua melibatkan konversi tiket menjadi ClaimsIdentity
yang dapat digunakan (khusus KerberosIdentity : ClaimsIdentity
), yang terjadi di KerberosAuthenticator
.
Cara termudah untuk memulai adalah dengan membuat KerberosAuthenticator
baru dan memanggil Authenticate
. Jika Anda perlu mengubah perilaku konversi, Anda dapat melakukannya dengan mengganti metode ConvertTicket(DecryptedData data)
.
var authenticator = new KerberosAuthenticator(new KeyTable(File.ReadAllBytes("sample.keytab")));var identitas = authenticator.Authenticate("YIIHCAYGKwYBBQUCoIIG...");Assert.IsNotNull(identity);var name = identitas.Name ;Assert.IsFalse(string.IsNullOrWhitespace(nama));
Perhatikan bahwa parameter konstruktor untuk pengautentikasi adalah KeyTable
. KeyTable
adalah format umum yang digunakan untuk menyimpan kunci di platform lain. Anda dapat menggunakan file yang dibuat oleh alat seperti ktpass
, atau Anda dapat meneruskan KerberosKey
selama pembuatan instance dan itu akan memiliki efek yang sama.
Paket nuget umumnya akan selalu diperbarui dengan perubahan apa pun pada perpustakaan inti.
Hei, itu berhasil! Cukup tambahkan paket nuget sebagai referensi dan lanjutkan.
Informasi Lebih Lanjut
Direktori Aktif memerlukan identitas yang cocok dengan domain tempat token dikirim. Identitas ini dapat berupa pengguna atau objek komputer apa pun di Direktori Aktif, namun perlu dikonfigurasi dengan benar. Artinya memerlukan Nama Prinsipal Layanan (SPN). Anda dapat menemukan petunjuk tentang menyiapkan pengguna uji di sini.
Direktori Aktif telah mendukung klaim sejak Server 2012. Saat itu Anda hanya dapat mengakses klaim melalui prinsipal Windows atau sihir gelap ADFS. Kerberos.NET sekarang mendukung penguraian klaim di tiket kerberos. Lihat Panduan Klaim untuk informasi lebih lanjut tentang pengaturan ini.
Kerberos.NET mendukung format file KeyTable (keytab) untuk meneruskan kunci yang digunakan untuk mendekripsi dan memvalidasi tiket Kerberos. Format file keytab adalah format umum yang digunakan oleh banyak platform untuk menyimpan kunci. Anda dapat menghasilkan file-file ini di Windows dengan menggunakan utilitas baris perintah ktpass
, yang merupakan bagian dari paket Alat Administrasi Server Jarak Jauh (RSAT). Anda dapat menginstalnya di server melalui PowerShell (atau melalui dialog tambahkan komponen Windows):
Tambahkan-WindowsFeature RSAT
Dari sana Anda dapat menghasilkan file keytab dengan menjalankan perintah berikut:
ktpass /princ HTTP/[email protected] /mapuser IDENTITYINTERserver01$ /pass P@ssw0rd! /out sample.keytab /crypto semua /PTYPE KRB5_NT_SRV_INST /mapop set
Parameter princ
digunakan untuk menentukan PrincipalName yang dihasilkan, dan mapuser
yang digunakan untuk memetakannya ke pengguna di Direktori Aktif. Parameter crypto
menentukan algoritma mana yang harus menghasilkan entri.
Tiket AES didukung secara asli. Tidak perlu melakukan apa pun ekstra!
Ini juga sekarang mencakup dukungan untuk SHA256 dan SHA384 melalui RFC8009.
Untuk informasi lebih lanjut lihat FAST Armoring.
Saat ini hal ini tidak didukung, namun masih dalam rencana.
Anda dapat menambahkan dukungan Anda sendiri untuk algoritme lain seperti DES (tidak tahu mengapa Anda melakukannya, tapi...) di mana Anda mengaitkan tipe Enkripsi ke Func<> yang membuat dekripsi baru. Juga tidak ada yang menghentikan Anda untuk melakukan proses ini jika Anda mau.
KerberosRequest.RegisterDecryptor( Tipe Enkripsi.DES_CBC_MD5, (token) => DESMD5DecryptedData(token) baru);
Deteksi pemutaran ulang bawaan menggunakan MemoryCache
untuk menyimpan sementara referensi ke hash nonce tiket. Referensi ini dihapus ketika tiket habis masa berlakunya. Proses deteksi terjadi segera setelah dekripsi segera setelah nomor urut pengautentikasi tersedia.
Perhatikan bahwa logika deteksi bawaan tidak bekerja secara efektif ketika aplikasi dikelompokkan karena cache tidak dibagikan ke seluruh mesin. Implementasi bawaan menggunakan layanan dalam memori dan karenanya tidak dibagikan kepada siapa pun.
Anda perlu membuat cache yang dibagikan ke seluruh mesin agar dapat berfungsi dengan benar di lingkungan berkerumun. Hal ini telah sangat disederhanakan melalui layanan injeksi ketergantungan .NET Core yang baru. Yang perlu Anda lakukan hanyalah mendaftarkan implementasi IDistributedCache
. Anda dapat menemukan informasi lebih lanjut tentang hal itu di Microsoft Docs.
Jika Anda ingin menggunakan deteksi pemutaran ulang Anda sendiri, cukup implementasikan antarmuka ITicketReplayValidator
dan teruskan di konstruktor KerberosValidator
.
Ada sampelnya!
KerbCrypto Berjalan melalui 6 format token yang didukung.
rc4-kerberos-data
rc4-spnego-data
aes128-kerberos-data
aes128-spnego-data
aes256-kerberos-data
aes256-spnego-data
KerbTester Alat baris perintah yang digunakan untuk menguji tiket sebenarnya dan membuang hasil yang diurai.
KerberosMiddlewareEndToEndSample Sampel end-to-end yang menunjukkan bagaimana server meminta negosiasi dan respons browser yang ditiru.
KerberosMiddlewareSample Contoh middleware lulus/gagal sederhana yang menerjemahkan kode tiket jika ada, namun tidak pernah meminta untuk bernegosiasi.
KerberosWebSample Contoh proyek web yang dimaksudkan untuk dihosting di IIS yang meminta untuk bernegosiasi dan memvalidasi setiap tiket masuk dari browser.
Proyek ini memiliki Lisensi MIT. Lihat File Lisensi untuk lebih jelasnya. Lihat juga file Pemberitahuan untuk informasi lebih lanjut tentang lisensi proyek tempat bergantungnya.
Perpustakaan ini dilengkapi dengan utilitas opsional untuk memecahkan kode tiket layanan. Sangat mudah untuk digunakan. Cukup salin salinan tiket yang dikodekan Base64 ke kotak teks kiri. Ini akan memecahkan kode pesan yang tidak terenkripsi jika Anda tidak memberikan kunci. Ini akan mencoba mendekripsi pesan jika Anda memberikan kunci. Anda tidak perlu memberikan nilai host jika tiket dienkripsi menggunakan RC4, namun memerlukan nilai host jika dienkripsi dengan AES (untuk mendapatkan garam). Alternatifnya, Anda juga dapat menyertakan file keytab jika Anda juga memilikinya.
Anda dapat meluncurkannya menggunakan alat Bruce dengan bruce kdecode
.
Dekoder akan mengubah tiket Kerberos menjadi tampilan pohon terstruktur. Prosesnya adalah Kerberos ASN.1 => JSON() => Rendering Tree View. Inilah JSON perantara yang menampilkan semua informasi yang tersedia untuk Anda di tiket.
{ "Permintaan": {"KrbApReq": { "ProtocolVersionNumber": 5, "MessageType": "KRB_AP_REQ", "ApOptions": "Reserved", "Ticket": {"TicketNumber": 5,"Realm": "CORP. IDENTITYINTERVENTION.COM","SName": { "FullyQualifiedName": "desktop-h71o9uu", "IsServiceName": salah, "Jenis": "NT_PRINCIPAL", "Nama": ["desktop-h71o9uu" ]},"EncryptedPart": { "EType": "AES256_CTS_HMAC_SHA1_96", "KeyVersionNumber": 3, "Cipher": "Vo4uodU2...snip...XBwjmsshgyjs+Vr+A=="} }, "Authenticator": {"EType": "AES256_CTS_HMAC_SHA1_96","KeyVersionNumber": null,"Cipher": "NnLmEFkmO3HXCS...snip...up0YmNW5AicQVvvk" }},"KrbApRep": null }, "Didekripsi": {"Options": "Reserved","EType": "AES256_CTS_HMAC_SHA1_96","SName": { "FullyQualifiedName": "desktop-h71o9uu", "IsServiceName": false, "Type": "NT_PRINCIPAL", "Nama": ["desktop-h71o9uu" ]},"Authenticator": { "AuthenticatorVersionNumber": 5, "Realm": "CORP.IDENTITYINTERVENTION.COM", "CName": {"FullyQualifiedName": "jack","IsServiceName": false,"Type": "NT_PRINCIPAL","Name": [ "jack"] }, "Checksum": {"Jenis": "32771","Checksum": "EAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8QAAA" }, "CuSec": 305, "CTime": "21-04-2021T17:38:11+00:00", "Subkunci": {"Penggunaan": "Tidak Diketahui","EType": "AES256_CTS_HMAC_SHA1_96"," Nilai Kunci": "nPIQrMQu/tpUV3dmeIJYjdUCnpg0sVDjFGHt8EK94EM=" }, "SequenceNumber": 404160760, "AuthorizationData": [{ "Type": "AdIfRelevant", "Data": "MIHTMD+gBAICAI2hNwQ1M...snip...BJAE8ATgAuAEMATwBNAA=="} ]},"Ticket": { "Flags": ["EncryptedPreAuthentication","PreAuthenticated","Renewable","Forwardable" ], "Kunci": {"Usage": "Tidak Diketahui","EType": "AES256_CTS_HMAC_SHA1_96" ,"Nilai Kunci": "gXZ5AIsNAdQSo/qdEzkfw3RrLhhypyuG+YcZwqdX9mk=" }, "CRealm": "CORP.IDENTITYINTERVENTION.COM", "CName": {"FullyQualifiedName": "jack","IsServiceName": false,"Type": "NT_PRINCIPAL"," Nama": [ "jack"] }, "Transit": {"Jenis": "DomainX500Compress","Isi": "" }, "AuthTime": "21-04-2021T17:24:53+00:00", "StartTime": "21-04-2021T17:38:11+00:00 ", "Waktu Berakhir": "22-04-2021T03:24:53+00:00", "RenewTill": "28-04-2021T17:24:53+00:00", "CADdr": null, "AuthorizationData": [{ "Type": "AdIfRelevant", "Data": "MIIDIjCCAx6gBAICAIChg...snip ...muoGI9Mcg0="},{ "Jenis": "AdIfRelevan", "Data": "MF0wP6AEAgIAj...snip...AXg9hCAgAACTDBBAAAAAA="} ]},"DelegationTicket": null,"SessionKey": { "Penggunaan": null, "EncryptionType": "AES256_CTS_HMAC_SHA1_96", "Host": null, "PrincipalName" : null, "Versi": null, "Salt": "", "Kata Sandi": null, "IterationParameter": "", "PasswordBytes": "", "SaltFormat": "ActiveDirectoryService", "RequiresDerivation": false},"Skew": "00:05:00" }, "Dihitung": {"Name": "[email protected]","Restrictions": { "KerbAuthDataTokenRestrictions": [{ "RestrictionType": 0, "Restriction": {"Flags": "Full"," TokenIntegrityLevel": "Tinggi","MachineId": "Txr82+sI2kbFmPnkrjldLUfESt/oJzLaWWNqCkOgC7I=" }, "Type": "KerbAuthDataTokenRestrictions"},{ "RestrictionType": 0, "Restriction": {"Flags": "Penuh","TokenIntegrityLevel": "Tinggi","MachineId" : "Txr82+sI2kbFmPnkrjldLUfESt/oJzLaWWNqCkOgC7I=" }, "Jenis": "KerbAuthDataTokenRestrictions"} ], "KerbLocal": [{ "Nilai": "EBeD2EICAAAJMMEEAAAAAA==", "Jenis": "KerbLocal"},{ "Nilai": "EBeD2EICAAJMMEEAAAAAA==", "Jenis": "KerbLocal"} ], "KerbApOptions": [{ "Opsi": "ChannelBindingSupported", "Jenis": "KerbApOptions"} ], "KerbServiceTarget": [{ "NamaLayanan": "[email protected]", "Jenis": "KerbServiceTarget"} ], "AdWin2kPac": [{ "Mode": "Server", "DecodingErrors": [], "Versi": 0, "LogonInfo": {"PacType": "LOGON_INFO","LogonTime": "21-04-2021T17:24:53.4021307+00:00","Waktu Keluar": "0001-01-01T00:00:00+00:00","KickOffTime": "0001-01-01T00:00:00+00:00","PwdLastChangeTime": "14-01-2021T23:55:39.0024458 +00:00","PwdCanChangeTime": "2021-01-15T23:55:39.0024458+00:00","PwdMustChangeTime": "0001-01-01T00:00:00+00:00","UserName": "jack","UserDisplayName": "Jack Handey","LogonScript": "","ProfilePath": "","HomeDirectory": "","HomeDrive": "","LogonCount": 99,"BadPasswordCount": 0,"UserId": 1126,"GroupId": 513,"GroupCount": 6,"GroupIds": [ {"RelativeId": 1132,"Atribut": [ "SE_GROUP_MANDATORY", "SE_GROUP_ENABLED_BY_DEFAULT", "SE_GROUP_ENABLED"] }, {"RelativeId": 1131,"Atribut": [ "SE_GROUP_MANDATORY", "SE_GROUP_ENABLED_BY_DEFAULT", "SE_GROUP_ENABLED"] }, {"RelativeId": 1128,"Atribut": [ "SE_GROUP_MANDATORY", "SE_GROUP_ENABLED_BY_DEFAULT", "SE_GROUP_ENABLED"] }, {"RelativeId": 1130,"Attributes": [ "SE_GROUP_MANDATORY", "SE_GROUP_ENABLED_BY_DEFAULT", "SE_GROUP_ENABLED"] }, {"RelativeId": 513,"Atribut": [ "SE_GROUP_MANDATORY", "SE_GROUP_ENABLED_BY_DEFAULT", "SE_GROUP_ENABLED"] }, {"RelativeId": 1129,"Atribut": [ "SE_GROUP_MANDATORY", "SE_GROUP_ENABLED_BY_DEFAULT", "SE_GROUP_ENABLED"] }],"UserFlags": "LOGON_EXTRA_SIDS","UserSessionKey": "AAAAAAAAAAAAAAAAAAAAAA==","ServerName": "DC01u0000","DomainName": "CORPu0000","DomainId": "S-1-5-21-311626132-1109945507-1757856464","Reserved1": "AAAAAAAAAAAA=","UserAccountControl": [ "ADS_UF_LOCKOUT", "ADS_UF_NORMAL_ACCOUNT"],"SubAuthStatus": 0,"LastSuccessfulILogon": "1601-01-01T00:00:00+00:00","LastFailedILogon": "1601-01-01T00:00:00+00:00","FailedILogonCount": 0,"Reserved3": 0,"ExtraSidCount ": 1,"ExtraIds": [ {"Sid": "S-1-18-1","Atribut": [ "SE_GROUP_MANDATORY", "SE_GROUP_ENABLED_BY_DEFAULT", "SE_GROUP_ENABLED"] }],"ResourceDomainId": null,"ResourceGroupCount": 0,"ResourceGroupIds": null,"UserSid ": { "Id": 1126, "Atribut": "0", "Nilai": "S-1-5-21-311626132-1109945507-1757856464-1126"},"GroupSid": { "Id": 513, "Atribut": "0", "Nilai": "S-1-5-21-311626132-1109945507-1757856464-513"},"GroupSids": [ {"Id": 1132,"Atribut": [ "SE_GROUP_MANDATORY", "SE_GROUP_ENABLED_BY_DEFAULT", "SE_GROUP_ENABLED"]," Nilai": "S-1-5-21-311626132-1109945507-1757856464-1132" }, {"Id": 1131,"Atribut": [ "SE_GROUP_MANDATORY", "SE_GROUP_ENABLED_BY_DEFAULT", "SE_GROUP_ENABLED"],"Nilai": "S-1-5-21-311626132-1109945507-1757856464-1131" }, {"Id": 1128,"Atribut": [ "SE_GROUP_MANDATORY", "SE_GROUP_ENABLED_BY_DEFAULT", "SE_GROUP_ENABLED"],"Nilai": "S-1-5-21-311626132-1109945507-1757856464-1128" }, {"Id": 1130,"Atribut": [ "SE_GROUP_MANDATORY", "SE_GROUP_ENABLED_BY_DEFAULT", "SE_GROUP_ENABLED"],"Nilai": "S-1-5-21-311626132-1109945507-1757856464-1130" }, {"Id": 513,"Atribut": [ "SE_GROUP_MANDATORY", "SE_GROUP_ENABLED_BY_DEFAULT", "SE_GROUP_ENABLED"],"Nilai": "S-1-5-21-311626132-1109945507-1757856464-513" }, {"Id": 1129,"Atribut": [ "SE_GROUP_MANDATORY", "SE_GROUP_ENABLED_BY_DEFAULT", "SE_GROUP_ENABLED"],"Nilai": "S-1-5-21-311626132-1109945507-1757856464-1129" }],"ExtraSids": [ {"Id": 1,"Atribut": "0","Nilai": "S-1-18 -1" }],"ResourceDomainSid": null,"ResourceGroups": [],"DomainSid": { "Id": 1757856464, "Atribut": "0", "Nilai": "S-1-5-21-311626132-1109945507-1757856464"} }, "ServerSignature": {"Jenis": "HMAC_SHA1_96_AES256"," Tanda tangan": "Q0gnRmxBoh5w0DzS","RODCIdentifier": 0,"PacType": "0" }, "CredentialType": null, "KdcSignature": {"Type": "HMAC_SHA1_96_AES256","Signature": "HVsreq5rqBiPTHIN","RODCIdentifier": 0,"PacType": "0" }, "ClientClaims": null, "DeviceClaims": null, "ClientInformation": {"ClientId": "21-04-2021T17:24:53+00:00","Nama": "jack","PacType": " CLIENT_NAME_TICKET_INFO" }, "UpnDomainInformation": {"Upn": "[email protected]","Domain": "CORP.IDENTITYINTERVENTION.COM","Flags": "0","PacType": "UPN_DOMAIN_INFO" }, "DelegationInformation": null, "HasRequiredFields": true, "Type": "AdWin2kPac"} ]},"ValidationMode ": "Pac","Klaim": [ {"Jenis": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/sid","Nilai": "S-1-5-21-311626132-1109945507-1757856464-1126" }, {"Jenis ": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname","Value": "Jack Handey" }, {"Type": "http://schemas.xmlsoap.org/ ws/2005/05/identity/claims/nameidentifier","Value": "[email protected]" }, {"Jenis": "http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid","Value": "S-1-5-21-311626132-1109945507-1757856464-1132" }, {"Jenis ": "http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid","Value": "S-1-5-21-311626132-1109945507-1757856464-1131" }, {"Jenis ": "http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid","Value": "S-1-5-21-311626132-1109945507-1757856464-1128" }, {"Jenis ": "http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid","Value": "S-1-5-21-311626132-1109945507-1757856464-1130" }, {"Jenis ": "http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid","Value": "S-1-5-21-311626132-1109945507-1757856464-513" }, {"Jenis ": "http://schemas.microsoft.com/ws/2008/06/identity/claims/role","Value": "Pengguna Domain" }, {"Type": "http://schemas.microsoft.com/ ws/2008/06/identitas/klaim/groupsid","Nilai": "S-1-5-21-311626132-1109945507-1757856464-1129" }, {"Type": "http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid","Nilai ": "S-1-18-1" }] }, "KeyTable": {"FileVersion": 2,"KerberosVersion": 5,"Entries": [ {"EncryptionType": "NULL","Length": 0,"Timestamp": "21-04-2021T23:52: 22.5460123+00:00","Versi": 5,"Host": null,"PasswordBytes": "jBBI1KL19X3olbCK/f9p/+cxZi3RnqqQRH4WawB4EzY=","KeyPrincipalName": { "Realm": "CORP.IDENTITYINTERVENTION.COM", "Nama": ["STEVE-HOME" ], "NameType": "NT_SRV_HST", "FullyQualifiedName" : "STEVE-HOME"},"Garam": null }] }}