在 FreeRadius 中配置 rlm_rest 模块

fre*_*reb 4 freeradius

使用 FreeRADIUS 我需要针对 Web 后端对 RADIUS 用户进行身份验证,并且一直在尝试使用 rlm_rest 模块来做到这一点。见这里

在我的站点配置中,我有这样的事情:

authorize {
    rest
}
Run Code Online (Sandbox Code Playgroud)

在身份验证部分,我尝试了以下操作:

authenticate {
    Auth-Type REST {
        rest
    }
}
Run Code Online (Sandbox Code Playgroud)

或者

authenticate {
    rest
}
Run Code Online (Sandbox Code Playgroud)

在任何一种情况下,我都会收到以下错误: (2) ERROR: No Auth-Type found: rejecting the user via Post-Auth-Type = Reject

在我的 Web 服务器上,我正在返回 ,204 code因为它似乎应该在没有额外进程的情况下对用户进行身份验证。见这里。授权似乎工作正常,但一旦到达身份验证部分,就会返回该错误。

我需要知道的是允许 rlm_rest 模块完成请求的身份验证部分所需的“用户”文件条目和站点可用条目的组合。谢谢,

Arr*_*ell 8

Rest 没有设置 Auth-Type,你必须手动设置。

authorize {
    rest
    if (ok) {
        update control {
            Auth-Type := rest
        }
    }
}

authenticate {
    rest
}
Run Code Online (Sandbox Code Playgroud)

Auth-Type 是为authenticate 中列出的模块自动创建的(您实际上并不需要Auth-Type 节)。

如果你不需要,你不需要在授权中调用 rest,这样的事情也可以正常工作:

authorize {
    if (User-Password) {
        update control {
            Auth-Type := rest
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:

注意:在 3.0.4 版本之前,REST 模块用于control:Cleartext-Password获取用户的密码,因此为了使模块正常工作,您需要从request:User-Password以下位置复制值:

authorize {
    if (User-Password) {
        update control {
            Cleartext-Password := &User-Password
            Auth-Type := rest
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

版本 3.0.4 及更高版本会request:User-Password改为寻找,这在大多数情况下应该可以正常工作。