Commit graph

2156 commits

Author SHA1 Message Date
Firstyear 6b0b2ad040
Refactor client lib to expose msgs, and improve the messages in plugins (#114)
Implements #100. This refactors our error types to be deserialiseable, and exposes these through the clienterror type with the status codes. There is probably still a lot of improvements here to be made, but they'll be shaken out as the client libs develop I think and we start to see what errors should be exposed.
2019-10-10 13:17:32 +10:00
Firstyear 09bc31e2f5
Add radius design draft (#115)
* Add radius design draft
2019-10-10 13:17:03 +10:00
Firstyear 6c44297bd9
6 create modify tool (#113)
Implements #6 - create, modify and delete. These are the raw/lowlevel db commands which are really useful for administrators. They aren't intended for normal day to day use though.

This also adds a basic getting started, fixes a missing privilege, adds support for reseting another accounts password, and for server side password generation.

It's likely I'm going to reformat some of the current REST api though to use our higher level internal types.
2019-10-07 08:41:30 +10:00
Firstyear 1f2b965285
6 schema list (#112)
This adds rest endpoints for schema, group, account listing and individual item getting, client lib to call these end points, and tests for all of these.
2019-10-05 10:40:43 +10:00
Firstyear 4ba34d18e1
6 idm api design (#109)
Draft of the idm server rest api layout. This is no means a final representation of what this API will look like, but it's important that the ideas and direction, as well as capabilities were documented and discussed.
2019-09-30 19:01:20 +10:00
Firstyear e9cb71b9a7
Add tooling for accounts to self-set their password (#107)
Partially Implements #6 - add ability for accounts to self set password. This is good for now, as I get closer to a trial radius deployment, but I think I'm finding the rest api probably needs a better plan at this point, as well as probably the way we do the proto and the communication needs some more thoughts too.
2019-09-27 09:59:23 +10:00
Firstyear 879095c450
Implement #90 - allow self write to name, displayname, and legalname. (#105)
* Implement #90 - allow self write to name, displayname, and legalname.

This is an important aspect to respecting peoples autonomy and identities
so that they can change their name when appropriate to them. Limit self read/write to live accounts, and prevent anonymous self-write
2019-09-27 09:57:53 +10:00
Firstyear 4f85883c32
Implement #8 indexing - today this is only eq and pres indexes, but (#102)
it does handle the cases correctly for test threshold, andnot, or,
and and exists shortcuts. It's also extremely well tested!
2019-09-25 12:38:20 +02:00
Jamie e7277d4f5b Fix link to examples in ethics readme (#91) 2019-09-19 17:08:26 +10:00
Firstyear 0d4509233b
87 default idm entries (#89)
This adds the fundamentals of the basic IDM layout. It contains the needed design document, and is designed such that the default admins while powerful, still have some limits upon them.
2019-09-16 04:05:26 +10:00
William Brown 0433a0a1d4 Complete the rename of the project from rsidm to kanidm 2019-09-14 15:58:28 +02:00
Firstyear 75ad3ced51
Implement resolving references to names on entry to proto entry convert. (#86)
Implement resolving reference uuids to names when they are available on proto entry conversion.
2019-09-14 23:37:05 +10:00
Firstyear ce2eae3ed3
Add initial skeleton of the statement of rights (#84)
Add initial statement on rights and ethics. It's not perfect, and I'm sure there is more input from people to be added. But it's a start, and the discussion is open.
2019-09-14 18:51:56 +10:00
Firstyear 720fce732e
65 cli options (#85)
Add support for command line options to the server. This supports server sid regeneration, persistence, address binding, tls configuration and more. This also improves TLS support in the client tools for CA cert addition to queries.
2019-09-14 18:21:41 +10:00
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