如何从 iOS 获取内部隧道中的用户密码

How to get User-Password in inner tunnel from iOS

我正在尝试设置 freeradius 服务以允许针对 https api 进行身份验证。我让它适用于大多数 android 设备,甚至我的 Mac 专业书籍也适用。但是,当我们尝试使用 iOS 设备(iPad、iPhone)时,内部隧道无法获取用户密码字段。

因此当前设置为 EAP -> TTLS -> 自定义身份验证

eap.conf ttls 部分

ttls {   
  default_eap_type = md5
  copy_request_to_tunnel = yes  
  use_tunneled_reply = yes
  virtual_server = "inner-tunnel"
}

内部隧道自定义身份验证

authorize {
   ...
   update control {
            Auth-Type := `/usr/local/bin/admin_portal.py %{User-Name} '%{User-Password}' %{Calling-Station-Id}`,
            Fall-Through = Yes
    }
}

当我运行处于调试模式时,我得到以下输出

expand: %{User-Name} -> user@somedomain.com
expand: '%{User-Password}' -> ''
expand: %{Calling-Station-Id} -> 01-23-45-67-89-ab

但是,当我使用非 iOS 设备时,会填充密码。

如有任何帮助,我们将不胜感激。 谢谢。

您需要一个以明文形式发送密码的 TTLS 内部方法。最常见的方法是 TTLS-PAP。

如果请求者使用 TTLS-PAP 进行身份验证,代理请求(到内部隧道)将包含一个用户密码属性,其中包含用户输入(或缓存)的值。

下面是使用 Apple Configurator 设置配置文件的示例。