我正在构建一个仪表板,旨在简化多个业务应用程序的使用。仪表板的主要工作是从这些应用程序中获取数据并将它们发送回经过身份验证的用户。仪表板分为使用框架 CakePHP3 编写的 API 和一个只执行 HTTP 请求的客户端(尚未编写,但计划在 angular(2+) 中)。
流程示例:我登录仪表板,它告诉我应用程序 A 中有 5 封未读电子邮件,应用程序 B 中有 3 个通知,应用程序 C 中有 5 个新文档。对于收到的每个数据,我有一个直接链接来访问目标业务应用程序中的这些数据。
为此,所有业务应用程序都被cassified(CAS客户端),仪表板充当代理CAS(经过身份验证的用户的身份被传输到cassified应用程序)。

我编写了一个 CakePHP3 插件来对 CAS 服务器进行身份验证。该插件很简单,如果我没有 CAS 会话(通过 phpCAS),它会将我重定向到 CAS。
在我的后端,我有一个端点允许我对业务应用程序进行代理请求,我们称之为 :(/api/business/:id其中 :id 是应用程序的 ID)。这是我当前使用 phpCAS 执行此代理请求的代码:
if (!phpCAS::isAuthenticated()) {
throw new ForbiddenException('You need to be authenticated to the CAS server.');
}
$this->service = phpCAS::getProxiedService(PHPCAS_PROXIED_SERVICE_HTTP_GET);
$this->service->setUrl($this->url);
try {
$this->service->send();
$this->responseCode = $this->service->getResponseStatusCode();
$this->responseBody = $this->service->getResponseBody();
}
// willingly removed, not useful in this example
catch () …Run Code Online (Sandbox Code Playgroud)