2019-07-28 13:25:51 +02:00
|
|
|
|
|
|
|
<p align="center">
|
2019-07-28 13:30:03 +02:00
|
|
|
<img src="https://raw.githubusercontent.com/Firstyear/kanidm/master/artwork/logo-small.png" width="20%" height="auto" />
|
2019-07-28 13:25:51 +02:00
|
|
|
</p>
|
|
|
|
|
2019-02-02 02:44:31 +01:00
|
|
|
# Kanidm
|
2018-09-29 09:54:16 +02:00
|
|
|
|
2019-02-02 02:44:31 +01:00
|
|
|
Kanidm is an identity management platform written in rust. Our goals are:
|
2018-09-29 09:54:16 +02:00
|
|
|
|
|
|
|
* Modern identity management platform
|
|
|
|
* Simple to deploy and integrate with
|
2019-07-28 14:25:12 +02:00
|
|
|
* Extensible for various needs
|
|
|
|
* Correct and secure behaviour by default
|
|
|
|
|
|
|
|
Today the project is still under heavy development to achieve these goals - we don't expect a fully
|
2019-07-28 14:28:05 +02:00
|
|
|
functional release before early 2020. It is important to note that not all needed security features
|
|
|
|
of the system have been completed yet!
|
2018-09-29 09:54:16 +02:00
|
|
|
|
|
|
|
## Code of Conduct
|
|
|
|
|
2019-07-28 14:25:12 +02:00
|
|
|
See [CODE_OF_CONDUCT.md]
|
|
|
|
|
|
|
|
[CODE_OF_CONDUCT.md]: https://github.com/Firstyear/kanidm/blob/master/CODE_OF_CONDUCT.md
|
|
|
|
|
|
|
|
## Some key ideas
|
2018-09-29 09:54:16 +02:00
|
|
|
|
2019-07-28 14:25:12 +02:00
|
|
|
* All people should be respected and able to be respresented securely.
|
|
|
|
* Devices represent users and their identities - they are part of the authentication.
|
|
|
|
* Human error occurs - we should be designed to minimise human mistakes and empower people.
|
|
|
|
* The system should be easy to understand and reason about for users and admins.
|
2018-09-29 09:54:16 +02:00
|
|
|
|
2019-07-28 14:25:12 +02:00
|
|
|
## Quick start
|
2018-09-29 09:54:16 +02:00
|
|
|
|
2019-07-28 14:25:12 +02:00
|
|
|
Details to come ...
|
|
|
|
|
|
|
|
## Implemented/Planned features
|
|
|
|
|
|
|
|
* RBAC design
|
|
|
|
* SSH key distribution for servers
|
|
|
|
* Pam/nsswitch clients (with limited offline auth)
|
|
|
|
* Sudo rule distribution via nsswitch
|
|
|
|
* CLI and WebUI for administration
|
2018-09-29 09:54:16 +02:00
|
|
|
* OIDC/Oauth
|
2019-07-28 14:25:12 +02:00
|
|
|
* Claims (limited by time and credential scope)
|
|
|
|
* MFA (Webauthn, TOTP)
|
|
|
|
* Highly concurrent desgin (MVCC, COW)
|
|
|
|
* Replication (async multiple active write servers, read only servers)
|
2018-09-29 09:54:16 +02:00
|
|
|
* Account impersonation
|
2019-07-28 14:25:12 +02:00
|
|
|
* RADIUS integration
|
|
|
|
* Self service UI with wifi enrollment, claim management and more.
|
|
|
|
* Synchronisation to other IDM services
|
2018-09-29 09:54:16 +02:00
|
|
|
|
|
|
|
## Features we want to avoid
|
|
|
|
|
2019-07-28 14:25:12 +02:00
|
|
|
* Auditing: This is better solved by SIEM software, so we should generate data they can consume.
|
|
|
|
* Fully synchronous behaviour: This is slow.
|
|
|
|
* Generic database: We don't want to be another NoSQL database, we want to be an IDM solution.
|
|
|
|
* Being LDAP/GSSAPI/Kerberos: These are all legacy protocols that are hard to use and confine our thinking - we should avoid "being like them".
|
2018-09-29 09:54:16 +02:00
|
|
|
|
2019-07-28 14:28:05 +02:00
|
|
|
## Designs
|
|
|
|
|
|
|
|
See the [designs] folder
|
|
|
|
|
|
|
|
[designs]: https://github.com/Firstyear/kanidm/tree/master/designs
|
|
|
|
|
2018-09-29 09:54:16 +02:00
|
|
|
## Get involved
|
|
|
|
|
2019-03-22 01:09:05 +01:00
|
|
|
To get started, you'll need to fork or branch, and we'll merge based on PR's.
|
|
|
|
|
|
|
|
If you are a contributor to the project, simply clone:
|
|
|
|
|
|
|
|
```
|
|
|
|
git clone git@github.com:Firstyear/kanidm.git
|
|
|
|
```
|
|
|
|
|
|
|
|
If you are forking, then Fork in github and clone with:
|
|
|
|
|
|
|
|
```
|
|
|
|
git clone https://github.com/Firstyear/kanidm.git
|
|
|
|
cd kanidm
|
|
|
|
git remote add myfork git@github.com:<YOUR USERNAME>/kanidm.git
|
|
|
|
```
|
|
|
|
|
|
|
|
Select and issue (and always feel free to reach out to us for advice!), and create a branch to
|
|
|
|
start working:
|
|
|
|
|
|
|
|
```
|
|
|
|
git branch <feature-branch-name>
|
|
|
|
git checkout <feature-branche-name>
|
|
|
|
```
|
|
|
|
|
|
|
|
When you are ready for review (even if the feature isn't complete and you just want some advice)
|
|
|
|
|
|
|
|
```
|
|
|
|
git commit -m 'Commit message' change_file.rs ...
|
|
|
|
git push <myfork/origin> <feature-branch-name>
|
|
|
|
```
|
|
|
|
|
|
|
|
If you get advice or make changes, just keep commiting to the branch, and pushing to your branch.
|
|
|
|
When we are happy with the code, we'll merge in github, meaning you can now cleanup your branch.
|
|
|
|
|
|
|
|
```
|
|
|
|
git checkout master
|
|
|
|
git pull
|
|
|
|
git branch -D <feature-branch-name>
|
|
|
|
```
|
|
|
|
|
|
|
|
Rebasing:
|
|
|
|
|
|
|
|
If you are asked to rebase your change, follow these steps:
|
|
|
|
|
|
|
|
```
|
|
|
|
git checkout master
|
|
|
|
git pull
|
|
|
|
git checkout <feature-branche-name>
|
|
|
|
git rebase master
|
|
|
|
```
|
|
|
|
|
|
|
|
Then be sure to fix any merge issues or other comments as they arise. If you have issues, you can
|
|
|
|
always stop and reset with:
|
|
|
|
|
|
|
|
```
|
|
|
|
git rebase --abort
|
|
|
|
```
|
|
|
|
|
|
|
|
|
2019-02-02 02:44:31 +01:00
|
|
|
## Why do I see rsidm references?
|
|
|
|
|
|
|
|
The original project name was rsidm while it was a thought experiment. Now that it's growing
|
|
|
|
and developing, we gave it a better project name. Kani is Japanese for "crab". Rust's mascot
|
|
|
|
is a crab. It all works out in the end.
|
2018-09-29 09:54:16 +02:00
|
|
|
|
|
|
|
|
|
|
|
|