Commit graph

142 commits

Author SHA1 Message Date
William Brown 3c774dcf6c Add stricter assertions to whoami test 2019-09-11 12:21:15 +10:00
William Brown 4ba9508a31 Add a lot of client support, clean up warnings, and clean up output for clients 2019-09-09 20:32:49 +10:00
Firstyear d436291eff
Implement attribute uniqueness. (#82)
Implements #72, attribute uniqueness. This extends schema to have a field "unique" which means a value should be unique for that object, and all other live objects (recycle and tombstones excluded). Note UUID has to retain special handling in base.rs and can't usethis due to needing to check with recycled too..
2019-09-08 20:26:35 +10:00
Firstyear b4fc71b27d
Docker improvements (#81)
Update the dockerfile to work correctly with the newer server options and runtime.
2019-09-06 13:05:27 +10:00
Firstyear c798322ad8
60 authsession gc (#80)
Implements #60 authsession garbage collection. If we assume that an authsession is around 1024 bytes (this assumes a 16 char name + groups + claims) then this means that in 1Gb of ram we can store about 1 million in progress auth attempts. Obviously, we don't want infinite memory growth, but we can't use an LRU cache due to the future desire to use concurrent trees. So instead we prune the tree based on a timeout when we start and auth operation. Auth session id's are generated from a timestamp similar to how we'll generate replication csn's. We can then apply a diff that will split all items lower than the csn/sid and remove them from future consideration.

We set the default timeout to 5 minutes. This means that assuming 10,000 auths per second, we would require 3GB of ram to process these sessions before they are expired. We expect any deployment with such large loadings can affort 3Gb of ram :)
2019-09-06 13:04:58 +10:00
Firstyear da1af02f2b
3 authentication (#79)
This adds support for authentication and credential storage to the server. 
It also adds account recovery and options for integration test fixtures, refactors
to make the client library easier to manage, and support clean seperation of the
proto vs lib.
2019-09-04 11:06:37 +10:00
Firstyear d0e62ad85a
20190730 66 value types (#76)
This implements strongly typed storage of data types in attribute values. This means that have the future ability to have tagged, hidden, complex or other datatypes in values rather than relying on string manipulations. It helps also to lift the burden on schema to only checking the values types on input from the protocol types, so that comparisons and other conversions will be faster. It also helps to strengthen and check values are valid earlier in conversions.
2019-08-27 09:36:54 +10:00
Leigh Brenecki 66b6aabae6 Improve formatting of CoC (#77)
- "Our Standards" should be a heading
- Change code blocks into unordered lists
2019-08-20 11:25:45 +10:00
Firstyear a07e8b2fe3
Merge pull request #75 from Firstyear/20190729-warnings-to-error
20190729 warnings to error
2019-07-30 12:41:17 +09:00
William Brown 8a32ecffcb cargo fmt 2019-07-29 16:09:18 +09:00
William Brown 9ce4831903 Clean all codebase warnings 2019-07-29 16:09:09 +09:00
William Brown 635270eabe Update readme 2019-07-28 21:28:05 +09:00
William Brown 4934894666 Update readme 2019-07-28 21:25:12 +09:00
Firstyear 6ba0f6fccb
Merge pull request #73 from Firstyear/20190720-todo-cleanup
20190720 todo cleanup
2019-07-28 20:33:36 +09:00
William Brown 5f53346e23 Update small art 2019-07-28 20:30:03 +09:00
William Brown 59ed12cc55 Add artwork 2019-07-28 20:26:34 +09:00
William Brown 96beb3070e Finish up todo audit 2019-07-28 20:18:25 +09:00
William Brown 82e51399e9 More todos done! 2019-07-27 21:35:44 +09:00
William Brown 0fbd181f9f Open tickets for most todos, fix more. 2019-07-27 15:54:31 +09:00
William Brown ed99da58d0 Large todo cleanup, but not done yet ... 2019-07-26 17:13:58 +09:00
William Brown 8cc25b8374 Complete system protected objects implementation. This allows class: system
to be tagged to types that should not be externally edited.
2019-07-20 18:20:29 +09:00
William Brown c7c88d6965 Dynamic schema. This allows classes and attributes to be added and modified "live",
so that restarts to affect object schema are not required. This is good to allow
customisation and other extensions for advanced users, and doing it now makes it
"easier" to supply extra schema from the project core into the initialise_idm function.
2019-07-20 18:20:29 +09:00
William Brown c374c8c96b Add contributors 2019-07-15 09:20:41 +10:00
Firstyear c5497b8024
Implement backup, restore and server modes
This allows backup and restore of the server backend data from the command line. Backups can be taken while the server is running. Automated backups are *not* part of this yet. 

This also adds a few missing files from a previous commit mistake. Opps!
2019-07-15 09:15:25 +10:00
Firstyear 94a6bde269
20190607 authentication (#55)
Implement #2 anonymous authentication. This also puts into place the majority of the authentication framework, and starts to build the IDM layers ontop of the DB engine.
2019-07-12 15:28:46 +10:00
Firstyear 426426a18f
Implement Access Control Profiles (#52)
This implements access controls, including a huge amount of refactor to support
them and their resolution with the "SelfUUID" keyword. Additionally, parts of
the event structure was improved to help, normalised was added as an entry state
and more.

And there are access controls! They work, have tests, and appear sane.
2019-06-07 11:19:09 +02:00
Firstyear 55008cd551
20190510 access profiles foundations (#51)
* Large refactor to improve the ava get interface

* Improve ACP parsing test

* ACP parsing complete

* Fix txn type tech debt

* Clean up queryserver name issue

* Integrate acp to query server, and add reload hooks

* Starting to write search acp enforcement

* Refactor event to take entry rather than UUID to allow acp to filter on the event properly.

* Most of the filter refactor is done

* Finish filter refactor!

* Write and implement basic filter optimiser with redundant term folding
2019-05-24 15:11:06 +10:00
Firstyear 44dc66713c
20190508 UUID on entry (#50)
* Make UUID a proper type on entries

* Add auth and ID data to relevant structures - this means we can start access controls!
2019-05-15 10:36:18 +10:00
Firstyear 9eca06c3e2
Implement memberof with direct/indirect tracking and testcases. (#48)
* Implement memberof with direct/indirect tracking and testcases.
2019-05-08 10:39:46 +10:00
William Brown e1c41d549a Docs update 2019-05-01 14:08:17 +10:00
William Brown b4ea4fff89 Fix a large number of expect and unwrap locations in the codebase 2019-05-01 14:08:10 +10:00
Firstyear ff828e4f4a
Add DBVersioning for entries (#47) 2019-05-01 14:06:22 +10:00
Firstyear 3bbe9943c0
20190421 refint (#46)
* Add test framework for refint, add the create tests
2019-04-27 16:26:08 +10:00
slipperyBishop 644c9bffa2 Backups (#43)
* moved core BackendWriteTransaction::create code to BackendWriteTransaction::_create, implemented both BackendWriteTransaction::{backup, restore} need to add data into db for testing backup/restore, restore currently fails as there is no data in the backed up file yet.

* test_backup_restore now runs successfully, created unsafe purge function to remove all data from the database, changed function _create to internal_create and a few other smaller things
2019-04-21 13:37:43 +10:00
William Brown d2dda50c72 Merge branch 'master' of github.com:Firstyear/kanidm 2019-04-21 13:31:39 +10:00
William Brown 40d044e66b Update auth doc 2019-04-21 13:31:32 +10:00
slipperyBishop 405f863499
Merge pull request #42 from Firstyear/20190417-rust2018
Update to rust 2018 and improve some todo notes
2019-04-19 14:18:15 +10:00
William Brown 4ab377ec88 Update to rust 2018 and improve some todo notes 2019-04-18 11:28:33 +10:00
Firstyear af9ac8f662
20190405 refint precursors (#40)
* Improved validation errors

* Fix some audit issues

* Make verify RO

* Added verify and plugin verify hooks

* Update plugin testing framework

* Update designs and macros
2019-04-17 13:00:03 +10:00
Firstyear b065b76130
Add plugin stubs and refactor to use QS (#33)
* Refactor to use qs in plugins

* fmt

* Add empty bindings for plugins
2019-04-01 11:06:34 +10:00
Firstyear dffe5ca23a
Create pull_request_template.md 2019-03-28 13:58:14 +10:00
slipperyBishop 769bc5c17b added first version of try_audit! macro #32
Add try_audit macro
2019-03-25 18:55:15 +10:00
William Brown 3c964c51e7 Add some git instructions 2019-03-22 10:09:05 +10:00
William Brown 81d61df9f7 fmt 2019-03-22 10:02:05 +10:00
Jake Martin 98e118d488 backup is now implemented and the test_case is working for backup, but still fails because restore is unimplemented. Also added SQLiteError to error.h 2019-03-21 12:32:57 +10:00
William Brown 057c0e8baf fmt 2019-03-20 15:33:22 +10:00
William Brown e2b3086278 Add UUID resolution to clone_val0ue 2019-03-20 15:30:34 +10:00
William Brown f858e6b5c4 Add modify and entry transformers 2019-03-17 13:24:27 +10:00
William Brown 6b4256cd98 Complete framework for resolving filter references. 2019-03-17 11:47:52 +10:00
William Brown b148f353e3 fmt 2019-03-12 15:40:25 +10:00