(많은) OS 종속성 없이 관리 코드로 완전히 구축된 완전한 Kerberos 라이브러리입니다.
이 프로젝트는 .NET Foundation에서 지원됩니다.
이 라이브러리는 Microsoft에서 공식적으로 지원하지 않습니다. Oracle의 ODP.NET을 통해 사용하는 경우 Kerberos.NET은 Oracle Support를 통해서만 지원됩니다. 문제가 Kerberos.NET에 있다는 것을 알고 있더라도 Oracle 지원 센터에 문의해야 합니다. Kerberos.NET에 문제가 있는 경우 Oracle 지원팀은 Microsoft와 직접 협력할 것입니다. Microsoft는 Kerberos.NET에 대해 Microsoft와 직접 작성한 지원 사례를 종료합니다.
요약: 이 리포지토리는 일부 Microsoft 직원이 이를 관리하고 기여하고 있음에도 불구하고 Microsoft에서 공식적으로 지원하지 않습니다. 그들은 Microsoft(또는 Microsoft 직원)의 SLA 없이 여가 시간이나 부분적으로 내부 사용을 위한 업무 시간으로 이 작업을 수행하고 있습니다. Kerberos.NET의 ODP.NET 사용은 Oracle Support를 통해서만 지원됩니다.
Kerberos 메시지에 대한 작업을 수행할 수 있도록 .NET에 내장된 라이브러리입니다. 클라이언트를 실행하거나, 자체 KDC를 호스팅하거나, 들어오는 티켓의 유효성을 검사할 수 있습니다. 최대한 가볍게 제작되었습니다.
Kerberos.NET 설계에 대한 심층적인 내용이 제공되며 읽어 볼 가치가 있습니다.
이 프로젝트는 주로 라이브러리이지만 응용 프로그램을 구축하고 Kerberos 문제를 해결하는 데 도움이 되는 라이브러리를 래핑하는 유용한 도구도 포함되어 있습니다.
이 페이지 오른쪽의 릴리스에서 Fiddler 확장 설치 프로그램을 찾을 수 있습니다. 자세한 내용은 설치 및 사용 방법에 대한 글을 읽어보세요.
Bruce 명령줄 도구는 Kerberos.NET 라이브러리 구성 요소와 상호 작용할 수 있게 해주는 유틸리티 컬렉션이며 dotnet tool install bruce -g
통해 사용할 수 있습니다. 여기에는 티켓 캐시 및 키탭 관리와 같은 유용한 도구가 포함되어 있습니다. 또한 아래에 언급된 티켓 디코더 유틸리티도 포함되어 있습니다. 이 도구는 MIT 및 Heimdal 명령줄 표준을 어느 정도 따르지만 제품군의 모든 도구에 대한 자세한 내용을 보려면 Bruce 명령줄에서 help
참조하세요.
도구 사용 방법은 이 블로그 게시물을 참조하세요.
krb5 구성 파일을 보고 수정합니다.
Kerberos/협상 티켓을 디코딩하고 비밀을 알고 있는 경우 선택적으로 암호를 해독합니다.
모든 티켓 캐시 파일을 삭제하세요.
사용자를 인증하고 요청에 사용 가능한 다양한 옵션을 사용하여 TGT를 요청합니다.
캐시에 있는 모든 티켓을 확인하고 선택적으로 추가 티켓을 요청하세요.
현재 또는 제공된 사용자에 대해 AS-REQ "ping"을 KDC에 보내 해당 사용자에 대한 메타데이터를 가져옵니다.
문제 해결을 지원하여 keytab 파일을 보고 조작합니다.
현재 사용자에 대한 티켓을 요청하고 유용한 방식으로 세부 정보 형식을 지정하세요.
/verbose
명령줄 매개변수를 전달하면 이 도구는 유용한 로깅 메시지를 표시합니다.
라이브러리는 몇 가지 주의 사항이 있지만 지원되는 모든 .NET Standard 2.0 플랫폼에서 작동합니다.
이 라이브러리를 사용하는 방법에는 두 가지가 있습니다. 첫 번째는 코드를 다운로드하여 로컬로 빌드하는 것입니다. 두 번째로 더 나은 옵션은 너겟을 사용하는 것입니다.
PM> 설치 패키지 Kerberos.NET
이 라이브러리를 사용할 수 있는 세 가지 방법이 있습니다.
클라이언트는 다른 플랫폼에 있는 클라이언트에 비해 의도적으로 단순합니다. 모든 기능을 갖추고 있으며 SPNego 메시지 생성을 지원합니다.
var client = new KerberosClient();var kerbCred = new KerberosPasswordCredential("[email protected]", "userP@ssw0rd!");await client.Authenticate(kerbCred);var ticket = wait client.GetServiceTicket("host/appservice .corp.identityintervention.com");var header = "협상 " + Convert.ToBase64String(ticket.EncodeGssApi().ToArray());
KDC를 호스팅하는 것은 특정 포트에서 수신 대기해야 하므로 조금 더 복잡합니다. 일반적으로 포트 88에서 수신 대기합니다.
var 포트 = 88;var 옵션 = 새 ListenerOptions{ListeningOn = 새 IPEndPoint(IPAddress.Loopback, 포트),DefaultRealm = "corp.identityintervention.com".ToUpper(),RealmLocator = realmName => 새 MyRealmService(realmName)};var 리스너 = 새로운 KdcServiceListener(옵션); 리스너를 기다립니다.Start();
리스너는 listener.Stop()
이 호출(또는 삭제)될 때까지 기다립니다.
티켓 인증은 두 단계로 이루어집니다. 첫 번째 단계에서는 KerberosValidator
의 기본 구현을 사용하여 IKerberosValidator
를 통해 티켓의 정확성을 검증합니다. 두 번째 단계에서는 티켓을 KerberosAuthenticator
에서 발생하는 사용 가능한 ClaimsIdentity
(특히 KerberosIdentity : ClaimsIdentity
)로 변환하는 작업이 포함됩니다.
시작하는 가장 쉬운 방법은 새로운 KerberosAuthenticator
를 만들고 Authenticate
호출하는 것입니다. 변환 동작을 조정해야 하는 경우 ConvertTicket(DecryptedData data)
메서드를 재정의하면 됩니다.
var 인증자 = new KerberosAuthenticator(new KeyTable(File.ReadAllBytes("sample.keytab")));var 신원 = authenticatetor.Authenticate("YIIHCAYGKwYBBQUCoIIG...");Assert.IsNotNull(identity);var name = 신원.이름 ;Assert.IsFalse(string.IsNullOrWhitespace(이름));
인증자의 생성자 매개변수는 KeyTable
입니다. KeyTable
은 다른 플랫폼에서 키를 저장하는 데 사용되는 일반적인 형식입니다. ktpass
와 같은 도구로 생성된 파일을 사용하거나 인스턴스화 중에 KerberosKey
전달하면 동일한 효과를 얻을 수 있습니다.
너겟 패키지는 일반적으로 핵심 라이브러리의 변경 사항에 따라 최신 상태로 유지됩니다.
이봐요, 작동해요! 너겟 패키지를 참조로 추가하고 진행하십시오.
추가 정보
Active Directory에는 토큰이 전송되는 도메인과 일치하는 ID가 있어야 합니다. 이 ID는 Active Directory의 모든 사용자 또는 컴퓨터 개체일 수 있지만 올바르게 구성되어야 합니다. 즉, SPN(서비스 사용자 이름)이 필요합니다. 여기에서 테스트 사용자 설정에 대한 지침을 찾을 수 있습니다.
Active Directory는 Server 2012부터 클레임을 지원했습니다. 당시에는 Windows 주체 또는 ADFS 다크 매직을 통해서만 클레임에 액세스할 수 있었습니다. Kerberos.NET은 이제 기본적으로 Kerberos 티켓의 구문 분석 클레임을 지원합니다. 설정에 대한 자세한 내용은 청구 가이드를 살펴보세요.
Kerberos.NET은 Kerberos 티켓을 해독하고 유효성을 검사하는 데 사용되는 키를 전달하기 위한 KeyTable(keytab) 파일 형식을 지원합니다. keytab 파일 형식은 키를 저장하기 위해 많은 플랫폼에서 사용되는 일반적인 형식입니다. RSAT(원격 서버 관리 도구) 팩의 일부인 ktpass
명령줄 유틸리티를 사용하여 Windows에서 이러한 파일을 생성할 수 있습니다. PowerShell을 통해(또는 Windows 구성 요소 추가 대화 상자를 통해) 서버 에 설치할 수 있습니다.
Windows 기능 RSAT 추가
여기에서 다음 명령을 실행하여 keytab 파일을 생성할 수 있습니다.
ktpass /princ HTTP/[email protected] /mapuser IDENTITYINTERserver01$ /pass P@ssw0rd! /out 샘플.keytab /crypto 모든 /PTYPE KRB5_NT_SRV_INST /mapop 세트
매개변수 princ
생성된 PrincipalName을 지정하는 데 사용되며 이를 Active Directory의 사용자에게 매핑하는 데 사용되는 mapuser
입니다. crypto
매개변수는 항목을 생성해야 하는 알고리즘을 지정합니다.
AES 티켓은 기본적으로 지원됩니다. 추가로 아무것도 할 필요가 없습니다!
여기에는 이제 RFC8009를 통한 SHA256 및 SHA384에 대한 지원도 포함됩니다.
자세한 내용은 FAST Armoring을 참조하세요.
이는 현재 지원되지 않지만 로드맵에 있습니다.
새로운 암호 해독기를 인스턴스화하는 Func<>에 암호화 유형을 연결하는 DES와 같은 다른 알고리즘에 대한 자체 지원을 추가할 수 있습니다(왜 그렇게 하는지는 모르겠지만...). 원한다면 이 프로세스를 DI로 수행하는 것을 막을 수 있는 방법도 없습니다.
KerberosRequest.RegisterDecryptor( 암호화 유형.DES_CBC_MD5, (토큰) => new DESMD5DecryptedData(token));
내장된 재생 감지 기능은 MemoryCache
사용하여 티켓 임시값의 해시에 대한 참조를 임시로 저장합니다. 이러한 참조는 티켓이 만료되면 제거됩니다. 인증자 시퀀스 번호를 사용할 수 있게 되면 암호 해독 직후 감지 프로세스가 발생합니다.
캐시가 컴퓨터 간에 공유되지 않기 때문에 애플리케이션이 클러스터링되면 기본 제공 감지 논리가 효과적으로 작동하지 않습니다. 내장 구현은 메모리 내 서비스를 사용하므로 누구와도 공유되지 않습니다.
클러스터된 환경에서 이 기능이 올바르게 작동하려면 컴퓨터 간에 공유되는 캐시를 만들어야 합니다. 이는 새로운 .NET Core 종속성 주입 서비스를 통해 크게 단순화되었습니다. 당신이 해야 할 일은 IDistributedCache
구현을 등록하는 것뿐입니다. 이에 대한 자세한 내용은 Microsoft Docs에서 확인할 수 있습니다.
자신만의 재생 감지 기능을 사용하려면 ITicketReplayValidator
인터페이스를 구현하고 KerberosValidator
생성자에 전달하면 됩니다.
샘플이 있어요!
KerbCrypto는 6개의 지원되는 토큰 형식을 통해 실행됩니다.
rc4-kerberos-데이터
rc4-spnego-데이터
aes128-kerberos-데이터
aes128-spnego-데이터
aes256-kerberos-데이터
aes256-spnego-데이터
KerbTester 실제 티켓을 테스트하고 구문 분석된 결과를 덤프하는 데 사용되는 명령줄 도구입니다.
KerberosMiddlewareEndToEndSample 서버가 협상을 요청하는 방법과 에뮬레이트된 브라우저의 응답을 보여주는 엔드투엔드 샘플입니다.
KerberosMiddlewareSample 티켓이 있는 경우 이를 디코딩하지만 그렇지 않으면 협상하라는 메시지를 표시하지 않는 간단한 통과/실패 미들웨어 샘플입니다.
KerberosWebSample 브라우저에서 들어오는 티켓을 협상하고 유효성을 검사하라는 메시지를 표시하는 IIS에서 호스팅되는 샘플 웹 프로젝트입니다.
이 프로젝트에는 MIT 라이센스가 있습니다. 자세한 내용은 라이센스 파일을 참조하십시오. 또한 이것이 의존하는 프로젝트의 라이선스에 대한 자세한 내용은 공지 파일을 참조하세요.
이 라이브러리에는 서비스 티켓을 디코딩하는 선택적 유틸리티가 함께 제공됩니다. 사용하기 쉽습니다. Base64로 인코딩된 티켓 사본을 왼쪽 텍스트 상자에 복사하세요. 키를 제공하지 않으면 암호화되지 않은 메시지를 디코딩합니다. 키를 제공하면 메시지 암호 해독을 시도합니다. 티켓이 RC4를 사용하여 암호화된 경우 호스트 값을 제공할 필요가 없지만 AES로 암호화된 경우(솔트 파생을 위해) 호스트 값이 필요합니다. 또는 keytab 파일이 있는 경우 이를 포함할 수도 있습니다.
bruce kdecode
와 함께 Bruce 도구를 사용하여 시작할 수 있습니다.
디코더는 Kerberos 티켓을 구조화된 트리 보기로 변환합니다. 프로세스는 Kerberos ASN.1 => JSON() => 트리 뷰 렌더링입니다. 티켓에서 사용할 수 있는 모든 정보를 보여주는 중간 JSON은 다음과 같습니다.
{ "요청": {"KrbApReq": { "ProtocolVersionNumber": 5, "MessageType": "KRB_AP_REQ", "ApOptions": "예약됨", "Ticket": {"TicketNumber": 5,"Realm": "CORP. IDENTITYINTERVENTION.COM","SName": { "FullyQualifiedName": "desktop-h71o9uu", "IsServiceName": false, "유형": "NT_PRINCIPAL", "이름": ["desktop-h71o9uu" ]},"EncryptedPart": { "EType": "AES256_CTS_HMAC_SHA1_96", "KeyVersionNumber": 3, "암호": "Vo4uodU2...snip...XBwjmsshgyjs+Vr+A=="} }, "인증자": {"EType": "AES256_CTS_HMAC_SHA1_96","KeyVersionNumber": null,"Cipher": "NnLmEFkmO3HXCS...snip. ..up0YmNW5AicQVvvk" }},"KrbApRep": null }, "암호 해독됨": {"옵션": "예약됨","EType": "AES256_CTS_HMAC_SHA1_96","SName": { "FullyQualifiedName": "desktop-h71o9uu", "IsServiceName": false, "Type": "NT_PRINCIPAL", "이름": ["desktop-h71o9uu" ]},"Authenticator": { "AuthenticatorVersionNumber": 5, "Realm": "CORP.IDENTITYINTERVENTION.COM", "CName": {"FullyQualifiedName": "jack","IsServiceName": false,"Type": " NT_PRINCIPAL","이름": [ "jack"] }, "체크섬": {"유형": "32771","체크섬": "EAAAAAAAAAAAAAAAAAAAAAAA8QAAA" }, "CuSec": 305, "CTime": "2021-04-21T17:38:11+00:00", "하위 키": {"사용법": "알 수 없음","EType": "AES256_CTS_HMAC_SHA1_96 ","키값": "nPIQrMQu/tpUV3dmeIJYjdUCnpg0sVDjFGHt8EK94EM=" }, "SequenceNumber": 404160760, "AuthorizationData": [{ "Type": "AdIfRelevant", "Data": "MIHTMD+gBAICAI2hNwQ1M...snip...BJAE8ATgAuAEMATwBNAA=="} ]},"티켓": { "플래그": ["EncryptedPreAuthentication","사전 인증됨","갱신 가능","전달 가능" ], "키": {"사용법": "알 수 없음","EType": "AES256_CTS_HMAC_SHA1_96","KeyValue": "gXZ5AIsNAdQSo/qdEzkfw3RrLhhypyuG+YcZwqdX9mk=" }, "Crealm": "CORP.IDENTITYINTERVENTION.COM", "CName": {"FullyQualifiedName": "jack","IsServiceName": false,"유형": "NT_PRINCIPAL","이름": [ "jack"] }, "전송됨": {"유형": "DomainX500Compress","콘텐츠": "" }, "AuthTime": "2021-04 -21T17:24:53+00:00", "시작시간": "2021-04-21T17:38:11+00:00", "종료 시간": "2021-04-22T03:24:53+00:00", "갱신까지": "2021-04-28T17:24:53 +00:00", "CAddr": null, "AuthorizationData": [{ "유형": "AdIfRelevant", "데이터": "MIIDIjCCAx6gBAICAIChg...snip...muoGI9Mcg0="},{ "유형": "AdIfRelevant", "데이터": "MF0wP6AEAgIAj...snip...AXg9hCAgAACTDBBAAAAAA="} ]} ,"DelegationTicket": null,"SessionKey": { "사용법": null, "EncryptionType": "AES256_CTS_HMAC_SHA1_96", "Host": null, "PrincipalName": null, "Version": null, "Salt": "", "Password": null, "IterationParameter": "", "PasswordBytes ": "", "SaltFormat": "ActiveDirectoryService", "RequiresDerivation": false},"기울기": "00:05:00" }, "계산됨": {"이름": "[email protected]","제한 사항": { "KerbAuthDataTokenRestrictions": [{ "RestrictionType": 0, "Restriction": {"Flags": "Full"," TokenIntegrityLevel": "높음","MachineId": "Txr82+sI2kbFmPnkrjldLUfESt/oJzLaWWNqCkOgC7I=" }, "유형": "KerbAuthDataTokenRestrictions"},{ "RestrictionType": 0, "Restriction": {"Flags": "Full","TokenIntegrityLevel": "High","MachineId" : "Txr82+sI2kbFmPnkrjldLUfESt/oJzLaWWNqCkOgC7I=" }, "유형": "KerbAuthDataTokenRestrictions"} ], "KerbLocal": [{ "값": "EBeD2EICAAAJMMEEAAAAAA==", "유형": "KerbLocal"},{ "값": "EBeD2EICAAAJMMEEAAAAAA==", "유형": "KerbLocal"} ], "KerbApOptions": [{ "Options": "ChannelBindingSupported", "Type": "KerbApOptions"} ], "KerbServiceTarget": [{ "ServiceName": "[email protected]", "유형": "KerbServiceTarget"} ], "AdWin2kPac": [{ "모드": "서버", "DecodingErrors": [], "버전": 0, " LogonInfo": {"PacType": "LOGON_INFO","LogonTime": "2021-04-21T17:24:53.4021307+00:00","로그오프 시간": "0001-01-01T00:00:00+00:00","킥오프 시간": "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,"속성": [ "SE_GROUP_MANDATORY", "SE_GROUP_ENABLED_BY_DEFAULT", "SE_GROUP_ENABLED"] }, {"RelativeId": 1128,"속성": [ "SE_GROUP_MANDATORY", "SE_GROUP_ENABLED_BY_DEFAULT", "SE_GROUP_ENABLED"] }, {"RelativeId": 1130,"속성": [ "SE_GROUP_MANDATORY", "SE_GROUP_ENABLED_BY_DEFAULT", "SE_GROUP_ENABLED"] }, {"RelativeId": 513,"속성": [ "SE_GROUP_MANDATORY", "SE_GROUP_ENABLED_BY_DEFAULT", "SE_GROUP_ENABLED"] }, {"RelativeId": 1129,"속성": [ "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","속성": [ "SE_GROUP_MANDATORY", "SE_GROUP_ENABLED_BY_DEFAULT", "SE_GROUP_ENABLED"] }],"ResourceDomainId": null,"ResourceGroupCount": 0,"ResourceGroupIds": null,"UserSid ": { "ID": 1126, "속성": "0", "값": "S-1-5-21-311626132-1109945507-1757856464-1126"},"GroupSid": { "Id": 513, "속성": "0", "값": "S-1-5-21-311626132-1109945507-1757856464-513"},"GroupSids": [ {"Id": 1132,"Attributes": [ "SE_GROUP_MANDATORY", "SE_GROUP_ENABLED_BY_DEFAULT", "SE_GROUP_ENABLED"],"값": "S-1-5-21-311626132-1109945507-1757856464-1132" }, {"Id": 1131,"속성": [ "SE_GROUP_MANDATORY", "SE_GROUP_ENABLED_BY_DEFAULT", "SE_GROUP_ENABLED"],"값": "S-1-5-21-311626132-1109945507-1757856464-1131" }, {"Id": 1128,"속성": [ "SE_GROUP_MANDATORY", "SE_GROUP_ENABLED_BY_DEFAULT", "SE_GROUP_ENABLED"],"값": "S-1-5-21-311626132-1109945507-1757856464-1128" }, {"Id": 1130,"속성": [ "SE_GROUP_MANDATORY", "SE_GROUP_ENABLED_BY_DEFAULT", "SE_GROUP_ENABLED"],"값": "S-1-5-21-311626132-1109945507-1757856464-1130" }, {"Id": 513,"속성": [ "SE_GROUP_MANDATORY", "SE_GROUP_ENABLED_BY_DEFAULT", "SE_GROUP_ENABLED"],"값": "S-1-5-21-311626132-1109945507-1757856464-513" }, {"Id": 1129,"속성": [ "SE_GROUP_MANDATORY", "SE_GROUP_ENABLED_BY_DEFAULT", "SE_GROUP_ENABLED"],"값": "S-1-5-21-311626132-1109945507-1757856464-1129" }],"ExtraSids": [ {"Id": 1,"속성": "0"," 값": "S-1-18-1" }],"ResourceDomainSid": null,"ResourceGroups": [],"DomainSid": { "Id": 1757856464, "속성": "0", "값": "S-1-5-21-311626132- 1109945507-1757856464"} }, "서버서명": {"유형": "HMAC_SHA1_96_AES256","서명": "Q0gnRmxBoh5w0DzS","RODCIdentifier": 0,"PacType": "0" }, "CredentialType": null, "KdcSignature": {"유형": "HMAC_SHA1_96_AES256" ,"서명": "HVsreq5rqBiPTHIN","RODCIdentifier": 0,"PacType": "0" }, "ClientClaims": null, "DeviceClaims": null, "ClientInformation": {"ClientId": "2021-04-21T17:24:53 +00:00","이름": "잭","팩 유형": "CLIENT_NAME_TICKET_INFO" }, "UpnDomainInformation": {"Upn": "[email protected]","도메인": "CORP.IDENTITYINTERVENTION.COM","플래그": "0","PacType": "UPN_DOMAIN_INFO " }, "DelegationInformation": null, "HasRequiredFields": true, "유형": "AdWin2kPac"} ]},"ValidationMode": "Pac","클레임": [ {"유형": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/ sid","값": "S-1-5-21-311626132-1109945507-1757856464-1126" }, {"유형": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname","값 ": "잭 핸디" }, {"유형": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier","값": "[email protected]" }, {"유형": "http://schemas .microsoft.com/ws/2008/06/identity/claims/groupsid","값": "S-1-5-21-311626132-1109945507-1757856464-1132" }, {"유형": "http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid","값 ": "S-1-5-21-311626132-1109945507-1757856464-1131" }, {"유형": "http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid","값 ": "S-1-5-21-311626132-1109945507-1757856464-1128" }, {"유형": "http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid","값 ": "S-1-5-21-311626132-1109945507-1757856464-1130" }, {"유형": "http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid","값 ": "S-1-5-21-311626132-1109945507-1757856464-513" }, {"유형": "http://schemas.microsoft.com/ws/2008/06/identity/claims/role","값 ": "도메인 사용자" }, {"유형": "http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid","값": "S-1-5-21-311626132-1109945507-1757856464-1129" }, {"유형 ": "http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid","값": "S-1-18-1" }] }, "KeyTable": {"FileVersion": 2,"KerberosVersion": 5,"항목": [ {"EncryptionType": "NULL","Length": 0,"Timestamp": "2021-04-21T23:52: 22.5460123+00:00","버전": 5,"호스트": null,"PasswordBytes": "jBBI1KL19X3olbCK/f9p/+cxZi3RnqqQRH4WawB4EzY=","KeyPrincipalName": { "영역": "CORP.IDENTITYINTERVENTION.COM", "이름": ["STEVE-HOME" ], "NameType": " NT_SRV_HST", "FullyQualifiedName": "STEVE-HOME"},"소금": null }] }}