stages/authenticator_sms: Add SMS Authenticator Stage (#1577)
* stages/authenticator_sms: initial implementation Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * web/admin: add initial stage UI Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * web/elements: clear invalid state when old input was invalid but new input is correct Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * stages/authenticator_sms: add more logic Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * web/user: add basic SMS settings Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * stages/authenticator_sms: initial working version Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * stages/authenticator_sms: add tests Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * web/flows: optimise totp password manager entry on authenticator_validation stage Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * web/elements: add grouping support for table Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * web/admin: allow sms class in authenticator stage Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * web/admin: add grouping to more pages Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * stages/authenticator_validate: add SMS support Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * api: add throttling for flow executor based on session key and pending user Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * web: fix style issues Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * ci: add workflow to compile backend translations Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
This commit is contained in:
		
							
								
								
									
										18
									
								
								authentik/api/throttle.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								authentik/api/throttle.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,18 @@ | ||||
| """Throttling classes""" | ||||
| from typing import Type | ||||
|  | ||||
| from django.views import View | ||||
| from rest_framework.request import Request | ||||
| from rest_framework.throttling import ScopedRateThrottle | ||||
|  | ||||
|  | ||||
| class SessionThrottle(ScopedRateThrottle): | ||||
|     """Throttle based on session key""" | ||||
|  | ||||
|     def allow_request(self, request: Request, view): | ||||
|         if request._request.user.is_superuser: | ||||
|             return True | ||||
|         return super().allow_request(request, view) | ||||
|  | ||||
|     def get_cache_key(self, request: Request, view: Type[View]) -> str: | ||||
|         return f"authentik-throttle-session-{request._request.session.session_key}" | ||||
| @ -68,6 +68,11 @@ from authentik.stages.authenticator_duo.api import ( | ||||
|     DuoAdminDeviceViewSet, | ||||
|     DuoDeviceViewSet, | ||||
| ) | ||||
| from authentik.stages.authenticator_sms.api import ( | ||||
|     AuthenticatorSMSStageViewSet, | ||||
|     SMSAdminDeviceViewSet, | ||||
|     SMSDeviceViewSet, | ||||
| ) | ||||
| from authentik.stages.authenticator_static.api import ( | ||||
|     AuthenticatorStaticStageViewSet, | ||||
|     StaticAdminDeviceViewSet, | ||||
| @ -165,6 +170,7 @@ router.register("propertymappings/scope", ScopeMappingViewSet) | ||||
| router.register("propertymappings/notification", NotificationWebhookMappingViewSet) | ||||
|  | ||||
| router.register("authenticators/duo", DuoDeviceViewSet) | ||||
| router.register("authenticators/sms", SMSDeviceViewSet) | ||||
| router.register("authenticators/static", StaticDeviceViewSet) | ||||
| router.register("authenticators/totp", TOTPDeviceViewSet) | ||||
| router.register("authenticators/webauthn", WebAuthnDeviceViewSet) | ||||
| @ -173,6 +179,11 @@ router.register( | ||||
|     DuoAdminDeviceViewSet, | ||||
|     basename="admin-duodevice", | ||||
| ) | ||||
| router.register( | ||||
|     "authenticators/admin/sms", | ||||
|     SMSAdminDeviceViewSet, | ||||
|     basename="admin-smsdevice", | ||||
| ) | ||||
| router.register( | ||||
|     "authenticators/admin/static", | ||||
|     StaticAdminDeviceViewSet, | ||||
| @ -187,6 +198,7 @@ router.register( | ||||
|  | ||||
| router.register("stages/all", StageViewSet) | ||||
| router.register("stages/authenticator/duo", AuthenticatorDuoStageViewSet) | ||||
| router.register("stages/authenticator/sms", AuthenticatorSMSStageViewSet) | ||||
| router.register("stages/authenticator/static", AuthenticatorStaticStageViewSet) | ||||
| router.register("stages/authenticator/totp", AuthenticatorTOTPStageViewSet) | ||||
| router.register("stages/authenticator/validate", AuthenticatorValidateStageViewSet) | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Jens L
					Jens L