Posted on 03-01-2022 02:36 PM
Not sure if anybody have seen, but with the 10.35.0 Jamf Pro version, it seems like classic API can be used with the bearer token authentication: https://developer.jamf.com/jamf-pro/docs/classic-api-authentication-changes
When I am trying to use the code samples to simply get all sites from JSS with a simple curl command:
apiURL="JSSURL"
username="USERNAME"
password="PASSWORD"
# created base64-encoded credentials
encodedCredentials=$( printf "$username:$password" | iconv -t ISO-8859-1 | base64 -i - )
allSiteData=`curl -X GET \
$apiURL/JSSResource/sites/ \
--header 'authorization: Basic $encodedCredentials'`
echo "AllsiteData is: $allSiteData"
I get:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 422 100 422 0 0 2562 0 --:--:-- --:--:-- --:--:-- 2740
AllsiteData is: <html>
<head>
<title>Status page</title>
</head>
<body style="font-family: sans-serif;">
<p style="font-size: 1.2em;font-weight: bold;margin: 1em 0px;">Unauthorized</p>
<p>The request requires user authentication</p>
<p>You can get technical details <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">here</a>.<br>
Please continue your visit at our <a href="/">home page</a>.
</p>
</body>
</html>
Anybody tried this out yet / any suggestions?
Solved! Go to Solution.
Posted on 03-02-2022 05:03 AM
Your issue is not related in any way with the token–based auth.
Shell will not resolve your $encodedCredentials variable within single quotes. Use double quotes instead. Also, I believe you’ll need to remove redundant / after sites endpoint you’re trying to query. It would only be required when querying particular site, like /sites/id/1.
If you’d like to test bearer token auth, you’d need to use Authorization: Bearer, not Basic, and provide the actual token (quite long, over 300 chars) obtained via Jamf Pro API.
Posted on 03-02-2022 03:58 AM
Have you tried using just the value generated from ecodedCredentials rather than trying to reference the variable itself? I believe text encapsulated in '' will be evaluated statically so you'd just be passing $encodedCredentials rather than the actual string needed. Even in those samples they reference things with place holders like "YOUR_CREDENTIALS" rather than variables, so I'm thinking that might be the problem.
Posted on 03-02-2022 05:03 AM
Your issue is not related in any way with the token–based auth.
Shell will not resolve your $encodedCredentials variable within single quotes. Use double quotes instead. Also, I believe you’ll need to remove redundant / after sites endpoint you’re trying to query. It would only be required when querying particular site, like /sites/id/1.
If you’d like to test bearer token auth, you’d need to use Authorization: Bearer, not Basic, and provide the actual token (quite long, over 300 chars) obtained via Jamf Pro API.
Posted on 03-02-2022 07:04 AM
@akamenev47 - this coming Friday, @chadlawson (Jamf Integrator) - is doing a live demo / keynote on this - https://community.jamf.com/t5/virtual-mac-admins-meetup/march-virtual-mac-admin-meetup/ev-p/258505