FreeRADIUS 和 PrivacyIDEA 身份验证

FreeRADIUS 和 PrivacyIDEA 身份验证

我正在使用 PrivacyIDEA 的 FreeRADIUS 实现将身份验证请求发送到 PrivacyIDEA。但是,如果请求进入,我想在本地对特定用户进行身份验证。我修改了用户文件以包含用户和用户密码,并修改了站点配置以包含文件模块。但是,FreeRADIUS 仍在将请求传递给 PrivacyIDEA。我在这里遗漏了什么?

调试输出在这里(网站不允许我在这里发布它): https://pastebin.com/raw/WAsXx4gN

站点配置

server {
    authorize {
        files
        update request {
            # Add the Packet Src IP to the request as client fallback
            Packet-Src-IP-Address = "%{Packet-Src-IP-Address}"
        }
        perl-privacyidea
        if (ok || updated) {
            update control {
                Auth-Type := Perl
            }
        }
    }
    listen {
        type = auth
        ipaddr = 10.97.11.51
        port = 1812
    }
    listen {
        type = acct
        ipaddr = 10.97.11.51
        port = 0
    }
    authenticate {
        files
        Auth-Type perl {
            perl-privacyidea
        }
        digest
    }
    accounting {
        detail
    }
}

答案1

这是一篇非常值得一读的文章:https://wiki.freeradius.org/guide/Concepts

在授权部分,FreeRADIUS 将确定是否应处理请求以及如何对用户进行身份验证。授权部分将总是将 Auth-Type 设置为Perl

所以我们需要修改该authorize部分,并在该authenticate部分采取相应的行动。

这或许可以进行优化:

authorize {
    files
    if (ok) {
        # This means the user was found in "files" and the request should be handled accordingly
        update control {
            Auth-Type := F
        }
        ...
    } else {
        perl-privacyidea
        if (ok || update) {
            update control {
                Auth-Type := Perl
            }
        }
    }

这样我们任何一个将授权部分的 Auth-Type 设置为“F”或“Perl”。

然后我们可以在身份验证部分使用它:

authenticate {
    Auth-Type F {
        # In case of F, authenticate the user by files
        files
    }
    Auth-Type Perl {
        perl-privacyidea
    }
}

这应该能给你一个基本的想法,可能需要一些调整。但现在,通过文件验证的用户的请求不应传递给 privacyIDEA。

相关内容