<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Invalid signature in request credentials Admin API in APIs</title>
    <link>https://community.cisco.com/t5/apis/invalid-signature-in-request-credentials-admin-api/m-p/4877478#M116</link>
    <description>&lt;DIV class="duo-migrated-content"&gt;&lt;P&gt;If you want to use Postman, another community member posted an example pre-request script to handle the authorization on the fly for each request here: &lt;A href="https://community.duo.com/t/preauth-api-failing-but-check-and-ping-are-good/3125/11" class="inline-onebox"&gt;Preauth API failing but check and ping are good - #11 by xrave&lt;/A&gt;. See if that helps you out.&lt;/P&gt;
&lt;P&gt;If you actually just want to use Python to access Duo APIs, take a look at our Python API client at &lt;A href="https://github.com/duosecurity/duo_client_python" class="inline-onebox"&gt;GitHub - duosecurity/duo_client_python: Python library for interacting with the Duo Auth, Admin, and Accounts APIs&lt;/A&gt;.&lt;/P&gt;&lt;/DIV&gt;</description>
    <pubDate>Tue, 30 Aug 2022 13:44:34 GMT</pubDate>
    <dc:creator>DuoKristina</dc:creator>
    <dc:date>2022-08-30T13:44:34Z</dc:date>
    <item>
      <title>Invalid signature in request credentials Admin API</title>
      <link>https://community.cisco.com/t5/apis/invalid-signature-in-request-credentials-admin-api/m-p/4877477#M115</link>
      <description>&lt;DIV class="duo-migrated-content"&gt;&lt;P&gt;I am trying to get logs using admin API. I generated the HMAC signature using the python code from the Cisco documentation.&lt;/P&gt;
&lt;P&gt;import base64, email.utils, hmac, hashlib, urllib&lt;/P&gt;
&lt;P&gt;def sign(method, host, path, params, skey, ikey):&lt;BR /&gt;
“”"&lt;BR /&gt;
Return HTTP Basic Authentication (“Authorization” and “Date”) headers.&lt;BR /&gt;
method, host, path: strings from request&lt;BR /&gt;
params: dict of request parameters&lt;BR /&gt;
skey: secret key&lt;BR /&gt;
ikey: integration key&lt;BR /&gt;
“”"&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;# create canonical string
now = email.utils.formatdate()
canon = [now, method.upper(), host.lower(), path]
args = []
for key in sorted(params.keys()):
    val = params[key].encode("utf-8")
    args.append(
        '%s=%s' % (urllib.parse.
                   quote(key, '~'), urllib.parse.quote(val, '~')))
canon.append('&amp;amp;'.join(args))
canon = '\n'.join(canon)

# sign canonical string
sig = hmac.new(bytes(skey, encoding='utf-8'),
               bytes(canon, encoding='utf-8'),
               hashlib.sha1)
auth = '%s:%s' % (ikey, sig.hexdigest())

# return headers
return {'Date': now, 'Authorization': 'Basic %s' % base64.b64encode(bytes(auth, encoding="utf-8")).decode()}
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;and tried to hit the endpoint using postman&lt;BR /&gt;
URL = &lt;A href="https://api-b0c51c09.duosecurity.com/admin/v1/logs/administrator" rel="noopener nofollow ugc"&gt;https://■■■■■■■■■■■■■■■■■■■■■■■■■■■■/admin/v1/logs/administrator&lt;/A&gt;&lt;BR /&gt;
headers =&lt;BR /&gt;
Authorization: Basic xxx&lt;BR /&gt;
Date : Tue, 30 Aug 2022 10:17:16 -0000&lt;BR /&gt;
Content-Type : application/x-www-form-urlencoded&lt;/P&gt;
&lt;P&gt;Still I am getting 40103&lt;/P&gt;
&lt;P&gt;{&lt;BR /&gt;
“code”: 40103,&lt;BR /&gt;
“message”: “Invalid signature in request credentials”,&lt;BR /&gt;
“stat”: “FAIL”&lt;BR /&gt;
}&lt;/P&gt;
&lt;P&gt;Please let me know what I am missing here.&lt;/P&gt;
&lt;P&gt;Thanks!&lt;/P&gt;&lt;/DIV&gt;</description>
      <pubDate>Tue, 30 Aug 2022 10:54:03 GMT</pubDate>
      <guid>https://community.cisco.com/t5/apis/invalid-signature-in-request-credentials-admin-api/m-p/4877477#M115</guid>
      <dc:creator>ssrinidhi</dc:creator>
      <dc:date>2022-08-30T10:54:03Z</dc:date>
    </item>
    <item>
      <title>Re: Invalid signature in request credentials Admin API</title>
      <link>https://community.cisco.com/t5/apis/invalid-signature-in-request-credentials-admin-api/m-p/4877478#M116</link>
      <description>&lt;DIV class="duo-migrated-content"&gt;&lt;P&gt;If you want to use Postman, another community member posted an example pre-request script to handle the authorization on the fly for each request here: &lt;A href="https://community.duo.com/t/preauth-api-failing-but-check-and-ping-are-good/3125/11" class="inline-onebox"&gt;Preauth API failing but check and ping are good - #11 by xrave&lt;/A&gt;. See if that helps you out.&lt;/P&gt;
