start implementing openid connect discovery
This commit is contained in:
		@ -120,5 +120,5 @@ class AzureADOAuthSourceForm(OAuthSourceForm):
 | 
				
			|||||||
            'request_token_url': '',
 | 
					            'request_token_url': '',
 | 
				
			||||||
            'authorization_url': 'https://login.microsoftonline.com/common/oauth2/authorize',
 | 
					            'authorization_url': 'https://login.microsoftonline.com/common/oauth2/authorize',
 | 
				
			||||||
            'access_token_url': 'https://login.microsoftonline.com/common/oauth2/token',
 | 
					            'access_token_url': 'https://login.microsoftonline.com/common/oauth2/token',
 | 
				
			||||||
            'profile_url': ' https://login.microsoftonline.com/common/openid/userinfo',
 | 
					            'profile_url': ' https://graph.windows.net/myorganization/me?api-version=1.6',
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,7 @@
 | 
				
			|||||||
from django.urls import path
 | 
					from django.urls import path
 | 
				
			||||||
from oauth2_provider import views
 | 
					from oauth2_provider import views
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from passbook.oauth_provider.views import oauth2
 | 
					from passbook.oauth_provider.views import oauth2, openid
 | 
				
			||||||
 | 
					
 | 
				
			||||||
urlpatterns = [
 | 
					urlpatterns = [
 | 
				
			||||||
    # Custom OAuth 2 Authorize View
 | 
					    # Custom OAuth 2 Authorize View
 | 
				
			||||||
@ -14,8 +14,12 @@ urlpatterns = [
 | 
				
			|||||||
    path('authorize/permission_denied/', oauth2.OAuthPermissionDenied.as_view(),
 | 
					    path('authorize/permission_denied/', oauth2.OAuthPermissionDenied.as_view(),
 | 
				
			||||||
         name='oauth2-permission-denied'),
 | 
					         name='oauth2-permission-denied'),
 | 
				
			||||||
    # OAuth API
 | 
					    # OAuth API
 | 
				
			||||||
    path("authorize/", views.AuthorizationView.as_view(), name="authorize"),
 | 
					 | 
				
			||||||
    path("token/", views.TokenView.as_view(), name="token"),
 | 
					    path("token/", views.TokenView.as_view(), name="token"),
 | 
				
			||||||
    path("revoke_token/", views.RevokeTokenView.as_view(), name="revoke-token"),
 | 
					    path("revoke_token/", views.RevokeTokenView.as_view(), name="revoke-token"),
 | 
				
			||||||
    path("introspect/", views.IntrospectTokenView.as_view(), name="introspect"),
 | 
					    path("introspect/", views.IntrospectTokenView.as_view(), name="introspect"),
 | 
				
			||||||
 | 
					    # OpenID-Connect Discovery
 | 
				
			||||||
 | 
					    path('.well-known/openid-configuration', openid.OpenIDConfigurationView.as_view(),
 | 
				
			||||||
 | 
					         name='openid-discovery'),
 | 
				
			||||||
 | 
					    path('.well-known/jwks.json', openid.JSONWebKeyView.as_view(),
 | 
				
			||||||
 | 
					         name='openid-jwks'),
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										30
									
								
								passbook/oauth_provider/views/openid.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								passbook/oauth_provider/views/openid.py
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,30 @@
 | 
				
			|||||||
 | 
					"""passbook oauth provider OpenID Views"""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from django.http import HttpRequest, JsonResponse
 | 
				
			||||||
 | 
					from django.shortcuts import reverse
 | 
				
			||||||
 | 
					from django.views.generic import View
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class OpenIDConfigurationView(View):
 | 
				
			||||||
 | 
					    """Return OpenID Configuration"""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def get(self, request: HttpRequest):
 | 
				
			||||||
 | 
					        """Get Response conform to https://openid.net/specs/openid-connect-discovery-1_0.html"""
 | 
				
			||||||
 | 
					        return JsonResponse({
 | 
				
			||||||
 | 
					            'issuer': request.build_absolute_uri(),
 | 
				
			||||||
 | 
					            'authorization_endpoint': request.build_absolute_uri(
 | 
				
			||||||
 | 
					                reverse('passbook_oauth_provider:oauth2-authorize')),
 | 
				
			||||||
 | 
					            'token_endpoint': request.build_absolute_uri(reverse('passbook_oauth_provider:token')),
 | 
				
			||||||
 | 
					            "jwks_uri": request.build_absolute_uri(reverse('passbook_oauth_provider:openid-jwks')),
 | 
				
			||||||
 | 
					            "scopes_supported": [
 | 
				
			||||||
 | 
					                "openid:userinfo",
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class JSONWebKeyView(View):
 | 
				
			||||||
 | 
					    """JSON Web Key View"""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def get(self, request: HttpRequest):
 | 
				
			||||||
 | 
					        """JSON Webkeys are not implemented yet, hence return an empty object"""
 | 
				
			||||||
 | 
					        return JsonResponse({})
 | 
				
			||||||
		Reference in New Issue
	
	Block a user