【问题标题】:URL authentication is not working on IcecastURL 身份验证在 Icecast 上不起作用
【发布时间】:2015-04-10 14:07:33
【问题描述】:

我在 Icecast 上配置了 URL 身份验证。但是,弹出 HTTP Basic 身份验证窗口。

如果身份验证类型是 url,我认为不会弹出窗口。 如何设置?

<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 中请求它,我会阅读文档,当我可以将它包含在数据中以发布到 listener-joined.php 时。

/stream.ogg&session=xyz

所以,我让底部等URL在用户中请求它,并想在脚本中确认id是否在数据库中注册。

/ices&id=hogehoge

【问题讨论】:

  • 这个设置看起来很合理。您是否检查了 listener_add 的 URL 是否返回了必要的授权标头?此外,error.log 可能会帮助您了解发生了什么。
  • “不弹出”是什么意思?您能否修改您的问题以说明您通过配置 URL 身份验证来实现的目标。我怀疑你可能误解了什么。

标签: audio-streaming icecast


【解决方案1】:

official documentation on URL based authentication 中所述,特别是 listener_add 部分:
注意: 这里的挂载(不同于开始/结束options) 声明请求的 url,包括任何查询参数,例如,请求的 URL 可以是 /stream.ogg&session=xyz,但请注意,每个选项数据在通过 POST 传递之前都经过转义。

然后您的脚本 (listener-joined.php) 必须解释此数据,如果满足则返回授权 HTTP 标头,默认为:icecast-auth-user: 1

如果您的脚本返回标题,例如因为id=foobar 是不允许的,那么Icecast 服务器将拒绝监听器连接,HTTP 状态码为401。然后大部分浏览器和部分播放器会弹出认证对话框。

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

【讨论】:

    猜你喜欢
    • 2015-06-11
    • 2019-12-18
    • 2012-10-04
    • 1970-01-01
    • 2021-08-24
    • 2013-06-25
    • 1970-01-01
    相关资源
    最近更新 更多