Duo Security API с клиентом PythonPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Duo Security API с клиентом Python

Сообщение Anonymous »

Я пытаюсь поработать с клиентом Duo's Python (https://github.com/duosecurity/duo_client_python), и я считаю, что я просто что -то упускаю с моими начинающими глазами Python. Мне каким -то образом нужно аутентифицировать свои запросы в API, используя сигнатуру HMAC, с которой я не работал раньше, но кажется тривиальным для генерации (они даже обеспечивают функцию Python). Док здесь https://duo.com/docs/adminapi#authentication

Я в потере относительно того, как создать эту подпись для аутентификации, перед передачей моей запрос в API. От https://duo.com/docs/adminapi#authentication:


API использует базовую аутентификацию HTTP для аутентификации запросов. Используйте ключ интеграции приложения Duo Duo в качестве имени пользователя HTTP. Это будет> отличаться для каждого запроса и должно быть повторно сгенерировано каждый раз. Чтобы подпись HMAC была генерирована правильно. Я понимаю эту часть. Моя проблема заключается в том, как и когда передать подпись HMAC, которую я генерирую. Поскольку Duo Doc конкретно не вдается в это, я думаю, что это то, что я уже должен знать [не так ли я не новичок в питоне]. < /P>

Пример, простые вызовы авторов работают нормально (так как они не нуждаются в аутентификации): < /p>

root@box: ~# python -m duo_client.client -iky xxxxxxxx -skey xxxxxxxx -Хост xxxxxxxxx.duosecurity.com. >,
"stat": "ok"
} < /pre>

Однако вызовы с использованием администратора требуют аутентификации, и, следовательно, сбой с: < /p>

root@box: ~# python -m duo_client.client -kiney xxxxxxxx -skey xxxxxxxx -host xxxxxxxx.duosecurity.com -method get --path /admin /v1 /пользователи Signature = XXXXXXXX
401 unathorized
{
«код»: 40103,
«Сообщение»: «Неверная подпись в учетных данных запроса»,
stat »::« "Fail"
} < /pre>

< /p>

Поэтому я подумал, что опубликую функцию, которую дуэт обеспечивает для создания подписи, которая похоже на то, что происходит в вопросе Stackoverflow, который, как я думал, может помочь (Python, Https получается с основной аутентификацией). От https://duo.com/docs/adminapi#authentication:

def Знак (метод, хост, путь, параметры, Skey, ikey):
"" ""
return http базовая аутентификация ("Авторизация" и "дата") заголовки.
Метод, хост, путь: строки из запроса
params: dict of aeprer paraters skey: секретный ключ
ikey: key интеграции
"" "

# Создать каноническую строку
now = email.utils.formatdate ()
canon = [теперь, method.upper (), host.lower (), path]
args = []
для ключа в сортировке (params.keys ()):
val = Params [key]
if iSinstance (val, unicode):
val = val.encode ("utf-8")
args.append (
'%s =%s ' % (urllib.quote (key,' ~ '), urllib.quote (val,' ~ ')))
canon.append (' & '. join (args))
canon =' \ n'.join (canon)

# sign canonical string
sig = hmac.new (skey, canon, hashlib.sha1)
auth = '%s:%s:%s ' % (ikey, sig.hexdigest ())

# return cheders
return {' date ': теперь, «авторизация»:' basic % s ' % base64.b64encode (auth) }
< /pre>

Я использовал вышеуказанную функцию в простом сценарии для распечатки (просто чтобы я мог визуализировать), что должно быть передано в сценарии I LL создать на сервере наши потребности - я добавил функцию в скрипт и использовал печати, добавив следующее: < /p>


#Печать заголовки подписи ### Тестирование ###
print sign ('get', 'xxxhostxxx', '/admin/v1/users', 'xxxparamxxx', 'xxxskeyxxx', 'xxxikeyyxxxx')


Однако я получаю эту ошибку: < /p>


root@box: ~# ./duo.py
Traceback (последний вызов последним):
file "./duo.py", строка 39, в
print sign ('get', 'xxxhostxxx', '/admin/v1/users' , 'Xxxparamxxx', 'xxxskeyxxx', 'xxxikeyxxx')
file "./duo.py", строка 18, в знаке
для ключа в сортировке (params.keys ()):
AttributeError: 'str' Object не имеет атрибута 'Keys'
< /pre>

Я просто что -то здесь упускаю? Я искал то, что может вызвать эту ошибку, но я подумал, что спрошу здесь.


Подробнее здесь: https://stackoverflow.com/questions/443 ... hon-client
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Запрос пользователей Duo Security Admin API не удалось использовать в Java
    Гость » » в форуме JAVA
    0 Ответы
    30 Просмотры
    Последнее сообщение Гость
  • Пользовательские цвета ICOFONT Duo Tone
    Anonymous » » в форуме CSS
    0 Ответы
    30 Просмотры
    Последнее сообщение Anonymous
  • Пользовательские цвета ICOFONT Duo Tone [закрыто]
    Anonymous » » в форуме CSS
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Spring Boot 3.3.2 с проблемой Spring Security 6.3.1 (нет поддержки auth0-spring-security-api с Spring Framework 3.3.2)
    Anonymous » » в форуме JAVA
    0 Ответы
    93 Просмотры
    Последнее сообщение Anonymous
  • API API API API API API API
    Anonymous » » в форуме JAVA
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»