diff --git b/README.md a/README.md new file mode 100644 index 0000000..e69de29 --- /dev/null +++ a/README.md diff --git b/privacyidea-checkotp a/privacyidea-checkotp new file mode 100755 index 0000000..95559c6 --- /dev/null +++ a/privacyidea-checkotp @@ -0,0 +1,67 @@ +#!/bin/bash + +# privacyidea-checkotp - shell implementation of the PrivacyIDEA OTP check for +# integration with FreeRadius on systems without perl +# +# Version 1.0, latest version available from: +# https://gitlab.lindenaar.net/scripts/privacyidea-checkotp +# +# Copyright (c) 2015 Frederik Lindenaar +# +# This script is free software: you can redistribute and/or modify it under the +# terms of the GNU General Public License as published by the Free Software +# Foundation, either version 3 of the License, or (at your option) any later version. +# +# This script is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program. If not, see <http://www.gnu.org/licenses/>. + +# If called for the Outbound-User Service type, exit immediately (not supported) +if [ "$SERVICE_TYPE" = "Outbound-User" ]; then + exit 8 +fi + +# Simple script to validate an OTP with PrivacyIDEA + +if [ $# = 1 ]; then + URL="$1/validate/check" + LOGIN=`echo "${STRIPPED_USER_NAME:-$USER_NAME}" | sed 's/^"\(.*\)"$/\1/'` + PASSWORD=`echo "$USER_PASSWORD" | sed 's/^"\(.*\)"$/\1/'` + NAS=`echo "$NAS_IP_ADDRESS" | sed 's/^"\(.*\)"$/\1/'` +# LOGIN="${User-Name}" +# PASSWORD="${User-Password}" +# NAS="${NAS-IP-Address}" +elif [ $# = 3 ]; then + URL="$1/validate/check" + LOGIN="$2" + PASSWORD="$3" + NAS= +elif [ $# = 4 ]; then + URL="$1/validate/check" + LOGIN="$2" + PASSWORD="$3" + NAS="$4" +else + echo "Usage: `basename $0` <urlprefix> [login password [nasip]]" + exit 2 +fi + +otpresult=`/usr/bin/curl -s "$URL" --data-urlencode "user=$LOGIN" --data-urlencode "pass=$PASSWORD" --data-urlencode "client=$NAS"` + +otpstatus=`echo $otpresult | sed 's/^{.*"result": { "status": true, "value": \(.*\) },.*}/\1/'` + +if [ "$otpstatus" = "true" ]; then +# echo $LOGIN did authenticate $otpresult + echo Auth-Type=PrivacyIDEA + exit 0 +elif [ "$otpstatus" = "false" ]; then +# echo $LOGIN did not authenticate $otpresult + echo Auth-Type=REJECT + exit 1 +else + echo Error occurred while connecting to $URL, got result: "$otpresult" + exit 2 +fi