项目

常规

个人资料

操作

文档:ModAuthTicket

模块: mod_auth_ticket

描述

mod_auth_ticket是一个认证模块,它提供基于外部登录方案(OpenID、SAML、OAuth等)的服务器级别保护。这在以下情况下很有用:
提供单点登录功能,保护多个Web应用程序(每个Web应用程序都
不需要支持此功能 - 甚至静态内容也可以受到保护)。

此模块将未经认证的访问重定向到指定的外部页面,并让该页面通过使用签名/加密的cookie将认证信息注入回模块。

安装

已弃用 mod_auth_ticket 有严重限制,详情请参阅 mod_auth_ticket README。更好的选择是 mod_authn_ticket

mod_auth_ticket 是一个第三方模块,未包含在官方发行版中。重申,应该优先选择 mod_authn_ticket 而不是 mod_auth_ticket。

标准 lighttpd 模块构建过程有效,但我提供了一个需要一些编辑的 Makefile,
对于习惯的人来说可能更简单。在构建之前,你需要将 lighttpd 源代码解压到某个位置。

选项

历史(旧)手册可从以下地址获取:https://github.com/tai/mod-auth-ticket-for-lighttpd/wiki/Manpage

auth-ticket.name = "cookiename" - 必需

要使用的 Cookie 名称。此 Cookie 首先由“authurl”页面创建,然后重定向回 MAT 以通知 SSO 认证结果。

auth-ticket.key = "secret-password" - 必需

用于在“authurl”页面和 MAT 之间加密/解密/签名/验证 Cookie 数据的密钥。任何长度的任何字符串都可以。

对于实际使用的加密/签名方案,您可以在“authurl”页面中选择(有几种 Cookie 格式可供选择生成)。

auth-ticket.override = [012] - 必需,默认为 2

控制如何处理浏览器提供的认证信息。有 3 种情况

情况 1: auth-ticket.overide = 0

  • 如果由浏览器提供,则使用“Authorization:”头而不是 MAT Cookie。
  • 用例:如果您使用(本地提供的)BasicAuth 和(外部提供的)SSO 对您的站点进行双重保护,您可以通过指定此模式来赋予 BasicAuth 更高的优先级。

情况 2: auth-ticket.override = 1

  • 也是双重保护模式,但赋予 MAT Cookie 更高的优先级。

情况 3: auth-ticket.override = 2

  • 这是 MAT-only 模式。传入的“Authorization:”头将被忽略,即使 MAT 认证失败也不会回退到 BasicAuth。这是推荐的默认设置。

auth-ticket.authurl = "url-in-case-of-authfail" - 可选,默认为空

认证失败时的重定向 URL。

此页面需要作为 MAT 和您选择的 SSO 方案之间的桥梁,因此您需要将自定义页面放置到此 URL。有关此类页面的示例,请参阅 demo/ 文件夹下的文件。

如果未指定此页面,则不会发生重定向。这与允许匿名访问相同,这在某些用例(如半公开维基)中很有用。

auth-ticket.timeout = <seconds> - 可选,默认为 86400

设置签发票据的生命周期。

请注意,由“authurl”页面签发的 Cookie 仅使用一次,并立即
被 MAT 签发的票据(=随机生成的令牌)替换。此参数
指定 MAT 签发票据的生命周期。

auth-cookie.options = "any=cookie; parameter" - 可选,默认为空

您希望包含在 Cookie 中的任何其他选项。

auth-ticket.loglevel = [0-4] - 可选,默认为 1 (ERROR)

设置日志级别。当前支持的级别有:0 (FATAL), 1(ERROR), 2(WARN), 3(INFO), 4(DEBUG)。如果将其设置为 DEBUG,某些敏感信息(用户名、签发令牌)将被记录(但密码不会被记录 - 无论如何都无法记录)。

示例

server.modules += ("mod_auth_ticket")

$HTTP["url"] =~ "^/demo/passwd\.protected" {
        auth-ticket.override = 2
        auth-ticket.timeout  = 86400
        auth-ticket.key      = "sharedsecret.passwd" 
        auth-ticket.name     = "AuthByPasswd" 
        auth-ticket.options  = "path=/; httponly;" 
        auth-ticket.authurl  = "/demo/passwd/login.php" 
}

gstrauss 更新于 大约 5 年前 · 7 次修订