【发布时间】:2020-05-26 13:58:40
【问题描述】:
我正在尝试找出在 Microsoft Azure 中是否有比我当前的解决方案更好的身份验证方法。
我确实有一个在 Windows Server 2019 和 IIS 中设置的 PHP 应用程序。我正在使用 SimpleSAMLphp 库,它工作正常 - 它可以在 Azure 中进行身份验证,没有任何问题。
但是...它在 file-by-file 基础上进行身份验证,这意味着我需要在我希望它进行身份验证的每个 PHP 文件中包含 Azure 身份验证。像这样的东西工作正常:
https://whatever.local/secure/myfile.php:
# ----------
# myfile.php
# ----------
# Include the SimpleSAMLphp library
require($_SERVER["DOCUMENT_ROOT"]."/../simpleSAMLphp/lib/_autoload.php");
# Make sure I am authenticated in Azure
$azure = new \SimpleSAML\Auth\Simple("my-identity");
$azure->requireAuth();
# Get Azure data
$azureUserAttr = $azure->getAttributes();
# Get the data in to useable variables
$azureId = $azureUserAttr["userid"][0] ?? "";
$azureEmail = $azureUserAttr["email"][0] ?? "";
# Print the variables
echo "ID=$azureId<br />";
echo "Email=$azureEmail<br />";
是否可以安装某种 Windows IIS 运行时来保护整个文件夹,所以每次我调用某些东西时,例如/secure/ 然后通过 Azure 进行身份验证?
例如 - 如何确保我必须在 Azure 中进行身份验证才能获取这张想象中的图片 https://whatever.local/secure/picture.jpg ?我可以保护整个/secure/ 文件夹吗?
理想情况下它可以做到这一点,然后我应该将 Azure 属性/声明作为 PHP 中的服务器变量提供?
【问题讨论】:
-
由于 PHP 应用程序可以在 IIS 集成管道下执行。 HTTP 模块可用于根据带有 /secure/ 的 url 验证身份验证令牌。您可以使用 httpmodule 来检查特定的 cookie。如果没有这样的cookie,您可以将其重定向到身份验证页面。