【发布时间】: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 直接阻止。