Я хочу создать API, к которому можно получить доступ, используя client_id и client_secret, а также токен доступа. Чтобы получить доступ к API с помощью client_id и client_secret, у меня есть собственный класс аутентификации, подобный этому: -
class ClientAuthentication(authentication.BaseAuthentication):
@staticmethod
def get_client_credentials(request):
try:
client_id = request.headers.get('CLIENTID')
client_secret = request.headers.get('CLIENTSECRET')
except:
raise AuthenticationFailed
return {
'client_id': client_id,
'client_secret': client_secret
}
def authenticate(self, request):
credentials = self.get_client_credentials(request)
client_instance = Application.objects.filter(
client_id=credentials['client_id'],
client_secret=credentials['client_secret'],
).first()
if not client_instance:
raise AuthenticationFailed
return client_instance, None
def get_user_application(self, request):
credentials = self.get_client_credentials(request)
application_instance = Application.objects.filter(
client_id=credentials['client_id'],
client_secret=credentials['client_secret'],
).first()
if not application_instance:
raise AuthenticationFailed
return application_instance, None
И другой класс аутентификации, который я хочу использовать, - это OAuth2Authentication по умолчанию. Я попытался передать для проверки подлинности классы authentication_:
authentication_classes = [ClientAuthentication | OAuth2Authentication]
Но это дает мне ошибку. Как мне этого добиться?