&lt;P&gt;If you actually just want to use Python to access Duo APIs, take a look at our Python API client at &lt;A href="https://github.com/duosecurity/duo_client_python" class="inline-onebox"&gt;GitHub - duosecurity/duo_client_python: Python library for interacting with the Duo Auth, Admin, and Accounts APIs&lt;/A&gt;.&lt;/P&gt;&lt;/DIV&gt;</description>
      <pubDate>Tue, 30 Aug 2022 13:44:34 GMT</pubDate>
      <guid>https://community.cisco.com/t5/apis/invalid-signature-in-request-credentials-admin-api/m-p/4877478#M116</guid>
      <dc:creator>DuoKristina</dc:creator>
      <dc:date>2022-08-30T13:44:34Z</dc:date>
    </item>
    <item>
      <title>Re: Invalid signature in request credentials Admin API</title>
      <link>https://community.cisco.com/t5/apis/invalid-signature-in-request-credentials-admin-api/m-p/4877479#M117</link>
      <description>&lt;DIV class="duo-migrated-content"&gt;&lt;P&gt;Hi Thanks!!&lt;/P&gt;
&lt;P&gt;I tried with postman pre-request script, but still I get the same error.&lt;BR /&gt;
“Invalid signature in request credentials”&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;&lt;DIV class="lightbox-wrapper"&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="2X_9_942f34811f6bee6efb9620bfd2e9105248b89b5f.png" style="width: 681px;"&gt;&lt;img src="https://community.cisco.com/t5/image/serverpage/image-id/191103i096E9EF348D79F80/image-size/large?v=v2&amp;amp;px=999" role="button" title="2X_9_942f34811f6bee6efb9620bfd2e9105248b89b5f.png" alt="2X_9_942f34811f6bee6efb9620bfd2e9105248b89b5f.png" /&gt;&lt;/span&gt;&lt;/DIV&gt;&lt;P&gt;&lt;/P&gt;&lt;/DIV&gt;</description>
      <pubDate>Thu, 01 Sep 2022 04:17:30 GMT</pubDate>
      <guid>https://community.cisco.com/t5/apis/invalid-signature-in-request-credentials-admin-api/m-p/4877479#M117</guid>
      <dc:creator>ssrinidhi</dc:creator>
      <dc:date>2022-09-01T04:17:30Z</dc:date>
    </item>
    <item>
      <title>Re: Invalid signature in request credentials Admin API</title>
      <link>https://community.cisco.com/t5/apis/invalid-signature-in-request-credentials-admin-api/m-p/4877480#M118</link>
      <description>&lt;DIV class="duo-migrated-content"&gt;&lt;P&gt;Ah, well, you can’t hardcode the timestamp. Note the lines preceding the &lt;CODE&gt;var timestamp&lt;/CODE&gt; line saying to uncomment them out to get the actual timestamp of the request.&lt;/P&gt;&lt;/DIV&gt;</description>
      <pubDate>Thu, 01 Sep 2022 18:58:39 GMT</pubDate>
      <guid>https://community.cisco.com/t5/apis/invalid-signature-in-request-credentials-admin-api/m-p/4877480#M118</guid>
      <dc:creator>DuoKristina</dc:creator>
      <dc:date>2022-09-01T18:58:39Z</dc:date>
    </item>
  </channel>
</rss>

