2017-11-28 6 views
2

다른 여러 응용 프로그램에 사용되는 password_hash를 사용하여 암호화 된 사용자 이름과 암호가있는 데이터베이스가 있습니다.freeradius와 함께 php password_hash 암호를 사용합니다.

freeradius (Wi-Fi 액세스 용)를 사용하여 사용자를 인증하는 데이 비밀번호를 다시 사용하고 싶습니다.

우분투 16.04 서버에서 FreeRADIUS 버전 3.0.15를 06:41:27에 작성한 x86_64-pc-linux-gnu 용 FreeRADIUS 버전 3.0.15를 사용하고 있습니다. 클라이언트는 Unifi AP PRO입니다.

구성을 최소한으로 변경하여 기본 설치부터 시작합니다. 테스트 목적으로 사용자에게 일반 텍스트 사용자 이름과 암호가있는 한 명의 사용자를 추가했습니다. 그 사용자는 작동합니다. 에서

사이트 지원 내가 권한 부여 섹션의 시작에서 권한 부여 섹션

update control {Auth-type := "/usr/bin/php -f /etc/freeradius/php/checkpasswd.php'%{User-Name}' '%{User-Password}'"} 

추가/기본. checkpasswd.php의 관련 부분은 는 기본적으로이 때 암호 일치를 적용하고 다른 모든 경우에 거부 말한다 (네덜란드의 의견 죄송합니다)

//arguments ophalen 
$username_radius = $argv[1]; 
$password_radius = $argv[2]; 

//wachtwoorden opzoeken in de databank 
$query = $conn->prepare('SELECT passwordHash FROM gebruikers WHERE username = :username'); 
$query->bindParam(':username', $username_radius); 
$query->execute(); 
$row_count = $query->rowCount(); 
if ($row_count != 1){ 
    echo 'Reject'; 
    } 
    else { 

//is de hash van het radiuswachtwoord gelijk aan de hash in de databank? 
     $rs = $query->fetchAll(); 
     $passwordHash = $rs[0][0]; 
     if (password_verify($password_radius,$passwordHash)) { 
      echo 'Accept'; 
     } 
     else { 
      echo 'Reject'; 
     } 

입니다.

암호를 볼 수 있으려면 TTLS/PAP를 사용해야한다는 것을 이해했습니다. 그러나 암호는 결코 내 서버에서 끝나지 않습니다. freeradius -X

(0) Received Access-Request Id 18 from 10.1.8.99:55827 to 192.168.2.32:1812 length 157 
(0) User-Name = "krog" 
(0) NAS-Identifier = "24a43cb081ea" 
(0) NAS-Port = 0 
(0) Called-Station-Id = "36-A4-3C-B1-81-EA:ritaexam" 
(0) Calling-Station-Id = "48-45-20-FB-4B-31" 
(0) Framed-MTU = 1400 
(0) NAS-Port-Type = Wireless-802.11 
(0) Connect-Info = "CONNECT 0Mbps 802.11b" 
(0) EAP-Message = 0x02660009016b726f67 
(0) Message-Authenticator = 0xfa1433a62a8b77ea794a62ac47f8320d 
(0) # Executing section authorize from file /etc/freeradius/sites-enabled/default 
(0) authorize { 
(0)  update control { 
(0)  EXPAND /usr/bin/php -f /etc/freeradius/php/checkpasswd.php '%{User-Name}' '%{User-Password}' 
(0)   --> /usr/bin/php -f /etc/freeradius/php/checkpasswd.php 'krog' '' 
(0)  } # update control = fail 
(0) } # authorize = fail 
(0) Using Post-Auth-Type Reject 
(0) # Executing group from file /etc/freeradius/sites-enabled/default 
(0) Post-Auth-Type REJECT { 
(0) attr_filter.access_reject: EXPAND %{User-Name} 
(0) attr_filter.access_reject: --> krog 
(0) attr_filter.access_reject: Matched entry DEFAULT at line 11 
(0)  [attr_filter.access_reject] = updated 
(0) eap: Request was previously rejected, inserting EAP-Failure 
(0) eap: Sending EAP Failure (code 4) ID 102 length 4 
(0)  [eap] = updated 
(0)  policy remove_reply_message_if_eap { 
(0)  if (&reply:EAP-Message && &reply:Reply-Message) { 
(0)  if (&reply:EAP-Message && &reply:Reply-Message) -> FALSE 
(0)  else { 
(0)   [noop] = noop 
(0)  } # else = noop 
(0)  } # policy remove_reply_message_if_eap = noop 
(0) } # Post-Auth-Type REJECT = updated 
(0) Delaying response for 1.000000 seconds 
Waking up in 0.3 seconds. 
Waking up in 0.6 seconds. 
(0) Sending delayed response 
(0) Sent Access-Reject Id 18 from 192.168.2.32:1812 to 10.1.8.99:55827 length 44 
(0) EAP-Message = 0x04660004 
(0) Message-Authenticator = 0x00000000000000000000000000000000 

같이 출력을 볼 수 있습니다. 사용자 아이디가 통신에 연결되어 있지 않습니다. 이것이 작동해야한다고 언급 한 여러 게시물을 발견했습니다. 나는 어딘가에서 명백한 것을 놓치고 있니?

통찰력을 가져 주셔서 감사합니다. 저 위해 오류 수정

update control {Auth-type := "/usr/bin/php -f /etc/freeradius/php/checkpasswd.php'%{User-Name}' '%{User-Password}'"} 

update control {Auth-type := `/usr/bin/php -f /etc/freeradius/php/checkpasswd.php '%{User-Name}' '%{User-Password}'`} 

로 변경 공원

답변

0

(`대신 "의 사용)