providers/oauth2: allow protected_resource_view when method is OPTIONS

# Conflicts:
#	authentik/providers/oauth2/views/provider.py
This commit is contained in:
Jens Langhammer 2021-03-05 16:57:37 +01:00
parent 90d234a458
commit 5d071488d3
2 changed files with 9 additions and 5 deletions

View File

@ -101,7 +101,9 @@ def protected_resource_view(scopes: list[str]):
This decorator also injects the token into `kwargs`""" This decorator also injects the token into `kwargs`"""
def wrapper(view): def wrapper(view):
def view_wrapper(request, *args, **kwargs): def view_wrapper(request: HttpRequest, *args, **kwargs):
if request.method == "OPTIONS":
return view(request, *args, **kwargs)
try: try:
access_token = extract_access_token(request) access_token = extract_access_token(request)
if not access_token: if not access_token:

View File

@ -19,6 +19,7 @@ from authentik.providers.oauth2.models import (
ResponseTypes, ResponseTypes,
ScopeMapping, ScopeMapping,
) )
from authentik.providers.oauth2.utils import cors_allow_any
LOGGER = get_logger() LOGGER = get_logger()
@ -103,9 +104,10 @@ class ProviderInfoView(View):
provider: OAuth2Provider = get_object_or_404( provider: OAuth2Provider = get_object_or_404(
OAuth2Provider, pk=application.provider_id OAuth2Provider, pk=application.provider_id
) )
response = JsonResponse( return JsonResponse(self.get_info(provider), json_dumps_params={"indent": 2})
self.get_info(provider), json_dumps_params={"indent": 2}
)
response["Access-Control-Allow-Origin"] = "*"
def dispatch(self, request: HttpRequest, *args: Any, **kwargs: Any) -> HttpResponse:
# Since this view only supports get, we can statically set the CORS headers
response = super().dispatch(request, *args, **kwargs)
cors_allow_any(request, response)
return response return response