Compare commits
684 Commits
68cb630339
...
master
Author | SHA1 | Date | |
---|---|---|---|
e3e4e8280c | |||
03c538cc96 | |||
77d3e49a94 | |||
df40e5e6be | |||
e5c6f0d372 | |||
46c561ca0b | |||
4a3c1b62e0 | |||
64e9844f65 | |||
958a614f19 | |||
f869bbde07 | |||
257c9c2b85 | |||
96b3f35ad0 | |||
658e6d498b | |||
5241115f79 | |||
23e8f33069 | |||
77c3dc9e94 | |||
0a8fc3c805 | |||
b820ca4b49 | |||
dc30d65d68 | |||
dbea05552d | |||
fc416752db | |||
99dd85c973 | |||
69cabe650e | |||
18e6ee16ae | |||
1e5fc7acfe | |||
e16e1a5a6a | |||
80b9ffd4e0 | |||
0a8f441ecb | |||
ee00b31fd0 | |||
7b9ada9164 | |||
991f732f22 | |||
e11a902c98 | |||
dc0455c526 | |||
4cefc7bb0a | |||
9bcdc84824 | |||
9c79c3d93c | |||
bfe6c25f39 | |||
b77e7895b7 | |||
19f99cf9b9 | |||
73988fe5ec | |||
ad1ba1bf19 | |||
cabb74b0a3 | |||
2d7635668d | |||
eeb0594e80 | |||
4f74e7cfc1 | |||
10247deb2e | |||
286b982506 | |||
25f7221d0b | |||
c5b083f2df | |||
2170d53bb4 | |||
19a1fba460 | |||
402bcbc4cd | |||
19a7ae24cf | |||
44de2d320a | |||
b7310bd7ad | |||
e9c14cf146 | |||
ce07e8e0eb | |||
5b58b70ca7 | |||
1bbfe494d8 | |||
80de6e224e | |||
1bb417d02c | |||
dd05ab563e | |||
428a4f8f31 | |||
89d0955137 | |||
ea34f867b0 | |||
cbda0db231 | |||
91b468ee54 | |||
c9d41f2517 | |||
1a1a41d5dc | |||
d01311abf1 | |||
a73ad4bf41 | |||
4a248e84ac | |||
e650fe0c29 | |||
473abb2d38 | |||
1b743c86bf | |||
8c25e2aa4c | |||
f7e4eb955c | |||
7d521ef040 | |||
c59e7b96db | |||
a0d204ad09 | |||
a06be2e889 | |||
42862aea7f | |||
8173ac5bc1 | |||
79a00ff7ad | |||
f2e4d82f87 | |||
022073f26a | |||
c22fcdab74 | |||
672267d521 | |||
c26a3af253 | |||
84d69de09b | |||
76faa33c4e | |||
fb0ebde748 | |||
e0f33c133b | |||
8a0ef75295 | |||
a4f73db82e | |||
31ad52607f | |||
a201f175a2 | |||
f5eaecc189 | |||
6c18a58c43 | |||
677b4221eb | |||
ae92f8f405 | |||
16083a7624 | |||
09da003f35 | |||
f5dde48e9f | |||
c59c735291 | |||
c2dc140002 | |||
d26c9ead7d | |||
5da918cc86 | |||
f7d1115b5a | |||
6d5f65559f | |||
872fa25d77 | |||
6901803ae8 | |||
2f8b02a866 | |||
6ce1b20ad0 | |||
de3896b703 | |||
14c2bb5ac6 | |||
398e95aa83 | |||
4223094222 | |||
a15f1821ff | |||
10824b22c5 | |||
256329cebf | |||
4a14ef7ae6 | |||
42531f32d4 | |||
06152429c1 | |||
1ce9a4d8ec | |||
a8521e7a60 | |||
8a582036a0 | |||
78a8b8732b | |||
8ce1fa7cb1 | |||
ebf4c40ce2 | |||
16f300f3d1 | |||
0fa6834365 | |||
caf3662fbd | |||
451de9392d | |||
0a96e6b47e | |||
b0b978b77c | |||
ec36e964bf | |||
d275460119 | |||
9028b341d6 | |||
705031f2ff | |||
20fffc4868 | |||
066da24c76 | |||
51f9df029a | |||
b2ad0f5475 | |||
7cfe7b4583 | |||
32f2144471 | |||
86e7f35283 | |||
a8290acf12 | |||
639c8a54fd | |||
d6c085e06c | |||
9981b25b86 | |||
34bd7348ab | |||
36d28d1a85 | |||
c7841b0abc | |||
848e14afd1 | |||
0e5e2f55c5 | |||
c0b29c03f2 | |||
3b78af07ae | |||
b07877d46b | |||
ace6cc6215 | |||
433599c087 | |||
687846321f | |||
cb9e259f8c | |||
e0291b72dd | |||
c95cb9fbee | |||
feae2312d3 | |||
d66f51af1d | |||
924ebf2be6 | |||
ce76861739 | |||
216c6d04d4 | |||
ec89f9432b | |||
6da48d5a3b | |||
d6478ac920 | |||
5c3efde9cf | |||
18f017928c | |||
6ec86ab959 | |||
5c0aa6390b | |||
7f7bb0871f | |||
aa0b46906d | |||
c8c4ce0b41 | |||
0511dbf3c7 | |||
5020e898dd | |||
473e5bfe50 | |||
58a68d3f37 | |||
fe019a14ce | |||
8da1344596 | |||
16b2efb2af | |||
3ecdae98e5 | |||
66eb3eb436 | |||
3f2a332d5c | |||
32aa27e177 | |||
3157963dee | |||
e9c3163c11 | |||
0ca6ae23fb | |||
b1f930a471 | |||
a1f1fbfcfb | |||
0c83571e6d | |||
dadf1d4aa4 | |||
91ef6c25d5 | |||
d087c5629d | |||
0a5649fcb9 | |||
7060ce3fe4 | |||
cf0e7e1e68 | |||
64b1bd4de9 | |||
d0cb503f50 | |||
9df0d6da00 | |||
9a79ef701b | |||
c6fc7ff4aa | |||
8d739c6f72 | |||
771cbc0888 | |||
3a7e2d01f0 | |||
dfb277d636 | |||
4bb515366d | |||
5644e40763 | |||
b704e9868b | |||
5b35ec6cf0 | |||
d4e2d7a904 | |||
8dcc2a101d | |||
c504a7c098 | |||
e8d7b0cdee | |||
3a2c969830 | |||
06766a2af4 | |||
c7302c70d8 | |||
348c200f39 | |||
042b9f3f60 | |||
f57de93ac2 | |||
8e303466b0 | |||
5e4ff97b97 | |||
7eb014d5f9 | |||
753e52ff70 | |||
5a5913d5fe | |||
55be4935f1 | |||
e71fad8546 | |||
75b70008e3 | |||
36399604fc | |||
281c94349a | |||
86e723f38c | |||
c9e4bb48e7 | |||
ae0f6f8183 | |||
42e9ca5cfc | |||
9796231dd9 | |||
589bcf247f | |||
4d3f09f011 | |||
00d1057ac6 | |||
1c2aaa4c46 | |||
99add10a4e | |||
9ebe88a7b4 | |||
3928e65d66 | |||
942908ca35 | |||
361865574b | |||
eace55a4e8 | |||
25a898b219 | |||
eeba5d4771 | |||
0a2b512b1d | |||
572837bf70 | |||
36f9d9bc61 | |||
348222f36c | |||
3df5851ab5 | |||
34c9c7d5f3 | |||
939ceea272 | |||
ec508607e7 | |||
606add4f12 | |||
83a8ecf797 | |||
29fc7985dd | |||
2ddba2fd01 | |||
d806823773 | |||
141d8cf7c2 | |||
f39bad6499 | |||
d591307a22 | |||
e26c23efb6 | |||
d638122d3a | |||
3b0f77e8d3 | |||
823ccdfc27 | |||
a217d5dbb0 | |||
07ad3e613e | |||
295b90946b | |||
8f37ae840d | |||
8a2ff91cdc | |||
5f6f2c02ad | |||
b88ff0340c | |||
3001ce4276 | |||
763a6e7ca2 | |||
be163e81e6 | |||
e6c3e22bf9 | |||
335a60d717 | |||
1b1e5c1af7 | |||
e2e70a3c41 | |||
6d46d5e96b | |||
e7a7c5910e | |||
0f9042aa4b | |||
7ed3a30d5a | |||
03207ba7cb | |||
4aaeb75bf3 | |||
c0aded3ef0 | |||
6cdf7a43da | |||
be5554664a | |||
30ff72f409 | |||
5517a42c1c | |||
ad666aace9 | |||
004ea96f59 | |||
8c9b211a50 | |||
1bc1d185b6 | |||
fde97ce507 | |||
dce6aa6330 | |||
b4c7a9ed26 | |||
97ee1d891a | |||
2a5af9f86b | |||
5772f3aa68 | |||
6af4161648 | |||
8567e317c9 | |||
2c1e1d62fb | |||
5dbcf6e4bf | |||
7774f574bf | |||
176b6cbe61 | |||
2465e21977 | |||
adf242b3fd | |||
6bd4fff2ce | |||
8f2834029e | |||
e6da20ee51 | |||
1758b97d67 | |||
1d783f8248 | |||
945f4a832e | |||
a7b0ab1879 | |||
ee1d52d8bf | |||
47d62c0000 | |||
35b7b141d6 | |||
b8295de049 | |||
e1cb5015a3 | |||
6164925a43 | |||
ff7f5c3667 | |||
3f5025f2ab | |||
3c84f9ac3a | |||
686c988b59 | |||
7a5e58d177 | |||
0b238899a3 | |||
87518100b7 | |||
c86a3f547a | |||
726c69b325 | |||
8d6661cca1 | |||
e6078e432d | |||
6002c0a5c3 | |||
7ae4a5d78f | |||
22fbd0ce94 | |||
05dec6a5d8 | |||
8c54a1df3d | |||
6c347b5ad0 | |||
ae5a03aa37 | |||
f5cc643957 | |||
e5fdb97aab | |||
642d713a11 | |||
7afa65f762 | |||
f57104d53a | |||
e031c90f3a | |||
be7c6beb59 | |||
c874a22952 | |||
334883bef2 | |||
4160bb0a63 | |||
48310a2c7d | |||
094c72f13f | |||
3bc80c3e5e | |||
b2209de854 | |||
8f47891d3a | |||
d6147b0393 | |||
f151b92974 | |||
4dbf09a097 | |||
3cd2bb4ec9 | |||
09b67d1fd6 | |||
9b75abd7f4 | |||
42863d4395 | |||
d9c01ab5be | |||
191f2bc78c | |||
a7068ce817 | |||
a6cc049291 | |||
feadbbb1ce | |||
a0fa6d8237 | |||
e367105c5a | |||
a6ffa92aac | |||
4f2a444cbc | |||
46ef623c76 | |||
710bdce3a6 | |||
0c25932c97 | |||
9aa021e3a2 | |||
39eeaea355 | |||
550f1b63d4 | |||
9ef92f279b | |||
f3f9334349 | |||
0900182cd0 | |||
c84a94a394 | |||
5b5e8a69ca | |||
b51f0c8ca0 | |||
e955f6adc1 | |||
d8a28fb74a | |||
b5573beb6a | |||
4f96601851 | |||
4b6cf81219 | |||
81f2401a3f | |||
ccada234bc | |||
9403891143 | |||
8f1725b8e0 | |||
d040c2475e | |||
3b0b8aabcd | |||
f8483b55e3 | |||
3ae3dc784a | |||
7cd5576d1a | |||
493aca2eb9 | |||
eca04f8488 | |||
530118967a | |||
a50be773c2 | |||
43ca92ac12 | |||
dfedbfd94d | |||
f6ff52b310 | |||
6857684d64 | |||
97784a9ef7 | |||
cb7c2b24f2 | |||
61dd064a6c | |||
85f697a746 | |||
78fece539a | |||
6cc9f4c54c | |||
f262e6f183 | |||
e351c333fc | |||
570ee4c3a6 | |||
2b1d0fde3a | |||
5e53da0afa | |||
14ff5c9f41 | |||
9b18b787a9 | |||
4f7c56a4b8 | |||
6d2e52d632 | |||
f1ac19cca1 | |||
6e9fbc325a | |||
3605f0e13c | |||
27d02480ac | |||
c3c8a1c49b | |||
dd82a6dac2 | |||
c085081c5f | |||
f91cfe2c96 | |||
1ca47c0454 | |||
f558b382cb | |||
dc449dfe42 | |||
5064ac33ed | |||
31a433974d | |||
0c50603e22 | |||
a7339939c7 | |||
d28914eac8 | |||
eca0d48e05 | |||
de8f8614e3 | |||
9a415c8795 | |||
e99213c678 | |||
4d4f9f0bdf | |||
8d419dc74f | |||
da59e33687 | |||
b3b15468fb | |||
f2e4826b14 | |||
107b613be5 | |||
e35f890241 | |||
222c950505 | |||
3282b0e693 | |||
f6a2285e22 | |||
41d9f79ba9 | |||
3a8fa9192a | |||
40440a4056 | |||
84180f35a3 | |||
14f672253a | |||
04222e3bf0 | |||
b461f00849 | |||
88bf4596df | |||
d6fa2cae4f | |||
9eca79aa1d | |||
eb0edaaac0 | |||
241e8ab8f9 | |||
99780104e0 | |||
85e165bd29 | |||
9c928ff0a8 | |||
6c1716c0ba | |||
fc6ab00e30 | |||
a2d731bfff | |||
0d8af58e16 | |||
f5ac7bf278 | |||
b68304c976 | |||
83c4a8b27b | |||
fa7eb92481 | |||
ecb3edf90b | |||
9dc4de82ff | |||
292f4179d0 | |||
43a77a5dcd | |||
9b621960d1 | |||
de5a71fdf8 | |||
3e65555d0f | |||
e739b10065 | |||
ec2f271ed4 | |||
fcf3ec7036 | |||
65d334b947 | |||
75d894d648 | |||
0c35400e64 | |||
b10c48d080 | |||
d06c0352fc | |||
c242a492fc | |||
702d338c07 | |||
95f7bbab51 | |||
afb5229336 | |||
01c80e6e9e | |||
8f8adb46a0 | |||
17b4c36758 | |||
20fbebed54 | |||
bbf23dea15 | |||
060ebe49aa | |||
5300b1a8f9 | |||
bfe65b0216 | |||
42d2c20ce3 | |||
cc4a8a962b | |||
7887ccaa41 | |||
1fa36c0aff | |||
46bf14025b | |||
7e1cbb184d | |||
7a3eaa944e | |||
c24318f6b8 | |||
af383720b7 | |||
8d231c0b45 | |||
0b988bd00c | |||
6756db0518 | |||
fd6f304796 | |||
19aea13c0e | |||
eaf2469a9d | |||
5885e1da18 | |||
b644cbb772 | |||
0fdf6ed6eb | |||
d346979cc1 | |||
45d467922a | |||
07f5681e31 | |||
2c12bfeace | |||
8a5296c6ff | |||
46ea79c2be | |||
a2b34eee57 | |||
e229b8c965 | |||
3b5e9ccd16 | |||
429ceb1c59 | |||
d3901b9537 | |||
1ea41fdb69 | |||
fe60ca8f99 | |||
9db1ef06cb | |||
45807f42bd | |||
1020a86f5e | |||
5ae87532c0 | |||
c6822b0322 | |||
7f5848eb24 | |||
2e2e6bb8c7 | |||
d7f5a96d77 | |||
c799df3eef | |||
e780840dc8 | |||
df389964e6 | |||
57ededd506 | |||
63ad9002b5 | |||
37482266e8 | |||
2f54157450 | |||
4067e175fc | |||
2ec568deaf | |||
b2db728bb4 | |||
6bdc75c7ee | |||
ba84a1b2f5 | |||
8c7a271e4f | |||
ae863b6972 | |||
904bba4a76 | |||
aa6f7cfa4f | |||
700f866a80 | |||
5600b180ee | |||
25b5b58ae2 | |||
d91faa1527 | |||
c0f7a38cb4 | |||
3baf756179 | |||
d6a1a169c4 | |||
bfc54a0c97 | |||
a06b480df8 | |||
6bcecf62bd | |||
04ce05011d | |||
6b6f4c1d3f | |||
46198052b4 | |||
89cbbb047f | |||
c4c1a55661 | |||
0d94788608 | |||
f061a6f04f | |||
b882ee9763 | |||
c160391026 | |||
a477e5a878 | |||
34bff81e3a | |||
f82bf4bc29 | |||
5f4a2b34dc | |||
9096cb3418 | |||
6f9916358c | |||
45c3e5f209 | |||
ed9fe8fa57 | |||
0dcaeb5994 | |||
81d335e716 | |||
6d43488caf | |||
d1e008185c | |||
2b53937058 | |||
ddfb3476b5 | |||
58b6bd7568 | |||
9f0913fe17 | |||
bd204f23cb | |||
34b2e609bd | |||
4450a21225 | |||
35b9bfc8bb | |||
68e0aa2565 | |||
8b2d3b7fae | |||
b84613dcd4 | |||
1a1b3661ed | |||
c74dc95b26 | |||
908d79856f | |||
c98f8663d7 | |||
15665f3c85 | |||
f6a886c477 | |||
c2a5f0a8fd | |||
ecfa1a357a | |||
fca0446b5c | |||
433572293b | |||
9bdce94487 | |||
677cae894c | |||
8679b1c367 | |||
24240ca4fd | |||
07542abf8b | |||
98313d07e6 | |||
bccb25c4af | |||
fc824ad5c8 | |||
75bfc39ca7 | |||
147d88cbb0 | |||
b477ccdd2a | |||
76a58c5873 | |||
1d257cc0e6 | |||
8d19ba87d6 | |||
51e872d3ad | |||
d22fdc3abb | |||
3003fb55e6 | |||
8161910264 | |||
dfffc65016 | |||
6d6877421b | |||
1f4e9e73b4 | |||
1adc1e63cc | |||
e53e6fe8b4 | |||
7d92edbcb6 | |||
7300da5fca | |||
af6b5d2d72 | |||
df05d0520d | |||
397b6a2fe4 | |||
e1eda68182 | |||
d6e151268e | |||
afdb131e4b | |||
f222a28895 | |||
b2aeaf2e68 | |||
43dfcfb8cf | |||
2c2b469200 | |||
b917c812d3 | |||
0f69c3cf2c | |||
ee872a5365 | |||
e853e16834 | |||
4ed5f6ac53 | |||
ba34deb0cd | |||
144b7a982f | |||
8557b19629 | |||
a5666b8f65 | |||
e694a40cea | |||
f985abcc22 | |||
1c8c471fc6 | |||
a51cab4c39 | |||
b1ee7131d4 | |||
07b1ff4bae | |||
6f1e00e737 | |||
234e77d08a | |||
48112dfed7 | |||
a516f173ad | |||
822b78237a | |||
933c8ff024 | |||
9e345895ff | |||
05d3bee328 | |||
1d69ea536f | |||
bdd1ac5419 | |||
e62947ab9f | |||
d887e0df34 | |||
f09a62f8df | |||
0f17a8a35c | |||
0f2fe87b5d | |||
49716a8bf5 | |||
1f0e6d05c8 | |||
10982190e7 | |||
834ba1987e | |||
1a1b31e8a0 |
13
.drone.yml
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
---
|
||||||
|
kind: pipeline
|
||||||
|
type: docker
|
||||||
|
name: default
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: cargo_check
|
||||||
|
image: rust
|
||||||
|
commands:
|
||||||
|
- rustup component add clippy
|
||||||
|
- cargo clippy -- -D warnings
|
||||||
|
- cargo test
|
||||||
|
|
3457
Cargo.lock
generated
63
Cargo.toml
@ -1,33 +1,42 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "basic-oidc"
|
name = "basic-oidc"
|
||||||
version = "0.1.0"
|
version = "0.1.5"
|
||||||
edition = "2021"
|
edition = "2024"
|
||||||
|
|
||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
actix = "0.13.0"
|
actix = "0.13.5"
|
||||||
actix-identity = "0.4.0"
|
actix-identity = "0.8.0"
|
||||||
actix-web = "4"
|
actix-web = "4.11.0"
|
||||||
clap = { version = "3.1.9", features = ["derive", "env"] }
|
actix-session = { version = "0.10.1", features = ["cookie-session"] }
|
||||||
include_dir = "0.7.2"
|
actix-remote-ip = "0.1.0"
|
||||||
log = "0.4.16"
|
clap = { version = "4.5.40", features = ["derive", "env"] }
|
||||||
serde_json = "1.0.79"
|
include_dir = "0.7.4"
|
||||||
serde_yaml = "0.8.23"
|
log = "0.4.27"
|
||||||
env_logger = "0.9.0"
|
serde_json = "1.0.140"
|
||||||
serde = { version = "1.0.136", features = ["derive"] }
|
serde_yaml = "0.9.34"
|
||||||
bcrypt = "0.11.0"
|
env_logger = "0.11.8"
|
||||||
uuid = { version = "0.8.2", features = ["v4"] }
|
serde = { version = "1.0.219", features = ["derive"] }
|
||||||
mime_guess = "2.0.4"
|
bcrypt = "0.17.0"
|
||||||
askama = "0.11.1"
|
uuid = { version = "1.17.0", features = ["v4"] }
|
||||||
futures-util = "0.3.21"
|
mime_guess = "2.0.5"
|
||||||
urlencoding = "2.1.0"
|
askama = "0.14.0"
|
||||||
rand = "0.8.5"
|
futures-util = "0.3.31"
|
||||||
base64 = "0.13.0"
|
urlencoding = "2.1.3"
|
||||||
jwt-simple = "0.10.9"
|
rand = "0.9.1"
|
||||||
digest = "0.10.3"
|
base64 = "0.22.1"
|
||||||
sha2 = "0.10.2"
|
jwt-simple = { version = "0.12.12", default-features = false, features = ["pure-rust"] }
|
||||||
lazy-regex = "2.3.0"
|
digest = "0.10.7"
|
||||||
totp_rfc6238 = "0.5.0"
|
sha2 = "0.10.9"
|
||||||
base32 = "0.4.0"
|
lazy-regex = "3.4.1"
|
||||||
qrcode-generator = "4.1.4"
|
totp_rfc6238 = "0.6.1"
|
||||||
|
base32 = "0.5.1"
|
||||||
|
qrcode-generator = "5.0.0"
|
||||||
|
webauthn-rs = { version = "0.5.1", features = ["danger-allow-state-serialisation"] }
|
||||||
|
url = "2.5.4"
|
||||||
|
light-openid = { version = "1.0.4", features = ["crypto-wrapper"] }
|
||||||
|
bincode = "2.0.1"
|
||||||
|
chrono = "0.4.41"
|
||||||
|
lazy_static = "1.5.0"
|
||||||
|
mailchecker = "6.0.17"
|
||||||
|
@ -1,5 +1,9 @@
|
|||||||
FROM debian:bullseye-slim
|
FROM debian:bookworm-slim
|
||||||
|
|
||||||
|
RUN apt-get update \
|
||||||
|
&& apt-get install -y libcurl4 \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
COPY basic-oidc /usr/local/bin/basic-oidc
|
COPY basic-oidc /usr/local/bin/basic-oidc
|
||||||
|
|
||||||
ENTRYPOINT /usr/local/bin/basic-oidc
|
ENTRYPOINT ["/usr/local/bin/basic-oidc"]
|
||||||
|
81
README.md
@ -1,33 +1,80 @@
|
|||||||
# Basic OIDC
|
# Basic OIDC
|
||||||
|
[](https://drone.communiquons.org/pierre/BasicOIDC)
|
||||||
|
|
||||||
Basic & lightweight OpenID provider, written in Rust using the Actix framework.
|
Basic & lightweight OpenID provider, written in Rust using the Actix framework.
|
||||||
|
|
||||||
**WARNING :** This tool has not been audited, use it at your own risks!
|
**WARNING :** This tool has not been audited, use it at your own risks!
|
||||||
|
|
||||||
BasicOIDC operates without any database, just with two files :
|
BasicOIDC operates without any database, just with three files :
|
||||||
* `clients.yaml`: a list of authorized relying parties.
|
* `clients.yaml`: a list of authorized relying parties.
|
||||||
|
* `providers.yaml`: a list of upstream providers for authentication federation (this file is optional)
|
||||||
* `users.json`: a list of users, managed through a web UI.
|
* `users.json`: a list of users, managed through a web UI.
|
||||||
|
|
||||||
|
## Configuration
|
||||||
You can configure a list of clients (Relying Parties) in a `clients.yaml` file with the following syntax :
|
You can configure a list of clients (Relying Parties) in a `clients.yaml` file with the following syntax :
|
||||||
```yaml
|
```yaml
|
||||||
|
# Client ID
|
||||||
- id: gitea
|
- id: gitea
|
||||||
|
# Client name
|
||||||
name: Gitea
|
name: Gitea
|
||||||
|
# Client description
|
||||||
description: Git with a cup of tea
|
description: Git with a cup of tea
|
||||||
|
# Client secret. Specify this value to use authorization code flow, remove it for implicit authentication flow
|
||||||
secret: TOP_SECRET
|
secret: TOP_SECRET
|
||||||
|
# The URL where user shall be redirected after authentication
|
||||||
redirect_uri: https://mygit.mywebsite.com/
|
redirect_uri: https://mygit.mywebsite.com/
|
||||||
|
# Optional, If you want new accounts to be granted access to this client by default
|
||||||
|
default: true
|
||||||
|
# Optional, If you want the client to be granted to every user, regardless their account configuration
|
||||||
|
granted_to_all_users: true
|
||||||
|
# Optional, If you want users to have performed recent second factor authentication before accessing this client, set this setting to true
|
||||||
|
enforce_2fa_auth: true
|
||||||
|
# Optional, claims to be added to the ID token payload.
|
||||||
|
# The following placeholders can be set, they will the replaced when the token is created:
|
||||||
|
# * {username}: user name of the user
|
||||||
|
# * {mail}: email address of the user
|
||||||
|
# * {first_name}: first name of the user
|
||||||
|
# * {last_name}: last name of the user
|
||||||
|
# * {uid}: user id of the user
|
||||||
|
claims_id_token:
|
||||||
|
groups: ["group_{user}"]
|
||||||
|
service: "auth"
|
||||||
|
# Optional, claims to be added to the user info endpoint response
|
||||||
|
# The placeholders of `claims_id_token` can also be used here
|
||||||
|
claims_user_info:
|
||||||
|
groups: ["group_{user}"]
|
||||||
|
service: "auth"
|
||||||
```
|
```
|
||||||
|
|
||||||
On the first run, BasicOIDC will create a new administrator with credentials `admin` / `admin`. On first login you will have to change these default credentials.
|
On the first run, BasicOIDC will create a new administrator with credentials `admin` / `admin`. On first login you will have to change these default credentials.
|
||||||
|
|
||||||
In order to run BasicOIDC for development, you will need to create a least an empty `clients.yaml` file inside the storage directory.
|
In order to run BasicOIDC for development, you will need to create a least an empty `clients.yaml` file inside the storage directory.
|
||||||
|
|
||||||
Features :
|
## Features
|
||||||
* [x] `authorization_code` flow
|
* [x] `authorization_code` flow
|
||||||
|
* [x] `implicit` flow
|
||||||
* [x] Client authentication using secrets
|
* [x] Client authentication using secrets
|
||||||
* [x] Bruteforce protection
|
* [x] Bruteforce protection
|
||||||
* [ ] 2 factors authentication
|
* [x] 2 factors authentication
|
||||||
* [x] TOTP (authenticator app)
|
* [x] TOTP (authenticator app)
|
||||||
* [ ] Using a security key
|
* [x] Using a security key (Webauthn)
|
||||||
* [ ] Fully responsive webui
|
* [ ] Fully responsive webui
|
||||||
|
* [x] `robots.txt` prevents indexing
|
||||||
|
* [x] Support authentication from upstream provider
|
||||||
|
|
||||||
|
## Add an upstream provider
|
||||||
|
You can add as much upstream provider as you want, using the following syntax in `providers.yaml`:
|
||||||
|
```yaml
|
||||||
|
- id: gitlab
|
||||||
|
name: GitLab
|
||||||
|
logo: gitlab # Can be either gitea, gitlab, github, microsoft, google or a full URL
|
||||||
|
client_id: CLIENT_ID_GIVEN_BY_PROVIDER
|
||||||
|
client_secret: CLIENT_SECRET_GIVEN_BY_PROVIDER
|
||||||
|
configuration_url: https://gitlab.com/.well-known/openid-configuration
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
> Warning! Self-registration has not been implemented, therfore the accounts must have been previously created through the administration.
|
||||||
|
|
||||||
## Compiling
|
## Compiling
|
||||||
You will need the Rust toolchain to compile this project. To build it for production, just run:
|
You will need the Rust toolchain to compile this project. To build it for production, just run:
|
||||||
@ -35,5 +82,31 @@ You will need the Rust toolchain to compile this project. To build it for produc
|
|||||||
cargo build --release
|
cargo build --release
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Testing with OAauth proxy
|
||||||
|
If you want to test the solution with OAuth proxy, you can try to adapt the following commands (considering `192.168.2.103` is your local IP address):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
export IP=192.168.2.103
|
||||||
|
|
||||||
|
# In a shell, start BasicOID
|
||||||
|
RUST_LOG=debug cargo run -- -s storage -w "http://$IP.nip.io:8000"
|
||||||
|
|
||||||
|
# In another shell, run OAuth proxy
|
||||||
|
docker run --rm -p 4180:4180 quay.io/oauth2-proxy/oauth2-proxy:latest --provider=oidc --email-domain=* --client-id=oauthproxy --client-secret=secretoauth --cookie-secret=SECRETCOOKIE1234 --oidc-issuer-url=http://$IP.nip.io:8000 --http-address 0.0.0.0:4180 --upstream http://$IP --redirect-url http://$IP:4180/oauth2/callback --cookie-secure=false
|
||||||
|
```
|
||||||
|
|
||||||
|
Corresponding client configuration:
|
||||||
|
```yaml
|
||||||
|
- id: oauthproxy
|
||||||
|
name: Oauth proxy
|
||||||
|
description: oauth proxy
|
||||||
|
secret: secretoauth
|
||||||
|
redirect_uri: http://192.168.2.103:4180/
|
||||||
|
```
|
||||||
|
|
||||||
|
> Note: We do need to use real domain name instead of IP address due to the `webauthn-rs` crate limitations. We therefore use the `nip.io` domain helper.
|
||||||
|
|
||||||
|
OAuth proxy can then be access on this URL: http://192.168.2.103:4180/
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
If you wish to contribute to this software, feel free to send an email to contact@communiquons.org to get an account on my system, managed by BasicOIDC :)
|
If you wish to contribute to this software, feel free to send an email to contact@communiquons.org to get an account on my system, managed by BasicOIDC :)
|
@ -73,3 +73,10 @@ body {
|
|||||||
.text-muted {
|
.text-muted {
|
||||||
color: #c6c4c4 !important;
|
color: #c6c4c4 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.form-floating > .form-control:focus ~ label::after,
|
||||||
|
.form-floating > .form-control:not(:placeholder-shown) ~ label::after,
|
||||||
|
.form-floating > .form-control-plaintext ~ label::after,
|
||||||
|
.form-floating > .form-select ~ label::after {
|
||||||
|
background-color: unset !important;
|
||||||
|
}
|
@ -13,3 +13,11 @@ body {
|
|||||||
padding: 3rem;
|
padding: 3rem;
|
||||||
overflow-y: scroll;
|
overflow-y: scroll;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.nav-link.link-dark {
|
||||||
|
color: white !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-control::placeholder {
|
||||||
|
color: #555;
|
||||||
|
}
|
6915
assets/css/bootstrap.css
vendored
12
assets/img/brands/gitea.svg
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg version="1.1" id="main_outline" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 640 640" style="enable-background:new 0 0 640 640;" xml:space="preserve"><link xmlns="" type="text/css" rel="stylesheet" id="dark-mode-custom-link"/><link xmlns="" type="text/css" rel="stylesheet" id="dark-mode-general-link"/><style xmlns="" lang="en" type="text/css" id="dark-mode-custom-style"/><style xmlns="" lang="en" type="text/css" id="dark-mode-native-style"/><style xmlns="" lang="en" type="text/css" id="dark-mode-native-sheet"/>
|
||||||
|
<g>
|
||||||
|
<path id="teabag" style="fill:#FFFFFF" d="M395.9,484.2l-126.9-61c-12.5-6-17.9-21.2-11.8-33.8l61-126.9c6-12.5,21.2-17.9,33.8-11.8 c17.2,8.3,27.1,13,27.1,13l-0.1-109.2l16.7-0.1l0.1,117.1c0,0,57.4,24.2,83.1,40.1c3.7,2.3,10.2,6.8,12.9,14.4 c2.1,6.1,2,13.1-1,19.3l-61,126.9C423.6,484.9,408.4,490.3,395.9,484.2z"/>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<path style="fill:#609926" d="M622.7,149.8c-4.1-4.1-9.6-4-9.6-4s-117.2,6.6-177.9,8c-13.3,0.3-26.5,0.6-39.6,0.7c0,39.1,0,78.2,0,117.2 c-5.5-2.6-11.1-5.3-16.6-7.9c0-36.4-0.1-109.2-0.1-109.2c-29,0.4-89.2-2.2-89.2-2.2s-141.4-7.1-156.8-8.5 c-9.8-0.6-22.5-2.1-39,1.5c-8.7,1.8-33.5,7.4-53.8,26.9C-4.9,212.4,6.6,276.2,8,285.8c1.7,11.7,6.9,44.2,31.7,72.5 c45.8,56.1,144.4,54.8,144.4,54.8s12.1,28.9,30.6,55.5c25,33.1,50.7,58.9,75.7,62c63,0,188.9-0.1,188.9-0.1s12,0.1,28.3-10.3 c14-8.5,26.5-23.4,26.5-23.4s12.9-13.8,30.9-45.3c5.5-9.7,10.1-19.1,14.1-28c0,0,55.2-117.1,55.2-231.1 C633.2,157.9,624.7,151.8,622.7,149.8z M125.6,353.9c-25.9-8.5-36.9-18.7-36.9-18.7S69.6,321.8,60,295.4 c-16.5-44.2-1.4-71.2-1.4-71.2s8.4-22.5,38.5-30c13.8-3.7,31-3.1,31-3.1s7.1,59.4,15.7,94.2c7.2,29.2,24.8,77.7,24.8,77.7 S142.5,359.9,125.6,353.9z M425.9,461.5c0,0-6.1,14.5-19.6,15.4c-5.8,0.4-10.3-1.2-10.3-1.2s-0.3-0.1-5.3-2.1l-112.9-55 c0,0-10.9-5.7-12.8-15.6c-2.2-8.1,2.7-18.1,2.7-18.1L322,273c0,0,4.8-9.7,12.2-13c0.6-0.3,2.3-1,4.5-1.5c8.1-2.1,18,2.8,18,2.8 l110.7,53.7c0,0,12.6,5.7,15.3,16.2c1.9,7.4-0.5,14-1.8,17.2C474.6,363.8,425.9,461.5,425.9,461.5z"/>
|
||||||
|
<path style="fill:#609926" d="M326.8,380.1c-8.2,0.1-15.4,5.8-17.3,13.8c-1.9,8,2,16.3,9.1,20c7.7,4,17.5,1.8,22.7-5.4 c5.1-7.1,4.3-16.9-1.8-23.1l24-49.1c1.5,0.1,3.7,0.2,6.2-0.5c4.1-0.9,7.1-3.6,7.1-3.6c4.2,1.8,8.6,3.8,13.2,6.1 c4.8,2.4,9.3,4.9,13.4,7.3c0.9,0.5,1.8,1.1,2.8,1.9c1.6,1.3,3.4,3.1,4.7,5.5c1.9,5.5-1.9,14.9-1.9,14.9 c-2.3,7.6-18.4,40.6-18.4,40.6c-8.1-0.2-15.3,5-17.7,12.5c-2.6,8.1,1.1,17.3,8.9,21.3c7.8,4,17.4,1.7,22.5-5.3 c5-6.8,4.6-16.3-1.1-22.6c1.9-3.7,3.7-7.4,5.6-11.3c5-10.4,13.5-30.4,13.5-30.4c0.9-1.7,5.7-10.3,2.7-21.3 c-2.5-11.4-12.6-16.7-12.6-16.7c-12.2-7.9-29.2-15.2-29.2-15.2s0-4.1-1.1-7.1c-1.1-3.1-2.8-5.1-3.9-6.3c4.7-9.7,9.4-19.3,14.1-29 c-4.1-2-8.1-4-12.2-6.1c-4.8,9.8-9.7,19.7-14.5,29.5c-6.7-0.1-12.9,3.5-16.1,9.4c-3.4,6.3-2.7,14.1,1.9,19.8 C343.2,346.5,335,363.3,326.8,380.1z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.9 KiB |
1
assets/img/brands/github.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg width="98" height="96" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M48.854 0C21.839 0 0 22 0 49.217c0 21.756 13.993 40.172 33.405 46.69 2.427.49 3.316-1.059 3.316-2.362 0-1.141-.08-5.052-.08-9.127-13.59 2.934-16.42-5.867-16.42-5.867-2.184-5.704-5.42-7.17-5.42-7.17-4.448-3.015.324-3.015.324-3.015 4.934.326 7.523 5.052 7.523 5.052 4.367 7.496 11.404 5.378 14.235 4.074.404-3.178 1.699-5.378 3.074-6.6-10.839-1.141-22.243-5.378-22.243-24.283 0-5.378 1.94-9.778 5.014-13.2-.485-1.222-2.184-6.275.486-13.038 0 0 4.125-1.304 13.426 5.052a46.97 46.97 0 0 1 12.214-1.63c4.125 0 8.33.571 12.213 1.63 9.302-6.356 13.427-5.052 13.427-5.052 2.67 6.763.97 11.816.485 13.038 3.155 3.422 5.015 7.822 5.015 13.2 0 18.905-11.404 23.06-22.324 24.283 1.78 1.548 3.316 4.481 3.316 9.126 0 6.6-.08 11.897-.08 13.526 0 1.304.89 2.853 3.316 2.364 19.412-6.52 33.405-24.935 33.405-46.691C97.707 22 75.788 0 48.854 0z" fill="#fff"/></svg>
|
After Width: | Height: | Size: 960 B |
1
assets/img/brands/gitlab.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 380 380"><defs><style>.cls-1{fill:#e24329;}.cls-2{fill:#fc6d26;}.cls-3{fill:#fca326;}</style></defs><g id="LOGO"><path class="cls-1" d="M282.83,170.73l-.27-.69-26.14-68.22a6.81,6.81,0,0,0-2.69-3.24,7,7,0,0,0-8,.43,7,7,0,0,0-2.32,3.52l-17.65,54H154.29l-17.65-54A6.86,6.86,0,0,0,134.32,99a7,7,0,0,0-8-.43,6.87,6.87,0,0,0-2.69,3.24L97.44,170l-.26.69a48.54,48.54,0,0,0,16.1,56.1l.09.07.24.17,39.82,29.82,19.7,14.91,12,9.06a8.07,8.07,0,0,0,9.76,0l12-9.06,19.7-14.91,40.06-30,.1-.08A48.56,48.56,0,0,0,282.83,170.73Z"/><path class="cls-2" d="M282.83,170.73l-.27-.69a88.3,88.3,0,0,0-35.15,15.8L190,229.25c19.55,14.79,36.57,27.64,36.57,27.64l40.06-30,.1-.08A48.56,48.56,0,0,0,282.83,170.73Z"/><path class="cls-3" d="M153.43,256.89l19.7,14.91,12,9.06a8.07,8.07,0,0,0,9.76,0l12-9.06,19.7-14.91S209.55,244,190,229.25C170.45,244,153.43,256.89,153.43,256.89Z"/><path class="cls-2" d="M132.58,185.84A88.19,88.19,0,0,0,97.44,170l-.26.69a48.54,48.54,0,0,0,16.1,56.1l.09.07.24.17,39.82,29.82s17-12.85,36.57-27.64Z"/></g></svg>
|
After Width: | Height: | Size: 1.0 KiB |
1
assets/img/brands/google.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="705.6" height="720" viewBox="0 0 186.69 190.5" xmlns:v="https://vecta.io/nano"><link xmlns="" type="text/css" rel="stylesheet" id="dark-mode-custom-link"/><link xmlns="" type="text/css" rel="stylesheet" id="dark-mode-general-link"/><style xmlns="" lang="en" type="text/css" id="dark-mode-custom-style"/><style xmlns="" lang="en" type="text/css" id="dark-mode-native-style"/><style xmlns="" lang="en" type="text/css" id="dark-mode-native-sheet"/><g transform="translate(1184.583 765.171)"><path clip-path="none" mask="none" d="M-1089.333-687.239v36.888h51.262c-2.251 11.863-9.006 21.908-19.137 28.662l30.913 23.986c18.011-16.625 28.402-41.044 28.402-70.052 0-6.754-.606-13.249-1.732-19.483z" fill="#4285f4"/><path clip-path="none" mask="none" d="M-1142.714-651.791l-6.972 5.337-24.679 19.223h0c15.673 31.086 47.796 52.561 85.03 52.561 25.717 0 47.278-8.486 63.038-23.033l-30.913-23.986c-8.486 5.715-19.31 9.179-32.125 9.179-24.765 0-45.806-16.712-53.34-39.226z" fill="#34a853"/><path clip-path="none" mask="none" d="M-1174.365-712.61c-6.494 12.815-10.217 27.276-10.217 42.689s3.723 29.874 10.217 42.689c0 .086 31.693-24.592 31.693-24.592-1.905-5.715-3.031-11.776-3.031-18.098s1.126-12.383 3.031-18.098z" fill="#fbbc05"/><path d="M-1089.333-727.244c14.028 0 26.497 4.849 36.455 14.201l27.276-27.276c-16.539-15.413-38.013-24.852-63.731-24.852-37.234 0-69.359 21.388-85.032 52.561l31.692 24.592c7.533-22.514 28.575-39.226 53.34-39.226z" fill="#ea4335" clip-path="none" mask="none"/></g></svg>
|
After Width: | Height: | Size: 1.5 KiB |
1
assets/img/brands/microsoft.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 21 21"><path fill="#f35325" d="M0 0h10v10H0z"/><path fill="#81bc06" d="M11 0h10v10H11z"/><path fill="#05a6f0" d="M0 11h10v10H0z"/><path fill="#ffba08" d="M11 11h10v10H11z"/></svg>
|
After Width: | Height: | Size: 232 B |
BIN
assets/img/countries/ac.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
assets/img/countries/ad.png
Normal file
After Width: | Height: | Size: 579 B |
BIN
assets/img/countries/ae.png
Normal file
After Width: | Height: | Size: 185 B |
BIN
assets/img/countries/af.png
Normal file
After Width: | Height: | Size: 541 B |
BIN
assets/img/countries/ag.png
Normal file
After Width: | Height: | Size: 846 B |
BIN
assets/img/countries/ai.png
Normal file
After Width: | Height: | Size: 923 B |
BIN
assets/img/countries/al.png
Normal file
After Width: | Height: | Size: 533 B |
BIN
assets/img/countries/am.png
Normal file
After Width: | Height: | Size: 175 B |
BIN
assets/img/countries/ao.png
Normal file
After Width: | Height: | Size: 531 B |
BIN
assets/img/countries/aq.png
Normal file
After Width: | Height: | Size: 733 B |
BIN
assets/img/countries/ar.png
Normal file
After Width: | Height: | Size: 369 B |
BIN
assets/img/countries/as.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
assets/img/countries/at.png
Normal file
After Width: | Height: | Size: 181 B |
BIN
assets/img/countries/au.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
assets/img/countries/aw.png
Normal file
After Width: | Height: | Size: 429 B |
BIN
assets/img/countries/ax.png
Normal file
After Width: | Height: | Size: 353 B |
BIN
assets/img/countries/az.png
Normal file
After Width: | Height: | Size: 406 B |
BIN
assets/img/countries/ba.png
Normal file
After Width: | Height: | Size: 738 B |
BIN
assets/img/countries/bb.png
Normal file
After Width: | Height: | Size: 499 B |
BIN
assets/img/countries/bd.png
Normal file
After Width: | Height: | Size: 491 B |
BIN
assets/img/countries/be.png
Normal file
After Width: | Height: | Size: 183 B |
BIN
assets/img/countries/bf.png
Normal file
After Width: | Height: | Size: 517 B |
BIN
assets/img/countries/bg.png
Normal file
After Width: | Height: | Size: 174 B |
BIN
assets/img/countries/bh.png
Normal file
After Width: | Height: | Size: 486 B |
BIN
assets/img/countries/bi.png
Normal file
After Width: | Height: | Size: 980 B |
BIN
assets/img/countries/bj.png
Normal file
After Width: | Height: | Size: 189 B |
BIN
assets/img/countries/bl.png
Normal file
After Width: | Height: | Size: 183 B |
BIN
assets/img/countries/bm.png
Normal file
After Width: | Height: | Size: 1018 B |
BIN
assets/img/countries/bn.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
assets/img/countries/bo.png
Normal file
After Width: | Height: | Size: 409 B |
BIN
assets/img/countries/bq.png
Normal file
After Width: | Height: | Size: 175 B |
BIN
assets/img/countries/br.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
assets/img/countries/bs.png
Normal file
After Width: | Height: | Size: 564 B |
BIN
assets/img/countries/bt.png
Normal file
After Width: | Height: | Size: 934 B |
BIN
assets/img/countries/bv.png
Normal file
After Width: | Height: | Size: 339 B |
BIN
assets/img/countries/bw.png
Normal file
After Width: | Height: | Size: 184 B |
BIN
assets/img/countries/by.png
Normal file
After Width: | Height: | Size: 676 B |
BIN
assets/img/countries/bz.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
assets/img/countries/ca.png
Normal file
After Width: | Height: | Size: 610 B |
BIN
assets/img/countries/cc.png
Normal file
After Width: | Height: | Size: 663 B |
BIN
assets/img/countries/cd.png
Normal file
After Width: | Height: | Size: 753 B |
BIN
assets/img/countries/cefta.png
Normal file
After Width: | Height: | Size: 819 B |
BIN
assets/img/countries/cf.png
Normal file
After Width: | Height: | Size: 374 B |
BIN
assets/img/countries/cg.png
Normal file
After Width: | Height: | Size: 259 B |
BIN
assets/img/countries/ch.png
Normal file
After Width: | Height: | Size: 269 B |
BIN
assets/img/countries/ci.png
Normal file
After Width: | Height: | Size: 183 B |
BIN
assets/img/countries/ck.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
assets/img/countries/cl.png
Normal file
After Width: | Height: | Size: 301 B |
BIN
assets/img/countries/cm.png
Normal file
After Width: | Height: | Size: 306 B |
BIN
assets/img/countries/cn.png
Normal file
After Width: | Height: | Size: 452 B |
BIN
assets/img/countries/co.png
Normal file
After Width: | Height: | Size: 175 B |
BIN
assets/img/countries/cp.png
Normal file
After Width: | Height: | Size: 183 B |
BIN
assets/img/countries/cr.png
Normal file
After Width: | Height: | Size: 201 B |
BIN
assets/img/countries/cu.png
Normal file
After Width: | Height: | Size: 713 B |
BIN
assets/img/countries/cv.png
Normal file
After Width: | Height: | Size: 688 B |
BIN
assets/img/countries/cw.png
Normal file
After Width: | Height: | Size: 404 B |
BIN
assets/img/countries/cx.png
Normal file
After Width: | Height: | Size: 768 B |
BIN
assets/img/countries/cy.png
Normal file
After Width: | Height: | Size: 739 B |
BIN
assets/img/countries/cz.png
Normal file
After Width: | Height: | Size: 360 B |
BIN
assets/img/countries/de.png
Normal file
After Width: | Height: | Size: 172 B |
BIN
assets/img/countries/dg.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
assets/img/countries/dj.png
Normal file
After Width: | Height: | Size: 481 B |
BIN
assets/img/countries/dk.png
Normal file
After Width: | Height: | Size: 233 B |
BIN
assets/img/countries/dm.png
Normal file
After Width: | Height: | Size: 816 B |
BIN
assets/img/countries/do.png
Normal file
After Width: | Height: | Size: 404 B |
BIN
assets/img/countries/dz.png
Normal file
After Width: | Height: | Size: 583 B |
BIN
assets/img/countries/ea.png
Normal file
After Width: | Height: | Size: 504 B |
BIN
assets/img/countries/ec.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
assets/img/countries/ee.png
Normal file
After Width: | Height: | Size: 181 B |
BIN
assets/img/countries/eg.png
Normal file
After Width: | Height: | Size: 366 B |
BIN
assets/img/countries/eh.png
Normal file
After Width: | Height: | Size: 614 B |
BIN
assets/img/countries/er.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
assets/img/countries/es-ct.png
Normal file
After Width: | Height: | Size: 202 B |
BIN
assets/img/countries/es-ga.png
Normal file
After Width: | Height: | Size: 922 B |
BIN
assets/img/countries/es.png
Normal file
After Width: | Height: | Size: 504 B |
BIN
assets/img/countries/et.png
Normal file
After Width: | Height: | Size: 641 B |
BIN
assets/img/countries/eu.png
Normal file
After Width: | Height: | Size: 613 B |
BIN
assets/img/countries/fi.png
Normal file
After Width: | Height: | Size: 266 B |
BIN
assets/img/countries/fj.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
assets/img/countries/fk.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
assets/img/countries/fm.png
Normal file
After Width: | Height: | Size: 577 B |
BIN
assets/img/countries/fo.png
Normal file
After Width: | Height: | Size: 351 B |
BIN
assets/img/countries/fr.png
Normal file
After Width: | Height: | Size: 183 B |
BIN
assets/img/countries/ga.png
Normal file
After Width: | Height: | Size: 174 B |
BIN
assets/img/countries/gb-eng.png
Normal file
After Width: | Height: | Size: 230 B |
BIN
assets/img/countries/gb-nir.png
Normal file
After Width: | Height: | Size: 630 B |
BIN
assets/img/countries/gb-sct.png
Normal file
After Width: | Height: | Size: 563 B |