Django: передача учетных данных LDAP стороннему SDK

#django #ldap

#django #ldap

Вопрос:

Я новичок в Django и разрабатываю приложение для внутреннего использования. Я настроил его с django_auth_ldap помощью модуля для аутентификации в LDAP. После того, как пользователь прошел аутентификацию, для них выполняются задачи автоматизации, которые используют сторонние SDK (также требуется аутентификация LDAP). Ниже приведена простая функция в моем views.py конфигурация, которая создаст сеанс с использованием SDK, но есть ли способ передать аутентификацию пользователя функции?

views.py

 def create_session(hostname, username, password):
    """Create an API Session using an SDK."""
    session = SDK(hostname, username=username, password=password)
    return session

@login_required
def list_info(request): 
    if request.method == 'POST':
        form = Form(request.POST)
        if form.is_valid():
            session = create_session(form.cleaned_data['host'], ?username?, ?password?)
            host_info = session.get()
            note = 'Information from {}: '.format(form.cleaned_data['host'])
            dataset = pd.json_normalize(host_info)
            session.invalidate_cookie()
        else:
            note = 'API call has failed. Try again.'
        return render(request, 'list_info.html', {'form':form,
                                                'note':note,
                                                'dataset':dataset.to_html(index=False, justify='left',
                                                                          classes='table table-stripe')})
    else:
        form = Form()
        return render(request, 'list_info.html', {'form':form})
 

Изначально я создавал приложения CLI с использованием click модуля, но пытался преобразовать их в Django. Есть ли более простой подход к этому?

Ответ №1:

Я смог найти обходной путь к этой проблеме. Я решил создать учетную запись службы для обработки действий стороннего SDK. Когда пользователь выполняет задачу автоматизации, имя пользователя будет записано в базу данных Django PostgreSQL, а также сообщение на нашем канале Slack с описанием того, что было выполнено.