Perl で、RADIUS クライアントを作る。

Radius サーバに接続するためには、そのホスト名とシークレットが必要である。シークレットは Radius サーバへのパスワードみたいなもの。以下のコードでは $r に Radius クライアントのオブジェクトが入り、その後で $USENAME と $PASSWORD を使って $HOST にアクセスしている。

使用するモジュール use Authen::Radius; #!/usr/bin/perl use Authen::Radius; our $HOST = '1.1.1.1'; our $USERNAME = 'perltips'; our $PASSWORD = 'password'; our $SECRET = 'testing123'; # First Trial $r = new Authen::Radius(Host => $HOST,
                    Secret => $SECRET,
                    Debug  => 1,
                    TimeOut=> 10);
# 前座。ユーザー名とパスワードのチェックをしてみる。 print "auth result=", $r->check_pwd($USERNAME,
                                $PASSWORD,
                                $HOST), "\n";
# Authen::Radius->load_dictionary(); # 本番。ユーザー名とパスワードのチェックを設定する。 $r->add_attributes (
            { Name => 'UserName',       Value => $USERNAME },
            { Name => 'Password',       Value => $PASSWORD },
# { Name => 'NAS-IP-Address', Value => '1.1.1.2' } # # RFC 2865 https://www.ietf.org/rfc/rfc2865.txt calls this attribute # User-Password. Check your local RADIUS dictionary to find ); # ユーザー名とパスワードの組み合わせ (アトリビュート:属性) を、ACCESS_REQUEST で送る。 # そうすると返事が返って来るので recv_packet で受け取る。 $r->send_packet(ACCESS_REQUEST) and $type = $r->recv_packet(); print "server response type = $type\n"; # サーバから送られてきたアトリビュートを表示してみる。 for $a ($r->get_attributes()) {
    print "attr: name=$a->{'Name'} value=$a->{'Value'}\n";
}