【问题标题】:Access LDAP SSO user name from Laravel从 Laravel 访问 LDAP SSO 用户名
【发布时间】:2019-02-26 15:17:23
【问题描述】:

我对 Laravel 很陌生,所以我的问题对你来说可能听起来很愚蠢...... 我已经在野外发现了一些可能解决我的问题的东西,但是他们谈论的是我既不理解也不能在我的项目中采用的中间件。

我有一个场景,用户使用他们的 Windows 登录名访问我的网站。身份验证是使用 SSO 和 apache .htaccess 文件完成的。 用户名可以通过普通 PHP 上的 $_SERVER['REMOTE_USER'] 访问。 不幸的是,我不能在 Laravel 中使用这个全局变量。 此外,来自 Internet 的所有提示(使用 \Auth::user() 或 auth()->user())都不起作用...

我能在这里做什么(不用我(还)不懂的高度复杂的魔法)?

最好的问候, 汤姆

【问题讨论】:

  • 中间件不是魔法。它们是基础的一部分,属于 Laravel 基金会。您应该查看文档中的架构概念和基础知识。我很确定你能自己解决它。
  • 同时,我不认为我最大的问题是中间件的东西。似乎没有办法为不同的路由提供 .htaccess 文件,也没有办法在 Laravel 中使用浏览器的身份验证传递机制。我已经在.htaccess 中配置了AuthType Kerberos...
  • 我不确定我是否正确理解了您的目标。您是否希望通过 Apaache 身份验证的所有用户都能够访问您的 整个 应用程序(就好像您的应用程序中没有用户直接访问一样)?或者您想根据应用程序用户的 SSO 对其进行身份验证?已经有用于 LDAP 的 Laravel 包,所以也许你看看这个方向?
  • 在我当前的设置中,只有拥有 AD 帐户的用户才能访问该应用程序。我不希望他们使用用户名和密码进行身份验证,因为他们已经在他们的 PC 上进行了身份验证。浏览器应转发身份验证信息(Kerberos 票证),然后 Web 服务器应负责授权。在我的应用程序中,我想使用用户的登录名(如$_SERVER['REMOTE_USER'] 中给出的)来过滤一些数据库查询。没有 Active Directory 帐户的人将被 Apache 直接阻止。

标签: php laravel apache


【解决方案1】:

哦,孩子... 请原谅我的愚蠢! 我没有只见树木不见森林。 当然,当使用php artisan serve 时,我不能指望与实际目标目录中的情况相同!此外,除了 Laravel 的内部服务器,没有运行 apache Web 服务器。 解决方案是,我不需要任何中间件或魔法。我所需要的已经在那里了!我现在可以使用request()->server('REMOTE_USER') 访问REMOTE_USER 变量。 我所要做的就是从 Laravel 内部 Web 服务器切换到我的生产 Apache Web 服务器和生产环境。然后所有值都按预期存在。

我在不同的论坛上多次看到类似的问题,也许他们犯了同样的错误......所以,如果有人偶然发现这个现象:请记住网络服务器;-)

感谢您的提示,很抱歉用这个愚蠢的问题打扰您。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-29
    • 2021-10-24
    • 2021-07-27
    • 2012-06-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多