mirror of
https://gitlab.crans.org/bde/nk20
synced 2025-07-20 08:01:26 +02:00
Compare commits
3 Commits
09d0a6d243
...
oidc
Author | SHA1 | Date | |
---|---|---|---|
c411197af3 | |||
cdc6f0a3f8 | |||
df0d886db9 |
@ -21,3 +21,6 @@ EMAIL_PASSWORD=CHANGE_ME
|
|||||||
# Wiki configuration
|
# Wiki configuration
|
||||||
WIKI_USER=NoteKfet2020
|
WIKI_USER=NoteKfet2020
|
||||||
WIKI_PASSWORD=
|
WIKI_PASSWORD=
|
||||||
|
|
||||||
|
# OIDC
|
||||||
|
OIDC_RSA_PRIVATE_KEY=CHANGE_ME
|
||||||
|
@ -61,8 +61,8 @@ Bien que cela permette de créer une instance sur toutes les distributions,
|
|||||||
6. (Optionnel) **Création d'une clé privée OpenID Connect**
|
6. (Optionnel) **Création d'une clé privée OpenID Connect**
|
||||||
|
|
||||||
Pour activer le support d'OpenID Connect, il faut générer une clé privée, par
|
Pour activer le support d'OpenID Connect, il faut générer une clé privée, par
|
||||||
exemple avec openssl (`openssl genrsa -out oidc.key 4096`), et renseigner son
|
exemple avec openssl (`openssl genrsa -out oidc.key 4096`), et copier la clé dans .env dans le champ
|
||||||
emplacement dans `OIDC_RSA_PRIVATE_KEY` (par défaut `/var/secrets/oidc.key`).
|
`OIDC_RSA_PRIVATE_KEY`.
|
||||||
|
|
||||||
7. Enjoy :
|
7. Enjoy :
|
||||||
|
|
||||||
@ -237,8 +237,8 @@ Sinon vous pouvez suivre les étapes décrites ci-dessous.
|
|||||||
7. **Création d'une clé privée OpenID Connect**
|
7. **Création d'une clé privée OpenID Connect**
|
||||||
|
|
||||||
Pour activer le support d'OpenID Connect, il faut générer une clé privée, par
|
Pour activer le support d'OpenID Connect, il faut générer une clé privée, par
|
||||||
exemple avec openssl (`openssl genrsa -out oidc.key 4096`), et renseigner son
|
exemple avec openssl (`openssl genrsa -out oidc.key 4096`), et renseigner le champ
|
||||||
emplacement dans `OIDC_RSA_PRIVATE_KEY` (par défaut `/var/secrets/oidc.key`).
|
`OIDC_RSA_PRIVATE_KEY` dans le .env (par défaut `/var/secrets/oidc.key`).
|
||||||
|
|
||||||
8. *Enjoy \o/*
|
8. *Enjoy \o/*
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
# Copyright (C) 2018-2025 by BDE ENS Paris-Saclay
|
# Copyright (C) 2018-2025 by BDE ENS Paris-Saclay
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
from oauth2_provider.oauth2_validators import OAuth2Validator
|
from oauth2_provider.oauth2_validators import OAuth2Validator
|
||||||
from oauth2_provider.scopes import BaseScopes
|
from oauth2_provider.scopes import BaseScopes
|
||||||
from member.models import Club
|
from member.models import Club
|
||||||
@ -19,7 +20,7 @@ class PermissionScopes(BaseScopes):
|
|||||||
|
|
||||||
def get_all_scopes(self):
|
def get_all_scopes(self):
|
||||||
scopes = {f"{p.id}_{club.id}": f"{p.description} (club {club.name})"
|
scopes = {f"{p.id}_{club.id}": f"{p.description} (club {club.name})"
|
||||||
for p in Permission.objects.all() for club in Club.objects.all()}
|
for p in Permission.objects.all() for club in Club.objects.all()}
|
||||||
scopes['openid'] = "OpenID Connect"
|
scopes['openid'] = "OpenID Connect"
|
||||||
return scopes
|
return scopes
|
||||||
|
|
||||||
@ -27,8 +28,8 @@ class PermissionScopes(BaseScopes):
|
|||||||
if not application:
|
if not application:
|
||||||
return []
|
return []
|
||||||
scopes = [f"{p.id}_{p.membership.club.id}"
|
scopes = [f"{p.id}_{p.membership.club.id}"
|
||||||
for t in Permission.PERMISSION_TYPES
|
for t in Permission.PERMISSION_TYPES
|
||||||
for p in PermissionBackend.get_raw_permissions(get_current_request(), t[0])]
|
for p in PermissionBackend.get_raw_permissions(get_current_request(), t[0])]
|
||||||
scopes.append('openid')
|
scopes.append('openid')
|
||||||
return scopes
|
return scopes
|
||||||
|
|
||||||
@ -36,10 +37,11 @@ class PermissionScopes(BaseScopes):
|
|||||||
if not application:
|
if not application:
|
||||||
return []
|
return []
|
||||||
scopes = [f"{p.id}_{p.membership.club.id}"
|
scopes = [f"{p.id}_{p.membership.club.id}"
|
||||||
for p in PermissionBackend.get_raw_permissions(get_current_request(), 'view')]
|
for p in PermissionBackend.get_raw_permissions(get_current_request(), 'view')]
|
||||||
scopes.append('openid')
|
scopes.append('openid')
|
||||||
return scopes
|
return scopes
|
||||||
|
|
||||||
|
|
||||||
class PermissionOAuth2Validator(OAuth2Validator):
|
class PermissionOAuth2Validator(OAuth2Validator):
|
||||||
oidc_claim_scope = OAuth2Validator.oidc_claim_scope
|
oidc_claim_scope = OAuth2Validator.oidc_claim_scope
|
||||||
oidc_claim_scope.update({"name": 'openid',
|
oidc_claim_scope.update({"name": 'openid',
|
||||||
@ -74,7 +76,7 @@ class PermissionOAuth2Validator(OAuth2Validator):
|
|||||||
scope = f"{p.id}_{p.membership.club.id}"
|
scope = f"{p.id}_{p.membership.club.id}"
|
||||||
if scope in scopes:
|
if scope in scopes:
|
||||||
valid_scopes.add(scope)
|
valid_scopes.add(scope)
|
||||||
|
|
||||||
if 'openid' in scopes:
|
if 'openid' in scopes:
|
||||||
valid_scopes.add('openid')
|
valid_scopes.add('openid')
|
||||||
|
|
||||||
|
@ -270,7 +270,7 @@ OAUTH2_PROVIDER = {
|
|||||||
'PKCE_REQUIRED': False, # PKCE (fix a breaking change of django-oauth-toolkit 2.0.0)
|
'PKCE_REQUIRED': False, # PKCE (fix a breaking change of django-oauth-toolkit 2.0.0)
|
||||||
'OIDC_ENABLED': True,
|
'OIDC_ENABLED': True,
|
||||||
'OIDC_RSA_PRIVATE_KEY':
|
'OIDC_RSA_PRIVATE_KEY':
|
||||||
os.getenv('OIDC_RSA_PRIVATE_KEY', '/var/secrets/oidc.key'),
|
os.getenv('OIDC_RSA_PRIVATE_KEY', 'CHANGE_ME_IN_ENV_SETTINGS').replace('\\n', '\n'), # for multilines
|
||||||
'SCOPES': { 'openid': "OpenID Connect scope" },
|
'SCOPES': { 'openid': "OpenID Connect scope" },
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user