41 lines
1.2 KiB
Python
41 lines
1.2 KiB
Python
# [DEF:backend.src.core.auth.oauth:Module]
|
|
#
|
|
# @SEMANTICS: auth, oauth, oidc, adfs
|
|
# @PURPOSE: ADFS OIDC configuration and client using Authlib.
|
|
# @LAYER: Core
|
|
# @RELATION: DEPENDS_ON -> authlib
|
|
# @RELATION: USES -> backend.src.core.auth.config.auth_config
|
|
#
|
|
# @INVARIANT: Must use secure OIDC flows.
|
|
|
|
# [SECTION: IMPORTS]
|
|
from authlib.integrations.starlette_client import OAuth
|
|
from .config import auth_config
|
|
# [/SECTION]
|
|
|
|
# [DEF:oauth:Variable]
|
|
# @PURPOSE: Global Authlib OAuth registry.
|
|
oauth = OAuth()
|
|
# [/DEF:oauth:Variable]
|
|
|
|
# [DEF:register_adfs:Function]
|
|
# @PURPOSE: Registers the ADFS OIDC client.
|
|
# @PRE: ADFS configuration is provided in auth_config.
|
|
# @POST: ADFS client is registered in oauth registry.
|
|
def register_adfs():
|
|
if auth_config.ADFS_CLIENT_ID:
|
|
oauth.register(
|
|
name='adfs',
|
|
client_id=auth_config.ADFS_CLIENT_ID,
|
|
client_secret=auth_config.ADFS_CLIENT_SECRET,
|
|
server_metadata_url=auth_config.ADFS_METADATA_URL,
|
|
client_kwargs={
|
|
'scope': 'openid email profile groups'
|
|
}
|
|
)
|
|
# [/DEF:register_adfs:Function]
|
|
|
|
# Initial registration
|
|
register_adfs()
|
|
|
|
# [/DEF:backend.src.core.auth.oauth:Module] |