<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>FreeRADIUS integration (Linux/Windows) — multiOTP open source forum</title>
        <link>https://forum.multiotp.net/index.php?p=/</link>
        <pubDate>Thu, 16 Apr 2026 23:37:00 +0000</pubDate>
        <language>en</language>
            <description>FreeRADIUS integration (Linux/Windows) — multiOTP open source forum</description>
    <atom:link href="https://forum.multiotp.net/index.php?p=/categories/freeradius/feed.rss" rel="self" type="application/rss+xml"/>
    <item>
        <title>OTP in the login field</title>
        <link>https://forum.multiotp.net/index.php?p=/discussion/103/otp-in-the-login-field</link>
        <pubDate>Fri, 25 Apr 2025 09:30:15 +0000</pubDate>
        <category>FreeRADIUS integration (Linux/Windows)</category>
        <dc:creator>Alex</dc:creator>
        <guid isPermaLink="false">103@/index.php?p=/discussions</guid>
        <description><![CDATA[Is it possible to do with multiotp and MS-CHAPv2?  MS-CHAPv2 is for a password.&#13;
&#13;
Username: username:OTP&#13;
Password: password&#13;
Example for username = john, password = myBigPassword, OTP = 123456&#13;
Username: john:123456&#13;
Password: myBigPassword]]>
        </description>
    </item>
    <item>
        <title>Check Active Directory Group Membership for TunnelGroupName</title>
        <link>https://forum.multiotp.net/index.php?p=/discussion/101/check-active-directory-group-membership-for-tunnelgroupname</link>
        <pubDate>Mon, 21 Apr 2025 19:31:18 +0000</pubDate>
        <category>FreeRADIUS integration (Linux/Windows)</category>
        <dc:creator>boycej</dc:creator>
        <guid isPermaLink="false">101@/index.php?p=/discussions</guid>
        <description><![CDATA[i am currently using the Virtual Machine version of Multiotp that has been upgraded.&#13;
Current configuration below:&#13;
multiOTP 5.9.9.1 2025-01-20&#13;
Web service is ready 2025-04-21 21:15:11, nginx/1.22.1, PHP/8.2.28&#13;
&#13;
Is there any way to use a script within FreeRADIUS to check the Group Membership that multiotop has in the database/files?  &#13;
&#13;
Such as this script below:&#13;
elsif (ASA-TunnelGroupName == "Tech_CCS_AnyConnect" &amp;&amp; LDAP-Group == "CCS_TECHS") {&#13;
        reject &#13;
        }&#13;
I am currently using this with LDAP on another FreeRADIUS server without multiotop.  &#13;
Or is there another place I can make sure that the ASA-TunnelGroupName matches with the AD Group membership such as the multiotip.php or the multiotp.pl?&#13;
&#13;
Thanks for help.&#13;
]]>
        </description>
    </item>
    <item>
        <title>Multiotp integration with external radius server</title>
        <link>https://forum.multiotp.net/index.php?p=/discussion/80/multiotp-integration-with-external-radius-server</link>
        <pubDate>Thu, 05 Oct 2023 11:01:43 +0000</pubDate>
        <category>FreeRADIUS integration (Linux/Windows)</category>
        <dc:creator>muzammel</dc:creator>
        <guid isPermaLink="false">80@/index.php?p=/discussions</guid>
        <description><![CDATA[I have configured the external radius server and i want to integrate with multiotp running on another server, i found that to connect radius with multiotp there is an program (/usr/local/bin/multiotp/multiotp.php) file  i want to call from URL like <a href="https://multiopt-serverip/" rel="nofollow">https://multiopt-serverip/</a> , how i can achieve that ? please guide and help. &#13;
Thanks.]]>
        </description>
    </item>
    <item>
        <title>MultiOTP on Docker</title>
        <link>https://forum.multiotp.net/index.php?p=/discussion/70/multiotp-on-docker</link>
        <pubDate>Wed, 24 Mar 2021 16:14:15 +0000</pubDate>
        <category>FreeRADIUS integration (Linux/Windows)</category>
        <dc:creator>benson</dc:creator>
        <guid isPermaLink="false">70@/index.php?p=/discussions</guid>
        <description><![CDATA[Hello,&#13;
&#13;
I see this command below on <a href="https://github.com/multiOTP/multiotp/wiki" rel="nofollow">https://github.com/multiOTP/multiotp/wiki</a>&#13;
&#13;
Docker container available: docker run --mount source=multiotp-data,target=/etc/multiotp -p 80:80 -p 443:443 -p 1812:1812/udp -p 1813:1813/udp -d multiotp/multiotp-open-source&#13;
&#13;
&#13;
I don't see any documentation about it. Can somebody point me to the right manual please? I'm sorry I am a newbie on Docker. I need help where to look at. I am installing on a fresh Debian 10 installation.&#13;
&#13;
Thank you.&#13;
]]>
        </description>
    </item>
    <item>
        <title>AD setup</title>
        <link>https://forum.multiotp.net/index.php?p=/discussion/44/ad-setup</link>
        <pubDate>Wed, 18 Apr 2018 09:02:42 +0000</pubDate>
        <category>FreeRADIUS integration (Linux/Windows)</category>
        <dc:creator>nbr</dc:creator>
        <guid isPermaLink="false">44@/index.php?p=/discussions</guid>
        <description><![CDATA[I have been messing around whit this setup and i works great, i'm using it as multifactor for a Cisco VPN solution, my queastien in an AD SYNC setup is it posible to set it up so only the user and the TOTP Token is used for the login, mening skipping the AD password ? ]]>
        </description>
    </item>
    <item>
        <title>FreeRadius and AD Integration - Sync issue</title>
        <link>https://forum.multiotp.net/index.php?p=/discussion/37/freeradius-and-ad-integration-sync-issue</link>
        <pubDate>Thu, 21 Dec 2017 15:18:05 +0000</pubDate>
        <category>FreeRADIUS integration (Linux/Windows)</category>
        <dc:creator>redcrow</dc:creator>
        <guid isPermaLink="false">37@/index.php?p=/discussions</guid>
        <description><![CDATA[Hello,&#13;
<br /><br />&#13;
we are working on a project to integrate FreeRadius + multiOTP with Active Directory.<br />&#13;
Everything seems to work well (e.g., connection and so on), but the sync process does not sync any user.&#13;
<br /><br />&#13;
My Linux Distribution is a Debian 9 64 bit and below you can see the all the software versions:&#13;
<br /><br /><code spellcheck="false" tabindex="0"># php --version&#13;
PHP 7.0.19-1 (cli) (built: May 11 2017 14:04:47) ( NTS )&#13;
Copyright (c) 1997-2017 The PHP Group&#13;
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies&#13;
    with Zend OPcache v7.0.19-1, Copyright (c) 1999-2017, by Zend Technologies</code>&#13;
<br /><br /><code spellcheck="false" tabindex="0"># multiotp -version&#13;
LOG 2017-12-21 15:26:15 debug Debug Debug: *parameter(s) received: -version&#13;
multiOTP 5.0.4.8 (2017-06-06) [CLI]&#13;
19 *INFO: Requested operation successfully done</code>&#13;
<br /><br /><code spellcheck="false" tabindex="0"># freeradius -v&#13;
radiusd: FreeRADIUS Version 3.0.12, for host x86_64-pc-linux-gnu, built on Aug 10 2017 at 07:05:06&lt;br&gt;&#13;
FreeRADIUS Version 3.0.12</code>&#13;
<br /><br />&#13;
Specifically, the configuration is the following:<br /><code spellcheck="false" tabindex="0"># multiotp -config default-request-prefix-pin=1&#13;
# multiotp -config default-request-ldap-pwd=1&#13;
# multiotp -config ldap-server-type=1&#13;
# multiotp -config ldap-cn-identifier="sAMAccountName"&#13;
# multiotp -config ldap-group-cn-identifier="sAMAccountName"&#13;
# multiotp -config ldap-group-attribute="memberOf"&#13;
# multiotp -config ldap-ssl=0&#13;
# multiotp -config ldap-port=389&#13;
# multiotp -config ldap-domain-controllers="example.com"&#13;
# multiotp -config ldap-base-dn="DC=example,DC=com"&#13;
# multiotp -config ldap-bind-dn="CN=freeradius,OU=Test,DC=example,DC=com"&#13;
# multiotp -config ldap-server-password="passwordhere"&#13;
# multiotp -config ldap-in-group="LinuxTestGroup"&#13;
# multiotp -config ldap-network-timeout=10&#13;
# multiotp -config ldap-time-limit=30&#13;
# multiotp -config ldap-activated=1</code>&#13;
<br /><br />&#13;
--&gt; <strong>Of course LinuxTestGroup contains some testing users, such as foobar.</strong>&#13;
<br /><br />&#13;
and below we show the output of the check/sync commands:<br /><code spellcheck="false" tabindex="0"># multiotp -debug -display-log -ldap-check&#13;
LOG 2017-12-21 15:59:24 debug Debug Debug: *parameter(s) received: -debug -display-log -ldap-check&#13;
19 *INFO: Requested operation successfully done</code>&#13;
<br /><br /><code spellcheck="false" tabindex="0"># multiotp -ldap-user-info foobar&#13;
LOG 2017-12-21 15:59:51 debug Debug Debug: *parameter(s) received: -debug -display-log -ldap-user-info foobar&#13;
LOG 2017-12-21 15:59:51 debug System Debug: *LDAP cache folder value: /tmp/.ldap_cache/&#13;
LOG 2017-12-21 15:59:51 debug Debug Debug: *AD/LDAP connection defined&#13;
LOG 2017-12-21 15:59:51 debug Debug Debug: *AD/LDAP GetLdapUsersInfoArray processing&#13;
LOG 2017-12-21 15:59:51 debug Debug Debug: *AD/LDAP server is Microsoft AD&#13;
LOG 2017-12-21 15:59:51 debug Debug Debug: *AD/LDAP GetLdapUsersInfoArray done ()&#13;
19 *INFO: Requested operation successfully done</code>&#13;
<br /><br />&#13;
--&gt; <strong>No user info here!!!</strong>&#13;
<br /><br /><code spellcheck="false" tabindex="0"># multiotp -ldap-users-list&#13;
LOG 2017-12-21 16:02:08 debug Debug Debug: *parameter(s) received: -ldap-users-list&#13;
LOG 2017-12-21 16:02:08 debug System Debug: *LDAP cache folder value: /tmp/.ldap_cache/&#13;
39 *ERROR: Requested operation aborted&#13;
LOG 2017-12-21 16:02:08 debug Debug Debug: *Attributes sent to the RADIUS server: Reply-Message := "ERROR: Requested operation aborted"&#13;
Reply-Message := "ERROR: Requested operation aborted"</code>&#13;
<br /><br />&#13;
--&gt; <strong>Error Code 39 here!!!</strong>&#13;
<br /><br /><code spellcheck="false" tabindex="0"># multiotp -ldap-users-sync&#13;
LOG 2017-12-21 16:03:01 debug Debug Debug: *parameter(s) received: -ldap-users-sync&#13;
LOG 2017-12-21 16:03:01 debug LDAP Debug: *AD/LDAP synchronization started at 16:03:01 / Memory used: 8.4MB / Peak: 20.1MB&#13;
LOG 2017-12-21 16:03:01 info LDAP Info: AD/LDAP synchronization started&#13;
LOG 2017-12-21 16:03:01 debug System Debug: *LDAP cache folder value: /tmp/.ldap_cache/&#13;
PHP Warning:  ldap_control_paged_result_response(): Result is: Referral (10) in /opt/multiOTP/linux/multiotp.php on line 56&#13;
PHP Warning:  ldap_control_paged_result_response(): Result is: Referral (10) in /opt/multiOTP/linux/multiotp.php on line 56&#13;
PHP Warning:  ldap_control_paged_result_response(): Result is: Referral (10) in /opt/multiOTP/linux/multiotp.php on line 4&#13;
LOG 2017-12-21 16:03:01 info LDAP Info: No update for the 0 LDAP synced users, based on 1 LDAP entries (processed in 00:00:00)&#13;
19 *INFO: Requested operation successfully done</code>&#13;
<br /><br />&#13;
--&gt; <strong>Some warnings but successfully done... Anyway no synched users!</strong>&#13;
<br /><br />&#13;
&#13;
What's the issue?&#13;
<br /><br />&#13;
Thanks,<br />&#13;
Francesco]]>
        </description>
    </item>
    <item>
        <title>After Implementing the VHD alwayse get this</title>
        <link>https://forum.multiotp.net/index.php?p=/discussion/40/after-implementing-the-vhd-alwayse-get-this</link>
        <pubDate>Sun, 04 Feb 2018 07:30:34 +0000</pubDate>
        <category>FreeRADIUS integration (Linux/Windows)</category>
        <dc:creator>belalalali</dc:creator>
        <guid isPermaLink="false">40@/index.php?p=/discussions</guid>
        <description><![CDATA[Hi All;&#13;
&#13;
I am done with the installation, when ever i try to enter any multiotp command i get file or directory not found.&#13;
example: multiotp -version   ==&gt; Result:   No such file or directory&#13;
&#13;
I need help please]]>
        </description>
    </item>
    <item>
        <title>Multiotp can not get &quot;NT_KEY&quot;</title>
        <link>https://forum.multiotp.net/index.php?p=/discussion/39/multiotp-can-not-get-nt-key</link>
        <pubDate>Fri, 02 Feb 2018 00:26:04 +0000</pubDate>
        <category>FreeRADIUS integration (Linux/Windows)</category>
        <dc:creator>takabow</dc:creator>
        <guid isPermaLink="false">39@/index.php?p=/discussions</guid>
        <description><![CDATA[Hello.&#13;
&#13;
I'm trying to setup multiOTP + FreeRADIUS on CentOS 7.&#13;
&#13;
When I run "radtest -t mschap testuser 12345 127.0.0.1 0 testing123"&#13;
multiotpmschap module returns "Invalid output from ntlm_auth: expecting 'NT_KEY: ' prefix"&#13;
However, accoding to debug message of FreeRADIUS, NT_KEY is sent to the RADIUS server.&#13;
&#13;
here is the debug message of FreeRADIUS&#13;
--------------------------------------&#13;
PHP Warning:  Module 'mbstring' already loaded in Unknown on line 0&#13;
(2) multiotpmschap: Program returned code (0) and output&#13;
&#13;
' LOG 2018-01-31 05:02:56 debug Debug Debug: *parameter(s) received: testuser  -request-nt-key -src=127.0.0.1 -chap-challenge= -chap-password= -ms-chap-challenge=0xe97a929a59d92dad -ms-chap-response=0x00010000000000000000000000000000000000000000000000005b75a41bac340aaf047b4c89de0aa20756fbcc9baf3ebb6c -ms-chap2-response= from 127.0.0.1&#13;
&#13;
LOG 2018-01-31 05:02:56 notice (user testuser) User OK: User testuser successfully logged in with TOTP token from 127.0.0.1 0 *OK: Token accepted&#13;
&#13;
LOG 2018-01-31 05:02:56 debug Debug Debug: *Attributes sent to the RADIUS server: NT_KEY: E006844848290D66C085C096E8982A56  from 127.0.0.1 NT_KEY: E006844848290D66C085C096E8982A56  '&#13;
&#13;
(2) multiotpmschap: ERROR: Invalid output from ntlm_auth: expecting 'NT_KEY: ' prefix&#13;
(2) multiotpmschap: ERROR: MS-CHAP2-Response is incorrect&#13;
--------------------------------------&#13;
&#13;
&#13;
My goal is to connect 802.1X network, entering username and one_time_password. (donot need ActiveDirectory password)&#13;
I syncd multiotp users from Active Directory, and /usr/bin/ntlm_auth is OK. &#13;
&#13;
&#13;
I thought problem is coused by encoding.&#13;
Becouse I set [mbstring.internal_encoding] of /etc/php.ini "UTF-8"&#13;
but multiotp write in EUC,&#13;
so I changed php.ini to EUC, but not effected...&#13;
&#13;
&#13;
Why multiotpmschap module cannot see NT_KEY ?&#13;
&#13;
&#13;
[Products versions]&#13;
 CentOS Linux release 7.4.1708 (Core)&#13;
 multiOTP 5.0.4.8&#13;
 freeradius.x86_64  3.0.13-8.el7_4&#13;
 PHP Version 5.4.16&#13;
&#13;
Thanks.]]>
        </description>
    </item>
    <item>
        <title>Authentication with ms-chap</title>
        <link>https://forum.multiotp.net/index.php?p=/discussion/35/authentication-with-ms-chap</link>
        <pubDate>Fri, 03 Nov 2017 14:03:29 +0000</pubDate>
        <category>FreeRADIUS integration (Linux/Windows)</category>
        <dc:creator>klavdijaps</dc:creator>
        <guid isPermaLink="false">35@/index.php?p=/discussions</guid>
        <description><![CDATA[Hello,&#13;
&#13;
<p>I have a problem when trying to authenticate user trough radius with mschap protocol using TOTP token. I am using mysql database for users. Authentication with PAP works perfectly. Maybe i have missed something.... &#13;
</p>&#13;
&#13;
<p>&#13;
This is content of my multiotp file under modules&#13;
</p>&#13;
<p>&#13;
exec multiotp {<br />&#13;
        wait = yes<br />&#13;
        input_pairs = request<br />&#13;
        output_pairs = reply<br />&#13;
        program = "/var/www/html/multiotp/multiotp.php %{User-Name} %{User-Password} -request-nt-key -src=%{Packet-Src-IP-Address} -chap-challenge=%{CHAP-Challenge} -chap-password=%{CHAP-Password} -ms-chap-challenge=%{MS-CHAP-Challenge} -ms-chap-response=%{MS-CHAP-Response} -ms-chap2-response=%{MS-CHAP2-Response}"<br />&#13;
        shell_escape = yes<br />&#13;
}&#13;
</p>&#13;
&#13;
<p>&#13;
And this is content of multiotp file under policy.d&#13;
</p>&#13;
<p>&#13;
multiotp_prefix = ''<br />&#13;
multiotp.authorize {<br />&#13;
       if (control:Auth-Type == MS-CHAP) {<br />&#13;
              update control {<br />&#13;
                      Auth-Type := multiotpmschap<br />&#13;
            }<br />&#13;
        } <br />&#13;
        elsif (!control:Auth-Type) { <br />&#13;
            update control { <br />&#13;
                Auth-Type := multiotp <br />&#13;
            } <br />&#13;
        } <br />&#13;
    } <br /></p>&#13;
&#13;
<p>&#13;
radtest testotp OTP_DIGITS 127.0.0.1 1812 secret returns Access-Accept but&#13;
radtest -t mschap testotp OTP_DIGITS 127.0.0.1 1812 secret returns the following &#13;
</p>&#13;
&#13;
<p>&#13;
Found Auth-Type = multiotp&#13;
(3) # Executing group from file /etc/raddb/sites-enabled/default&#13;
(3)   Auth-Type multiotp {&#13;
(3) multiotp: Executing: /var/www/html/multiotp/multiotp.php %{User-Name} %{User-Password} -request-nt-key -src=%{Packet-Src-IP-Address} -chap-challenge=%{CHAP-Challenge} -chap-password=%{CHAP-Password} -ms-chap-challenge=%{MS-CHAP-Challenge} -ms-chap-response=%{MS-CHAP-Response} -ms-chap2-response=%{MS-CHAP2-Response}:&#13;
(3) multiotp: EXPAND %{User-Name}&#13;
(3) multiotp:    --&gt; testotp&#13;
(3) multiotp: EXPAND %{User-Password}&#13;
(3) multiotp:    --&gt; &#13;
(3) multiotp: EXPAND -src=%{Packet-Src-IP-Address}&#13;
(3) multiotp:    --&gt; -src=127.0.0.1&#13;
(3) multiotp: EXPAND -chap-challenge=%{CHAP-Challenge}&#13;
(3) multiotp:    --&gt; -chap-challenge=&#13;
(3) multiotp: EXPAND -chap-password=%{CHAP-Password}&#13;
(3) multiotp:    --&gt; -chap-password=&#13;
(3) multiotp: EXPAND -ms-chap-challenge=%{MS-CHAP-Challenge}&#13;
(3) multiotp:    --&gt; -ms-chap-challenge=0x2ee85e7aa9a2b6e1&#13;
(3) multiotp: EXPAND -ms-chap-response=%{MS-CHAP-Response}&#13;
(3) multiotp:    --&gt; -ms-chap-response=0x000100000000000000000000000000000000000000000000000080cca3b95e8097092b15c3616a401670976d006084d6c506&#13;
(3) multiotp: EXPAND -ms-chap2-response=%{MS-CHAP2-Response}&#13;
(3) multiotp:    --&gt; -ms-chap2-response=&#13;
(3) multiotp: ERROR: Failed parsing output from: /var/www/html/multiotp/multiotp.php %{User-Name} %{User-Password} -request-nt-key -src=%{Packet-Src-IP-Address} -chap-challenge=%{CHAP-Challenge} -chap-password=%{CHAP-Password} -ms-chap-challenge=%{MS-CHAP-Challenge} -ms-chap-response=%{MS-CHAP-Response} -ms-chap2-response=%{MS-CHAP2-Response}: Expecting operator&#13;
(3) multiotp: ERROR: Program returned code (0) and output 'NT_KEY: 9B808D30754AE8E76E8ACB155F5A3D38, '&#13;
(3)     [multiotp] = fail&#13;
(3)   } # Auth-Type multiotp = fail&#13;
(3) Failed to authenticate the user&#13;
(3) Using Post-Auth-Type Reject&#13;
</p>]]>
        </description>
    </item>
    <item>
        <title>FreeRadius and SMS (how it works without challenge-response)</title>
        <link>https://forum.multiotp.net/index.php?p=/discussion/4/freeradius-and-sms-how-it-works-without-challenge-response</link>
        <pubDate>Tue, 01 Apr 2014 11:40:58 +0000</pubDate>
        <category>FreeRADIUS integration (Linux/Windows)</category>
        <dc:creator>DanielS</dc:creator>
        <guid isPermaLink="false">4@/index.php?p=/discussions</guid>
        <description><![CDATA[by entering sms as the otp password, radius should identify this as a SMS request and multiotp schould send an SMS. However, current setup is not challenge-response enabled. Anyone got it working?]]>
        </description>
    </item>
   </channel>
</rss>
