 3d63143c38
			
		
	
	3d63143c38
	
	
	
		
			
			* brands: add OIDC webfinger support for default application Signed-off-by: Jens Langhammer <jens@goauthentik.io> * add tests Signed-off-by: Jens Langhammer <jens@goauthentik.io> --------- Signed-off-by: Jens Langhammer <jens@goauthentik.io>
		
			
				
	
	
		
			30 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from typing import Any
 | |
| 
 | |
| from django.http import HttpRequest, HttpResponse, JsonResponse
 | |
| from django.views import View
 | |
| 
 | |
| from authentik.brands.models import Brand, WebfingerProvider
 | |
| from authentik.core.models import Application
 | |
| 
 | |
| 
 | |
| class WebFingerView(View):
 | |
|     """Webfinger endpoint"""
 | |
| 
 | |
|     def get(self, request: HttpRequest) -> HttpResponse:
 | |
|         brand: Brand = request.brand
 | |
|         if not brand.default_application:
 | |
|             return JsonResponse({})
 | |
|         application: Application = brand.default_application
 | |
|         provider = application.get_provider()
 | |
|         if not provider or not isinstance(provider, WebfingerProvider):
 | |
|             return JsonResponse({})
 | |
|         webfinger_data = provider.webfinger(request.GET.get("resource"), request)
 | |
|         return JsonResponse(webfinger_data)
 | |
| 
 | |
|     def dispatch(self, request: HttpRequest, *args: Any, **kwargs: Any) -> HttpResponse:
 | |
|         response = super().dispatch(request, *args, **kwargs)
 | |
|         # RFC7033 spec
 | |
|         response["Access-Control-Allow-Origin"] = "*"
 | |
|         response["Content-Type"] = "application/jrd+json"
 | |
|         return response
 |