URL 身份验证在 Icecast 上不起作用

URL authentication is not working on Icecast

我在 Icecast.But 上配置了 URL 身份验证,弹出 HTTP 基本身份验证 window。

我认为如果身份验证类型是 url,window 不会弹出。 怎么设置?

<mount type="default">
</mount>

<mount type="normal">
  <mount-name>/ices</mount-name>
  <public>-1</public>
  <authentication type="url">    
    <option name="listener_add" value="http://localhost/listener-joined.php" />
    <option name="listener_remove" value="http://localhost/listener-left.php" />    
  </authentication>
</mount>

我想在我事先自己设置的id中进行认证。如果我在 URL 中请求它,我会阅读文档,如果我可以将它包含在数据中到 post 到 listener-joined.php.

/stream.ogg&session=xyz

所以,我让URL在一个用户中请求它,想在一个脚本中确认id是否注册到数据库中。

/ices&id=hogehoge

official documentation on URL based authentication 所述,特别是 listener_add 部分:
注意: 此处的挂载(与 start/end 选项不同)声明请求的 url 包括任何查询参数,例如请求的 URL 可以是 /stream.ogg&session=xyz,但请注意,每个选项数据在通过 POST.

传递之前都会进行转义

您的脚本 (listener-joined.php) 然后必须解释此数据,如果满足 return 授权 HTTP header,默认情况下是:icecast-auth-user: 1

如果您的脚本不是 return header,例如因为 id=foobar 是不允许的,那么 Icecast 服务器将拒绝监听器连接,HTTP 状态码为 401。大多数浏览器和一些播放器随后会弹出一个验证对话框。

有一个 ticket to make this configurable,例如到 403,它不会弹出这样的对话,或者允许重定向 30 倍。