]> git.0d.be Git - panikdb.git/commitdiff
oauth: add minimalistic .well-known openid configuration URI
authorFrédéric Péters <fpeters@0d.be>
Wed, 10 Nov 2021 09:29:26 +0000 (10:29 +0100)
committerFrédéric Péters <fpeters@0d.be>
Wed, 10 Nov 2021 09:34:03 +0000 (10:34 +0100)
panikdb/oauth/views.py
panikdb/urls.py

index a25ae1161f40cf62ff7aabc238f7811d3e08436a..e8cfd102a68f2a4af886b8eee5f00eeed7165489 100644 (file)
@@ -4,6 +4,7 @@ import random
 
 from django.contrib.auth.decorators import login_required
 from django.http import HttpResponseForbidden, HttpResponseNotAllowed, HttpResponseRedirect, JsonResponse
+from django.urls import reverse
 from django.utils.text import slugify
 from django.utils.timezone import now
 from django.views.decorators.csrf import csrf_exempt
@@ -83,3 +84,14 @@ def user_info(request, *args, **kwargs):
         'username': slugify(str(access_token.user)),
     }
     return JsonResponse(user_info)
+
+
+def well_known_openid_configuration(request):
+    data = {
+        'issuer': request.build_absolute_uri('/'),
+        'authorization_endpoint': request.build_absolute_uri(reverse('oauth-authorize')),
+        'token_endpoint': request.build_absolute_uri(reverse('oauth-token')),
+        'userinfo_endpoint': request.build_absolute_uri(reverse('oauth-user-info')),
+        'token_endpoint_auth_methods_supported': ['client_secret_post'],
+    }
+    return JsonResponse(data)
index 360daee967d52226b9a4d66fb732198370364a17..70b9f1754289a621d80a025ad23aa432c91829ca 100644 (file)
@@ -28,6 +28,7 @@ from . import views
 from .aa.urls import urlpatterns as aa_urlpatterns
 from .forms import AuthenticationForm
 from .oauth.urls import urlpatterns as oauth_urlpatterns
+from .oauth.views import well_known_openid_configuration
 from .poll import views as poll_views
 from .regie.urls import urlpatterns as regie_urlpatterns
 from .service_messages.urls import urlpatterns as service_messages_urlpatterns
@@ -81,6 +82,7 @@ urlpatterns = [
     url(r'^wiki/', include(wiki_urlpatterns)),
     url(r'^regie/', include(regie_urlpatterns)),
     url(r'^oauth/', include(oauth_urlpatterns)),
+    url(r'^\.well-known/openid-configuration$', well_known_openid_configuration),
     url(r'^messages/', include(service_messages_urlpatterns)),
     url(r'^admin/', admin.site.urls),
 ]