<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
Good day.
<div class=""><br class="">
</div>
<div class="">I am working on a project for sending users OTP’s to gain access. &nbsp;I would like to have users authenticate to AD and once accepted use Authby OTP to generate a token and send it to the user via SMS. &nbsp; The user would then enter the OTP and gain
 access.</div>
<div class="">I have done a bit of researching and found a config that I am using as a base. &nbsp;<a href="http://www.van-sluis.nl/?p=345" class="">http://www.van-sluis.nl/?p=345</a></div>
<div class="">The Authby LDAP2 in my config is working as expected but the Authby OTP is not. &nbsp;It is a bit confusing at this point as I am unsure how to debug the Authby OTP failure to find the exact issue.</div>
<div class=""><br class="">
</div>
<div class="">My expectation is that if the Authby OTP was working right a one-password would be generated and the sent to the users mobile number found in AD.</div>
<div class=""><br class="">
</div>
<div class="">Any ideas where to start with this one?</div>
<div class=""><br class="">
</div>
<div class="">Cleaned radius.cfg file</div>
<div class="">========</div>
<div class="">
<div class=""># radius.cfg - Niels van Sluis, &lt;<a href="mailto:niels@van-sluis.nl" class="">niels@van-sluis.nl</a>&gt;</div>
<div class="">#</div>
<div class=""># Example Radiator configuration file.</div>
<div class="">#</div>
<div class=""># * retrieve mobile number from Directory Server.</div>
<div class=""># * generate and send One-Time Password to mobile number.</div>
<div class=""># * authenticate One-Time Password.&nbsp;</div>
<div class=""><br class="">
</div>
<div class="">LogDir &nbsp; &nbsp; &nbsp;/var/log/radius</div>
<div class="">DbDir<span class="Apple-tab-span" style="white-space:pre"> </span>/etc/radiator</div>
<div class=""># User a lower trace level in production systems:</div>
<div class="">Trace <span class="Apple-tab-span" style="white-space:pre"></span>7</div>
<div class=""><br class="">
</div>
<div class="">AuthPort &nbsp; &nbsp;1812&nbsp;</div>
<div class="">AcctPort &nbsp; &nbsp;1813</div>
<div class=""><br class="">
</div>
<div class="">&lt;Client 1.1.100.8&gt;</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; Secret REDACTED</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; Identifier juni-sslvpn</div>
<div class="">&lt;/Client&gt;</div>
<div class=""><br class="">
</div>
<div class="">&lt;AuthBy LDAP2&gt;</div>
<div class=""><span class="Apple-tab-span" style="white-space:pre"></span># Radiator talks to Microsoft AD.</div>
<div class="">&nbsp; &nbsp; # Try to find mobile number only.</div>
<div class=""><span class="Apple-tab-span" style="white-space:pre"></span>Debug 255</div>
<div class=""><span class="Apple-tab-span" style="white-space:pre"></span>Identifier<span class="Apple-tab-span" style="white-space:pre">
</span>SSLVPN_LDAP</div>
<div class=""><span class="Apple-tab-span" style="white-space:pre"></span>NoDefault</div>
<div class="">&nbsp; &nbsp; Host<span class="Apple-tab-span" style="white-space:pre"> </span>
1.1.50.80 1.1.50.82</div>
<div class=""><span class="Apple-tab-span" style="white-space:pre"></span>Port<span class="Apple-tab-span" style="white-space:pre">
</span>3268</div>
<div class=""><span class="Apple-tab-span" style="white-space:pre"></span>BaseDN<span class="Apple-tab-span" style="white-space:pre">
</span></div>
<div class=""><span class="Apple-tab-span" style="white-space:pre"></span>AuthDN<span class="Apple-tab-span" style="white-space:pre">
</span>cn=SVC_REDACTED OU=REDACTED, DC=REDACTED, DC=REDACTED, DC=REDACTED</div>
<div class="">&nbsp; &nbsp; AuthPassword<span class="Apple-tab-span" style="white-space:pre">
</span>REDACTED</div>
<div class=""><span class="Apple-tab-span" style="white-space:pre"></span>Timeout<span class="Apple-tab-span" style="white-space:pre">
</span>2</div>
<div class=""><span class="Apple-tab-span" style="white-space:pre"></span>UsernameAttr<span class="Apple-tab-span" style="white-space:pre">
</span>sAMAccountName</div>
<div class=""><span class="Apple-tab-span" style="white-space:pre"></span>PasswordAttr</div>
<div class=""><span class="Apple-tab-span" style="white-space:pre"></span>ServerChecksPassword</div>
<div class=""><span class="Apple-tab-span" style="white-space:pre"></span>HoldServerConnection</div>
<div class=""><span class="Apple-tab-span" style="white-space:pre"></span>FailureBackoffTime 0</div>
<div class=""><span class="Apple-tab-span" style="white-space:pre"></span># Get attribute that contains the mobile number.</div>
<div class="">&nbsp; &nbsp; AuthAttrDef<span class="Apple-tab-span" style="white-space:pre">
</span>MobileNumber</div>
<div class=""><br class="">
</div>
<div class=""><span class="Apple-tab-span" style="white-space:pre"></span># We don't do authentication. Authentication is done by OTP.</div>
<div class="">&nbsp; &nbsp; #NoCheckPassword</div>
<div class=""><br class="">
</div>
<div class=""><span class="Apple-tab-span" style="white-space:pre"></span># Some code to put the mobile number into memory, so it can be used</div>
<div class="">&nbsp; &nbsp; &nbsp;# by OTP.</div>
<div class="">&nbsp; &nbsp; &nbsp;PostSearchHook sub {\</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; use Radius::Context;\</div>
<div class=""><br class="">
</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; my $user = $_[1];\</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; my $attr = ($_[4]-&gt;get('MobileNumber'))[0];\</div>
<div class=""><br class="">
</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; my $context = &amp;Radius::Context::get(&quot;otp:$user&quot;, 120);\</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; $context-&gt;{mobile_number} = $attr;\</div>
<div class="">&nbsp; &nbsp; &nbsp; }</div>
<div class="">&lt;/AuthBy&gt;</div>
<div class=""><br class="">
</div>
<div class="">&lt;AuthBy OTP&gt;</div>
<div class=""><span class="Apple-tab-span" style="white-space:pre"></span># Authenticate based on One-Time Password sent to user by SMS.</div>
<div class="">&nbsp; &nbsp; &nbsp;Identifier SSLVPN_OTP</div>
<div class=""><span class="Apple-tab-span" style="white-space:pre"></span>EAPType One-Time-Password,Generic-Token</div>
<div class=""><span class="Apple-tab-span" style="white-space:pre"></span>ChallengeHook sub {my ($self, $user, $p, $context) = @_;\</div>
<div class=""><span class="Apple-tab-span" style="white-space:pre"></span>$context-&gt;{otp_password} = $self-&gt;generate_password();\</div>
<div class=""><span class="Apple-tab-span" style="white-space:pre"></span>system('/etc/radiator/otp/sendsms.php', $user, $context-&gt;{mobile_number}, $context-&gt;{otp_password});\</div>
<div class=""><span class="Apple-tab-span" style="white-space:pre"></span>return &quot;Enter One-Time Password&quot;; \</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</div>
<div class="">&lt;/AuthBy&gt;</div>
<div class=""><br class="">
</div>
<div class="">&lt;AuthBy GROUP&gt;</div>
<div class="">&nbsp; &nbsp; &nbsp;Identifier Check-LDAP-and-OTP</div>
<div class="">&nbsp; &nbsp; &nbsp;AuthByPolicy ContinueWhileAccept</div>
<div class="">&nbsp; &nbsp; &nbsp;AuthBy SSLVPN_LDAP</div>
<div class="">&nbsp; &nbsp; &nbsp;AuthBy SSLVPN_OTP</div>
<div class="">&lt;/AuthBY&gt;</div>
<div class=""><br class="">
</div>
<div class="">&lt;Handler Client-Identifier = juni-sslvpn&gt;</div>
<div class="">&nbsp; &nbsp; &nbsp;RejectHasReason</div>
<div class="">&nbsp; &nbsp; &nbsp;AuthBy Check-LDAP-and-OTP</div>
<div class="">&lt;/Handler&gt;</div>
</div>
<div class="">========</div>
<div class=""><br class="">
</div>
<div class="">Cleaned log output</div>
<div class="">========</div>
<div class="">
<div class="">Sun Dec 20 20:55:03 2015: DEBUG: Packet dump:</div>
<div class="">*** Received from 1.1.100.8 port 48711 ....</div>
<div class=""><br class="">
</div>
<div class="">Packet length = 60</div>
<div class="">01 f9 00 3c 44 f6 a0 c6 d9 45 84 6b 77 b0 3b bd</div>
<div class="">6f 7c a6 a6 01 0a 48 6f 6e 6e 6f 6c 64 4a 02 12</div>
<div class="">38 0e 00 f6 b2 17 6f 3b e0 62 22 b9 36 35 f7 bd</div>
<div class="">06 06 00 00 00 01 04 06 a7 64 64 08</div>
<div class="">Code: &nbsp; &nbsp; &nbsp; Access-Request</div>
<div class="">Identifier: 249</div>
<div class="">Authentic: &nbsp;D&lt;246&gt;&lt;160&gt;&lt;198&gt;&lt;217&gt;E&lt;132&gt;kw&lt;176&gt;;&lt;189&gt;o|&lt;166&gt;&lt;166&gt;</div>
<div class="">Attributes:</div>
<div class=""><span class="Apple-tab-span" style="white-space:pre"></span>User-Name = &quot;ADUSER&quot;</div>
<div class=""><span class="Apple-tab-span" style="white-space:pre"></span>User-Password = 8&lt;14&gt;&lt;0&gt;&lt;246&gt;&lt;178&gt;&lt;23&gt;o;&lt;224&gt;b&quot;&lt;185&gt;65&lt;247&gt;&lt;189&gt;</div>
<div class=""><span class="Apple-tab-span" style="white-space:pre"></span>Service-Type = Login-User</div>
<div class=""><span class="Apple-tab-span" style="white-space:pre"></span>NAS-IP-Address = 1.1.100.8</div>
<div class=""><br class="">
</div>
<div class="">Sun Dec 20 20:55:03 2015: DEBUG: Handling request with Handler 'Client-Identifier = juni-sslvpn', Identifier ''</div>
<div class="">Sun Dec 20 20:55:03 2015: DEBUG: &nbsp;Deleting session for ADUSER, 1.1.100.8,&nbsp;</div>
<div class="">Sun Dec 20 20:55:03 2015: DEBUG: Handling with Radius::AuthGROUP: Check-LDAP-and-OTP</div>
<div class="">Sun Dec 20 20:55:03 2015: DEBUG: Handling with Radius::AuthLDAP2: SSLVPN_LDAP</div>
<div class="">Sun Dec 20 20:55:03 2015: INFO: Connecting to 1.1.50.80:3268 1.1.50.82:3268</div>
<div class="">Sun Dec 20 20:55:03 2015: INFO: Connected to 1.1.50.80:3268</div>
<div class="">Sun Dec 20 20:55:03 2015: INFO: Attempting to bind to LDAP server 1.1.50.80:3268</div>
<div class="">Sun Dec 20 20:55:03 2015: DEBUG: LDAP got result for CN=AD User,OU=REDACTED,OU=REDACTED,DC=REDACTED,DC=REDACTED,DC=REDACTED</div>
<div class="">Sun Dec 20 20:55:03 2015: DEBUG: Radius::AuthLDAP2 looks for match with ADUSER [ADUSER]</div>
<div class="">Sun Dec 20 20:55:03 2015: DEBUG: Radius::AuthLDAP2 ACCEPT: : ADUSER [ADUSER]</div>
<div class="">Sun Dec 20 20:55:03 2015: DEBUG: Radius::AuthGROUP:Check-LDAP-and-OTP SSLVPN_LDAP result: ACCEPT,&nbsp;</div>
<div class="">Sun Dec 20 20:55:03 2015: DEBUG: Handling with Radius::AuthOTP: SSLVPN_OTP</div>
<div class="">Sun Dec 20 20:55:03 2015: DEBUG: Radius::AuthOTP looks for match with ADUSER [ADUSER]</div>
<div class="">Sun Dec 20 20:55:03 2015: DEBUG: Radius::AuthOTP REJECT: OTP Authentication failed: (): ADUSER [ADUSER]</div>
<div class="">Sun Dec 20 20:55:03 2015: DEBUG: Radius::AuthGROUP:Check-LDAP-and-OTP SSLVPN_OTP result: REJECT, OTP Authentication failed: ()</div>
<div class="">Sun Dec 20 20:55:03 2015: DEBUG: AuthBy GROUP result: REJECT, OTP Authentication failed: ()</div>
<div class="">Sun Dec 20 20:55:03 2015: INFO: Access rejected for ADUSER: OTP Authentication failed: ()</div>
<div class="">Sun Dec 20 20:55:03 2015: DEBUG: Packet dump:</div>
<div class="">*** Sending to 1.1.100.8 port 48711 ....</div>
<div class=""><br class="">
</div>
<div class="">Packet length = 51</div>
<div class="">03 f9 00 33 67 f2 b5 1f 1c 13 63 fc 25 ff d3 79</div>
<div class="">a5 80 d7 c5 12 1f 4f 54 50 20 41 75 74 68 65 6e</div>
<div class="">74 69 63 61 74 69 6f 6e 20 66 61 69 6c 65 64 3a</div>
<div class="">20 28 29</div>
<div class="">Code: &nbsp; &nbsp; &nbsp; Access-Reject</div>
<div class="">Identifier: 249</div>
<div class="">Authentic: &nbsp;g&lt;242&gt;&lt;181&gt;&lt;31&gt;&lt;28&gt;&lt;19&gt;c&lt;252&gt;%&lt;255&gt;&lt;211&gt;y&lt;165&gt;&lt;128&gt;&lt;215&gt;&lt;197&gt;</div>
<div class="">Attributes:</div>
<div class=""><span class="Apple-tab-span" style="white-space:pre"></span>Reply-Message = &quot;OTP Authentication failed: ()&quot;</div>
</div>
<div class=""><br class="">
</div>
</body>
</html>