Eine vollständige Kerberos-Bibliothek, die vollständig in verwaltetem Code ohne (viele) Betriebssystemabhängigkeiten erstellt wurde.
Dieses Projekt wird von der .NET Foundation unterstützt.
Diese Bibliothek wird NICHT offiziell von Microsoft unterstützt. Wenn Sie es über ODP.NET von Oracle verwenden, wird Kerberos.NET nur über den Oracle-Support unterstützt. Sie müssen sich an den Oracle-Support wenden, auch wenn Sie wissen, dass das Problem bei Kerberos.NET liegt. Oracle Support arbeitet direkt mit Microsoft zusammen, wenn das Problem in Kerberos.NET besteht. Microsoft wird direkt bei Microsoft erstellte Supportfälle für Kerberos.NET schließen.
Zusammenfassend: Dieses Repo wird NICHT offiziell von Microsoft unterstützt, obwohl einige Microsoft-Mitarbeiter es möglicherweise verwalten und dazu beitragen. Sie tun dies entweder in ihrer Freizeit oder teilweise als Arbeitszeit für den internen Gebrauch, ohne SLA von Microsoft (oder von Microsoft-Mitarbeitern). Die ODP.NET-Nutzung von Kerberos.NET wird nur über den Oracle-Support unterstützt.
Eine in .NET integrierte Bibliothek, mit der Sie Kerberos-Nachrichten bearbeiten können. Sie können einen Client betreiben, Ihr eigenes KDC hosten oder einfach eingehende Tickets validieren. Es soll so leicht wie möglich sein.
Ein tiefer Einblick in das Design von Kerberos.NET ist verfügbar und eine Lektüre wert.
Bei diesem Projekt handelt es sich in erster Linie um eine Bibliothek, es enthält aber auch eine Reihe nützlicher Tools, die die Bibliothek umschließen und dabei helfen, Anwendungen zu erstellen und Kerberos-Probleme zu beheben.
Sie finden das Fiddler-Erweiterungsinstallationsprogramm unter „Releases“ auf der rechten Seite dieser Seite. Weitere Informationen finden Sie in einem Artikel zur Installation und Verwendung.
Das Bruce-Befehlszeilentool ist eine Sammlung von Dienstprogrammen, die Ihnen die Interaktion mit den Komponenten der Kerberos.NET-Bibliothek ermöglichen und ist über das dotnet tool install bruce -g
verfügbar. Es enthält nützliche Tools für Dinge wie Ticket-Cache und Keytab-Verwaltung. Es enthält auch das unten erwähnte Dienstprogramm Ticket Decoder. Das Tool folgt mehr oder weniger den Befehlszeilenstandards MIT und Heimdal, aber für weitere Informationen zu allen Tools in der Suite geben Sie help
über die Bruce-Befehlszeile ein.
In diesem Blogbeitrag erfahren Sie, wie Sie das Tool verwenden.
krb5-Konfigurationsdateien anzeigen und ändern.
Kerberos/Negotiate-Tickets entschlüsseln und optional entschlüsseln, wenn Sie die Geheimnisse kennen.
Löschen Sie alle Ticket-Cache-Dateien.
Authentifizieren Sie einen Benutzer und fordern Sie ein TGT mit einer Reihe verfügbarer Optionen für die Anfrage an.
Sehen Sie sich alle Tickets in einem Cache an und fordern Sie optional weitere Tickets an.
Senden Sie einen AS-REQ-„Ping“ an einen KDC für den aktuellen oder angegebenen Benutzer, um Metadaten für den Benutzer abzurufen.
Anzeigen und Bearbeiten von Keytab-Dateien mit Unterstützung zur Fehlerbehebung.
Fordern Sie ein Ticket für den aktuellen Benutzer an und formatieren Sie die Details sinnvoll.
Das Tool stellt nützliche Protokollierungsmeldungen bereit, wenn Sie den Befehlszeilenparameter /verbose
übergeben.
Die Bibliothek funktioniert mit einigen Einschränkungen auf allen unterstützten .NET Standard 2.0-Plattformen.
Es gibt zwei Möglichkeiten, wie Sie diese Bibliothek nutzen können. Die erste besteht darin, den Code herunterzuladen und lokal zu erstellen. Die zweite, bessere Option besteht darin, einfach Nuget zu verwenden.
PM> Install-Paket Kerberos.NET
Es gibt drei Möglichkeiten, diese Bibliothek zu nutzen.
Der Client ist im Vergleich zu Clients auf anderen Plattformen bewusst einfach gehalten. Es verfügt über alle Funktionen und unterstützt die Generierung von SPNego-Nachrichten.
var client = new KerberosClient();var kerbCred = new KerberosPasswordCredential("[email protected]", "userP@ssw0rd!");await client.Authenticate(kerbCred);var ticket = waiting client.GetServiceTicket("host/appservice .corp.identityintervention.com");var header = "Negotiate " + Convert.ToBase64String(ticket.EncodeGssApi().ToArray());
Das Hosten eines KDC ist etwas komplizierter, da es das Abhören eines bestimmten Ports erfordert. Normalerweise hört man auf 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 listener = new KdcServiceListener(options);await listener.Start();
Der Listener wartet, bis listener.Stop()
aufgerufen (oder entsorgt) wird.
Die Ticketauthentifizierung erfolgt in zwei Schritten. In der ersten Phase wird das Ticket über einen IKerberosValidator
mit einer Standardimplementierung von KerberosValidator
auf Richtigkeit validiert. Die zweite Stufe umfasst die Konvertierung des Tickets in eine verwendbare ClaimsIdentity
(insbesondere eine KerberosIdentity : ClaimsIdentity
), die im KerberosAuthenticator
auftritt.
Der einfachste Einstieg besteht darin, einen neuen KerberosAuthenticator
zu erstellen und Authenticate
aufzurufen. Wenn Sie das Verhalten der Konvertierung optimieren müssen, können Sie dies tun, indem Sie die Methode ConvertTicket(DecryptedData data)
überschreiben.
var Authenticator = new KerberosAuthenticator(new KeyTable(File.ReadAllBytes("sample.keytab")));var Identity = Authenticator.Authenticate("YIIHCAYGKwYBBQUCoIIG...");Assert.IsNotNull(Identity);var Name = Identity.Name ;Assert.IsFalse(string.IsNullOrWhitespace(name));
Beachten Sie, dass der Konstruktorparameter für den Authentifikator ein KeyTable
ist. Die KeyTable
ist ein gängiges Format zum Speichern von Schlüsseln auf anderen Plattformen. Sie können entweder eine Datei verwenden, die von einem Tool wie ktpass
erstellt wurde, oder Sie können während der Instanziierung einfach einen KerberosKey
übergeben und es wird den gleichen Effekt haben.
Die Nuget-Pakete werden im Allgemeinen bei allen Änderungen an der Kernbibliothek auf dem neuesten Stand gehalten.
Hey, es funktioniert! Fügen Sie einfach das Nuget-Paket als Referenz hinzu und legen Sie los.
Weitere Informationen
Für Active Directory muss eine Identität vorhanden sein, die mit der Domäne übereinstimmt, an die das Token gesendet wird. Diese Identität kann ein beliebiger Benutzer oder ein Computerobjekt in Active Directory sein, sie muss jedoch korrekt konfiguriert sein. Dies bedeutet, dass ein Service Principal Name (SPN) erforderlich ist. Eine Anleitung zum Einrichten eines Testbenutzers finden Sie hier.
Active Directory unterstützt Ansprüche seit Server 2012. Damals konnte man nur über Windows-Prinzipale oder ADFS Dark Magic auf die Ansprüche zugreifen. Kerberos.NET unterstützt jetzt nativ das Parsen von Ansprüchen in Kerberos-Tickets. Weitere Informationen zur Einrichtung finden Sie im Schadensleitfaden.
Kerberos.NET unterstützt das Dateiformat KeyTable (Keytab) zur Übergabe der Schlüssel, die zum Entschlüsseln und Validieren von Kerberos-Tickets verwendet werden. Das Keytab-Dateiformat ist ein gängiges Format, das von vielen Plattformen zum Speichern von Schlüsseln verwendet wird. Sie können diese Dateien unter Windows mit dem Befehlszeilendienstprogramm ktpass
generieren, das Teil des Remote Server Administration Tools (RSAT)-Pakets ist. Sie können es über PowerShell (oder über das Dialogfeld „Windows-Komponenten hinzufügen“ hinzufügen) auf einem Server installieren:
Add-WindowsFeature RSAT
Von dort aus können Sie die Keytab-Datei generieren, indem Sie den folgenden Befehl ausführen:
ktpass /princ HTTP/[email protected] /mapuser IDENTITYINTERserver01$ /pass P@ssw0rd! /out sample.keytab /crypto all /PTYPE KRB5_NT_SRV_INST /mapop set
Der Parameter princ
wird verwendet, um den generierten PrincipalName anzugeben, und mapuser
, der verwendet wird, um ihn dem Benutzer in Active Directory zuzuordnen. Der crypto
Parameter gibt an, welche Algorithmen Einträge generieren sollen.
AES-Tickets werden nativ unterstützt. Sie müssen nichts extra tun!
Dazu gehört jetzt auch die Unterstützung von SHA256 und SHA384 über RFC8009.
Weitere Informationen finden Sie unter FAST Armoring.
Dies wird derzeit nicht unterstützt, steht aber auf der Roadmap.
Sie können Ihre eigene Unterstützung für andere Algorithmen wie DES hinzufügen (ich weiß nicht, warum Sie das tun würden, aber ...), indem Sie einem Func<> einen Verschlüsselungstyp zuordnen, der neue Entschlüsseler instanziiert. Wenn Sie möchten, hindert Sie auch nichts daran, diesen Prozess zu starten.
KerberosRequest.RegisterDecryptor( EncryptionType.DES_CBC_MD5, (Token) => new DESMD5DecryptedData(token));
Die integrierte Replay-Erkennung verwendet einen MemoryCache
, um Referenzen auf Hashes der Ticket-Nonces vorübergehend zu speichern. Diese Referenzen werden entfernt, wenn das Ticket abläuft. Der Erkennungsprozess erfolgt direkt nach der Entschlüsselung, sobald die Authentifikatorsequenznummer verfügbar ist.
Beachten Sie, dass die integrierte Erkennungslogik nicht effektiv funktioniert, wenn die Anwendung geclustert ist, da der Cache nicht von allen Computern gemeinsam genutzt wird. Die integrierte Implementierung verwendet einen In-Memory-Dienst und wird daher mit niemandem geteilt.
Damit dies in einer Clusterumgebung ordnungsgemäß funktioniert, müssen Sie einen Cache erstellen, der von allen Computern gemeinsam genutzt wird. Dies wurde durch die neuen .NET Core-Abhängigkeitsinjektionsdienste erheblich vereinfacht. Sie müssen lediglich eine IDistributedCache
-Implementierung registrieren. Weitere Informationen hierzu finden Sie in den Microsoft-Dokumenten.
Wenn Sie Ihre eigene Wiedergabeerkennung verwenden möchten, implementieren Sie einfach die ITicketReplayValidator
Schnittstelle und übergeben Sie sie im KerberosValidator
-Konstruktor.
Es gibt Muster!
KerbCrypto läuft über die 6 unterstützten Tokenformate.
rc4-kerberos-daten
rc4-spnego-data
aes128-kerberos-daten
aes128-spnego-data
aes256-kerberos-daten
aes256-spnego-data
KerbTester Ein Befehlszeilentool, mit dem echte Tickets getestet und die analysierten Ergebnisse ausgegeben werden.
KerberosMiddlewareEndToEndSample Ein End-to-End-Beispiel, das zeigt, wie der Server zur Aushandlung auffordert und wie der emulierte Browser reagiert.
KerberosMiddlewareSample Ein einfaches Pass/Fail-Middleware-Beispiel, das ein Ticket dekodiert, falls vorhanden, ansonsten aber nie zur Aushandlung auffordert.
KerberosWebSample Ein Beispiel-Webprojekt, das in IIS gehostet werden soll und zur Aushandlung auffordert und alle vom Browser eingehenden Tickets validiert.
Dieses Projekt verfügt über eine MIT-Lizenz. Weitere Einzelheiten finden Sie in der Lizenzdatei. Weitere Informationen zu den Lizenzen der Projekte, von denen dies abhängt, finden Sie auch in der Datei „Hinweise“.
Diese Bibliothek verfügt über ein optionales Dienstprogramm zum Dekodieren von Servicetickets. Es ist einfach zu bedienen. Kopieren Sie einfach die Base64-codierte Kopie des Tickets in das linke Textfeld. Wenn Sie keinen Schlüssel angeben, wird die unverschlüsselte Nachricht entschlüsselt. Es wird versucht, die Nachricht zu entschlüsseln, wenn Sie einen Schlüssel angeben. Sie müssen keinen Hostwert angeben, wenn das Ticket mit RC4 verschlüsselt wurde, aber es benötigt einen Hostwert, wenn es mit AES verschlüsselt ist (um den Salt abzuleiten). Alternativ können Sie auch eine Keytab-Datei hinzufügen, falls Sie diese auch haben.
Sie können es mit dem Bruce-Tool mit bruce kdecode
starten.
Der Decoder wandelt das Kerberos-Ticket in eine strukturierte Baumansicht um. Der Prozess ist Kerberos ASN.1 => JSON () => Tree View-Rendering. Hier ist der Zwischen-JSON, der Ihnen alle im Ticket verfügbaren Informationen anzeigt.
{ „Request“: {“KrbApReq“: { „ProtocolVersionNumber“: 5, „MessageType“: „KRB_AP_REQ“, „ApOptions“: „Reserved“, „Ticket“: {“TicketNumber“: 5, „Realm“: „CORP. IDENTITYINTERVENTION.COM","SName": { "FullyQualifiedName": "desktop-h71o9uu", „IsServiceName“: false, „Type“: „NT_PRINCIPAL“, „Name“: [„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 }, „Entschlüsselt“: {“Optionen“: „Reserviert“, „EType“: „AES256_CTS_HMAC_SHA1_96“, „SName“: { „FullyQualifiedName“: „desktop-h71o9uu“, „IsServiceName“: false, „Typ“: „NT_PRINCIPAL“, „Name“: [„desktop-h71o9uu“ ]}, „Authenticator“: { „AuthenticatorVersionNumber“: 5, „Realm“: „CORP.IDENTITYINTERVENTION.COM“, „CName“: {“FullyQualifiedName“: „jack“, „IsServiceName“: false, „Type“: „NT_PRINCIPAL“, „Name“: [ „jack“] }, „Checksum“: {“Type“: „32771“, „Checksum“: „EAAAAAAAAAAAAAAAAAAAAAAAAA8QAAA“ }, „CuSec“: 305, „CTime“: „2021-04-21T17:38:11+00:00“, „Subkey“: {“Usage“: „Unknown“, „EType“: „AES256_CTS_HMAC_SHA1_96 ","Schlüsselwert": "nPIQrMQu/tpUV3dmeIJYjdUCnpg0sVDjFGHt8EK94EM=" }, "SequenceNumber": 404160760, "AuthorizationData": [{ "Type": "AdIfRelevant", "Data": "MIHTMD+gBAICAI2hNwQ1M...snip...BJAE8ATgAuAEMATwBNAA=="} ]},"Ticket": { "Flags": ["EncryptedPreAuthentication","PreAuthenticated","Renewable","Forwardable" ], "Key": {"Verwendung": "Unbekannt", "EType": „AES256_CTS_HMAC_SHA1_96“, „KeyValue“: „gXZ5AIsNAdQSo/qdEzkfw3RrLhhypyuG+YcZwqdX9mk=" }, „CRealm“: „CORP.IDENTITYINTERVENTION.COM“, „CName“: {“FullyQualifiedName“: „jack“, „IsServiceName“: false,“ Typ": „NT_PRINCIPAL“, „Name“: [ „jack“] }, „Transited“: {“Type“: „DomainX500Compress“, „Contents“: „“ }, „AuthTime“: „2021-04-21T17:24:53 +00:00", "StartTime": "2021-04-21T17:38:11+00:00", „EndTime“: „2021-04-22T03:24:53+00:00“, „RenewTill“: „2021-04-28T17:24:53+00:00“, „CAddr“: null, „AuthorizationData“: [{ "Type": "AdIfRelevant", "Data": "MIIDIjCCAx6gBAICAIChg...snip...muoGI9Mcg0="},{ "Type": "AdIfRelevant", "Data": "MF0wP6AEAgIAj...snip...AXg9hCAgAACTDBBAAAAAA="} ]},"DelegationTicket": null," SessionKey": { "Usage": null, "EncryptionType": „AES256_CTS_HMAC_SHA1_96“, „Host“: null, „PrincipalName“: null, „Version“: null, „Salt“: „“, „Password“: null, „IterationParameter“: „“, „PasswordBytes“: „“, „ SaltFormat": "ActiveDirectoryService", "RequiresDerivation": false},"Skew": "00:05:00" }, „Berechnet“: {“Name“: „[email protected]“, „Restrictions“: { „KerbAuthDataTokenRestrictions“: [{ „RestrictionType“: 0, „Restriction“: {“Flags“: „Full“, TokenIntegrityLevel“: „High“, „MachineId“: "Txr82+sI2kbFmPnkrjldLUfESt/oJzLaWWNqCkOgC7I=" }, "Type": "KerbAuthDataTokenRestrictions"},{ "RestrictionType": 0, "Restriction": {"Flags": "Full", "TokenIntegrityLevel": "High", "MachineId" : "Txr82+sI2kbFmPnkrjldLUfESt/oJzLaWWNqCkOgC7I=" }, "Type": "KerbAuthDataTokenRestrictions"} ], "KerbLocal": [{ "Value": "EBeD2EICAAAJMMEEAAAAAA==", "Type": "KerbLocal"},{ "Value": "EBeD2EICAAAJMMEEAAAAAA==", "Type": "KerbLocal"} ], "KerbApOptions": [{ "Options": "ChannelBindingSupported", "Type": "KerbApOptions"} ], "KerbServiceTarget": [{ "ServiceName": „[email protected]“, „Type“: „KerbServiceTarget“} ], „AdWin2kPac“: [{ „Mode“: „Server“, „DecodingErrors“: [], „Version“: 0, „LogonInfo“: {“PacType“: „LOGON_INFO“, „Anmeldezeit“: „2021-04-21T17:24:53.4021307+00:00“, „LogoffTime“: „0001-01-01T00:00:00+00:00“, „KickOffTime“: „0001-01-01T00:00:00 +00:00","PwdLastChangeTime": „2021-01-14T23: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,"Attributes": [ "SE_GROUP_MANDATORY", "SE_GROUP_ENABLED_BY_DEFAULT", "SE_GROUP_ENABLED"] }, {"RelativeId": 1131,"Attributes": [ "SE_GROUP_MANDATORY", "SE_GROUP_ENABLED_BY_DEFAULT", "SE_GROUP_ENABLED"] }, {"RelativeId": 1128,"Attribute": [ "SE_GROUP_MANDATORY", "SE_GROUP_ENABLED_BY_DEFAULT", "SE_GROUP_ENABLED"] }, {"RelativeId": 1130,"Attribute": [ "SE_GROUP_MANDATORY", "SE_GROUP_ENABLED_BY_DEFAULT", "SE_GROUP_ENABLED"] }, {"RelativeId": 513,"Attributes": [ "SE_GROUP_MANDATORY", "SE_GROUP_ENABLED_BY_DEFAULT", "SE_GROUP_ENABLED"] }, {"RelativeId": 1129, „Attribute“: [ „SE_GROUP_MANDATORY“, „SE_GROUP_ENABLED_BY_DEFAULT“, „SE_GROUP_ENABLED“] }], „UserFlags“: „LOGON_EXTRA_SIDS“, „UserSessionKey“: „AAAAAAAAAAAAAAAAAAAAAA==“, „ServerName“: „DC01u0000“, „Domänenname“. ": „CORPu0000“, „DomainId“: „S-1-5-21-311626132-1109945507-1757856464“, „Reserved1“: „AAAAAAAAAAA=“, „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", "Attributes": [ "SE_GROUP_MANDATORY", "SE_GROUP_ENABLED_BY_DEFAULT", "SE_GROUP_ENABLED"] }],"ResourceDomainId": null,"ResourceGroupCount ": 0,"ResourceGroupIds": null,"UserSid": { „Id“: 1126, „Attribute“: „0“, „Wert“: „S-1-5-21-311626132-1109945507-1757856464-1126“}, „GroupSid“: { „Id“: 513, „Attribute ": "0", "Wert": "S-1-5-21-311626132-1109945507-1757856464-513"},"GroupSids": [ {"Id": 1132,"Attributes": [ "SE_GROUP_MANDATORY", "SE_GROUP_ENABLED_BY_DEFAULT", "SE_GROUP_ENABLED"],"Value": "S-1-5-21-311626132-1109945507-1757856464-1132" }, {"Id": 1131,"Attributes": [ "SE_GROUP_MANDATORY", "SE_GROUP_ENABLED_BY_DEFAULT", "SE_GROUP_ENABLED"],"Value": "S-1-5-21-311626132-1109945507-1757856464-1131" }, {"Id": 1128,"Attributes": [ "SE_GROUP_MANDATORY", "SE_GROUP_ENABLED_BY_DEFAULT", "SE_GROUP_ENABLED"],"Value": "S-1-5-21-311626132-1109945507-1757856464-1128" }, {"Id": 1130,"Attributes": [ "SE_GROUP_MANDATORY", "SE_GROUP_ENABLED_BY_DEFAULT", "SE_GROUP_ENABLED"],"Value": "S-1-5-21-311626132-1109945507-1757856464-1130" }, {"Id": 513,"Attributes": [ "SE_GROUP_MANDATORY", "SE_GROUP_ENABLED_BY_DEFAULT", "SE_GROUP_ENABLED"],"Value": "S-1-5-21-311626132-1109945507-1757856464-513" }, {"Id": 1129,"Attributes": [ "SE_GROUP_MANDATORY", "SE_GROUP_ENABLED_BY_DEFAULT", "SE_GROUP_ENABLED"],"Value": "S-1-5-21-311626132-1109945507-1757856464-1129" }],"ExtraSids": [ {"Id": 1,"Attributes": "0"," Wert“: „S-1-18-1“ }],"ResourceDomainSid": null,"ResourceGroups": [],"DomainSid": { "Id": 1757856464, "Attributes": "0", "Value": "S-1-5-21-311626132- 1109945507-1757856464"} }, "ServerSignature": {"Type": "HMAC_SHA1_96_AES256", "Signature": "Q0gnRmxBoh5w0DzS", "RODCIdentifier": 0, "PacType": "0" }, "CredentialType": null, "KdcSignature": {"Type": "HMAC_SHA1_96_AES256" ,"Unterschrift": „HVsreq5rqBiPTHIN“, „RODCIdentifier“: 0, „PacType“: „0“ }, „ClientClaims“: null, „DeviceClaims“: null, „ClientInformation“: {“ClientId“: „2021-04-21T17:24:53 +00:00","Name": "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“, „Claims“: [ {„Type“: „http://schemas.xmlsoap.org/ws/2005/05/identity/claims/sid“, Wert": „S-1-5-21-311626132-1109945507-1757856464-1126“ }, {„Typ“: „http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname“, „Wert ": "Jack Handey" }, {"Typ": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier","Value": "[email protected]" }, {"Type": "http://schemas .microsoft.com/ws/2008/06/identity/claims/groupsid","Value": "S-1-5-21-311626132-1109945507-1757856464-1132" }, {"Typ": "http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid","Wert ": "S-1-5-21-311626132-1109945507-1757856464-1131" }, {"Typ": "http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid","Wert ": "S-1-5-21-311626132-1109945507-1757856464-1128" }, {"Typ": "http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid","Wert ": "S-1-5-21-311626132-1109945507-1757856464-1130" }, {"Typ": "http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid","Wert ": „S-1-5-21-311626132-1109945507-1757856464-513“ }, {“Typ“: „http://schemas.microsoft.com/ws/2008/06/identity/claims/role“, „Wert ": "Domänenbenutzer" }, {"Typ": "http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid","Value": "S-1-5-21-311626132-1109945507-1757856464-1129" }, {"Type ": „http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid“, „Value“: „S-1-18-1“ }] }, "KeyTable": {"FileVersion": 2,"KerberosVersion": 5,"Entries": [ {"EncryptionType": "NULL","Length": 0,"Timestamp": "2021-04-21T23:52: 22.5460123+00:00","Version": 5,"Host": null,"PasswordBytes": „jBBI1KL19X3olbCK/f9p/+cxZi3RnqqQRH4WawB4EzY=“, „KeyPrincipalName“: { „Realm“: „CORP.IDENTITYINTERVENTION.COM“, „Names“: [„STEVE-HOME“ ], „NameType“: „NT_SRV_HST“, „FullyQualifiedName“ : "STEVE-HOME"},"Salt": null }] }}