authentik.enterprise.providers.ssf.views.configuration
1from django.http import Http404, HttpRequest, HttpResponse, JsonResponse 2from django.shortcuts import get_object_or_404 3from django.urls import reverse 4from rest_framework.permissions import AllowAny 5 6from authentik.core.models import Application 7from authentik.enterprise.providers.ssf.models import DeliveryMethods, SSFProvider 8from authentik.enterprise.providers.ssf.views.base import SSFView 9 10 11class ConfigurationView(SSFView): 12 """SSF configuration endpoint""" 13 14 permission_classes = [AllowAny] 15 16 def get_authenticators(self): 17 return [] 18 19 def get(self, request: HttpRequest, application_slug: str, *args, **kwargs) -> HttpResponse: 20 application = get_object_or_404(Application, slug=application_slug) 21 provider = application.backchannel_provider_for(SSFProvider) 22 if not provider: 23 raise Http404 24 data = { 25 "spec_version": "1_0-ID2", 26 "issuer": self.request.build_absolute_uri( 27 reverse( 28 "authentik_providers_ssf:configuration", 29 kwargs={ 30 "application_slug": application.slug, 31 }, 32 ) 33 ), 34 "jwks_uri": self.request.build_absolute_uri( 35 reverse( 36 "authentik_providers_ssf:jwks", 37 kwargs={ 38 "application_slug": application.slug, 39 }, 40 ) 41 ), 42 "configuration_endpoint": self.request.build_absolute_uri( 43 reverse( 44 "authentik_providers_ssf:stream", 45 kwargs={ 46 "application_slug": application.slug, 47 }, 48 ) 49 ), 50 "verification_endpoint": self.request.build_absolute_uri( 51 reverse( 52 "authentik_providers_ssf:stream-verify", 53 kwargs={ 54 "application_slug": application.slug, 55 }, 56 ) 57 ), 58 "status_endpoint": self.request.build_absolute_uri( 59 reverse( 60 "authentik_providers_ssf:stream-status", 61 kwargs={ 62 "application_slug": application.slug, 63 }, 64 ) 65 ), 66 "delivery_methods_supported": [DeliveryMethods.RISC_PUSH, DeliveryMethods.RFC_PUSH], 67 "authorization_schemes": [{"spec_urn": "urn:ietf:rfc:6749"}], 68 } 69 return JsonResponse(data)
12class ConfigurationView(SSFView): 13 """SSF configuration endpoint""" 14 15 permission_classes = [AllowAny] 16 17 def get_authenticators(self): 18 return [] 19 20 def get(self, request: HttpRequest, application_slug: str, *args, **kwargs) -> HttpResponse: 21 application = get_object_or_404(Application, slug=application_slug) 22 provider = application.backchannel_provider_for(SSFProvider) 23 if not provider: 24 raise Http404 25 data = { 26 "spec_version": "1_0-ID2", 27 "issuer": self.request.build_absolute_uri( 28 reverse( 29 "authentik_providers_ssf:configuration", 30 kwargs={ 31 "application_slug": application.slug, 32 }, 33 ) 34 ), 35 "jwks_uri": self.request.build_absolute_uri( 36 reverse( 37 "authentik_providers_ssf:jwks", 38 kwargs={ 39 "application_slug": application.slug, 40 }, 41 ) 42 ), 43 "configuration_endpoint": self.request.build_absolute_uri( 44 reverse( 45 "authentik_providers_ssf:stream", 46 kwargs={ 47 "application_slug": application.slug, 48 }, 49 ) 50 ), 51 "verification_endpoint": self.request.build_absolute_uri( 52 reverse( 53 "authentik_providers_ssf:stream-verify", 54 kwargs={ 55 "application_slug": application.slug, 56 }, 57 ) 58 ), 59 "status_endpoint": self.request.build_absolute_uri( 60 reverse( 61 "authentik_providers_ssf:stream-status", 62 kwargs={ 63 "application_slug": application.slug, 64 }, 65 ) 66 ), 67 "delivery_methods_supported": [DeliveryMethods.RISC_PUSH, DeliveryMethods.RFC_PUSH], 68 "authorization_schemes": [{"spec_urn": "urn:ietf:rfc:6749"}], 69 } 70 return JsonResponse(data)
SSF configuration endpoint
def
get_authenticators(self):
Instantiates and returns the list of authenticators that this view can use.
def
get( self, request: django.http.request.HttpRequest, application_slug: str, *args, **kwargs) -> django.http.response.HttpResponse:
20 def get(self, request: HttpRequest, application_slug: str, *args, **kwargs) -> HttpResponse: 21 application = get_object_or_404(Application, slug=application_slug) 22 provider = application.backchannel_provider_for(SSFProvider) 23 if not provider: 24 raise Http404 25 data = { 26 "spec_version": "1_0-ID2", 27 "issuer": self.request.build_absolute_uri( 28 reverse( 29 "authentik_providers_ssf:configuration", 30 kwargs={ 31 "application_slug": application.slug, 32 }, 33 ) 34 ), 35 "jwks_uri": self.request.build_absolute_uri( 36 reverse( 37 "authentik_providers_ssf:jwks", 38 kwargs={ 39 "application_slug": application.slug, 40 }, 41 ) 42 ), 43 "configuration_endpoint": self.request.build_absolute_uri( 44 reverse( 45 "authentik_providers_ssf:stream", 46 kwargs={ 47 "application_slug": application.slug, 48 }, 49 ) 50 ), 51 "verification_endpoint": self.request.build_absolute_uri( 52 reverse( 53 "authentik_providers_ssf:stream-verify", 54 kwargs={ 55 "application_slug": application.slug, 56 }, 57 ) 58 ), 59 "status_endpoint": self.request.build_absolute_uri( 60 reverse( 61 "authentik_providers_ssf:stream-status", 62 kwargs={ 63 "application_slug": application.slug, 64 }, 65 ) 66 ), 67 "delivery_methods_supported": [DeliveryMethods.RISC_PUSH, DeliveryMethods.RFC_PUSH], 68 "authorization_schemes": [{"spec_urn": "urn:ietf:rfc:6749"}], 69 } 70 return JsonResponse(data)