Example #1
0
    public void AddUser(string name, string password = DefaultUserPassword)
    {
        var principal = new FakeKerberosPrincipal(PrincipalType.User, name, _realm, Encoding.Unicode.GetBytes(password));

        _principalService.Add(name, principal);
        _principalService.Add($"{name}@{_realm}", principal);
    }
Example #2
0
    public KerberosExecutor(ITestOutputHelper testOutputHelper, string realm)
    {
        var krb5Config = Krb5Config.Default();

        krb5Config.KdcDefaults.RegisterDefaultPkInitPreAuthHandler = false;

        var logger = new KerberosDelegateLogger(
            (level, categoryName, eventId, scopeState, logState, exception, log) =>
            testOutputHelper.WriteLine($"[{level}] [{categoryName}] {log}")
            );

        _principalService = new FakePrincipalService(realm);

        byte[] krbtgtPassword = new byte[16];

        var krbtgt = new FakeKerberosPrincipal(PrincipalType.Service, "krbtgt", realm, krbtgtPassword);

        _principalService.Add("krbtgt", krbtgt);
        _principalService.Add($"krbtgt/{realm}", krbtgt);

        _options = new ListenerOptions
        {
            Configuration = krb5Config,
            DefaultRealm  = realm,
            RealmLocator  = realm => new FakeRealmService(realm, krb5Config, _principalService),
            Log           = logger,
            IsDebug       = true,
        };

        _kdcListener       = new FakeKdcServer(_options);
        _realm             = realm;
        _servicePrincipals = new List <FakeKerberosPrincipal>();
        _testOutputHelper  = testOutputHelper;
    }
Example #3
0
    public void AddService(string name, string password = DefaultAdminPassword)
    {
        var principal = new FakeKerberosPrincipal(PrincipalType.Service, name, _realm, Encoding.Unicode.GetBytes(password));

        _principalService.Add(name, principal);
        _servicePrincipals.Add(principal);
    }