minvws/openid-connect-php-laravel

Laravel 的 OpenID Connect 客户端

v0.3.0 2024-06-10 14:20 UTC

This package is auto-updated.

Last update: 2024-09-15 14:20:31 UTC


README

此包是基于 jumbojett/OpenID-Connect-PHP 包的 Laravel OpenID Connect 实现。它提供了一个方便的方法将 OpenID Connect 集成到您的 Laravel 应用程序中。

要求

在使用 Laravel 的 OpenID Connect 包之前,请确保您的开发环境满足以下要求

  • PHP 8.1 或更高版本:该包至少需要 PHP 版本 8.1。请确保您已正确安装和配置 PHP。
  • Laravel:该包旨在与 Laravel 一起使用,因此您应该已经设置并运行了一个 Laravel 应用程序。
  • Composer:Composer 是 PHP 的依赖管理器。您需要安装 Composer 来安装和管理该包及其依赖项。

如果您的环境满足这些要求,您可以继续安装和配置 OpenID Connect 包。

安装

您可以通过 Composer 包管理器安装此包

composer require minvws/openid-connect-php-laravel

对于 Laravel,发布配置文件

php artisan vendor:publish --provider="MinVWS\OpenIDConnect\OpenIDConnectServiceProvider"

此命令会将配置文件发布到您的 Laravel 应用程序的配置目录。配置文件名为 oidc.php

配置

要使用此包,您需要在 Laravel 应用程序的 .env 文件或通过环境变量中配置以下变量

  • OIDC_ISSUER:OpenID Connect 提供者的发行者 URL。
  • OIDC_CLIENT_ID:OpenID Connect 提供者的客户端 ID。
  • OIDC_CLIENT_SECRET:如果需要,OpenID Connect 提供者的客户端密钥。
  • OIDC_DECRYPTION_KEY_PATH:只有当用户信息端点的响应被加密时才需要。这是 JWE 解密密钥的路径。
  • OIDC_ADDITIONAL_SCOPES:默认情况下,请求 openid 范围。如果需要额外的范围,您可以在此处指定它们,作为逗号分隔的列表。
  • OIDC_CODE_CHALLENGE_METHOD:用于证明密钥交换(PKCE)的代码挑战方法。默认值是 S256。

缓存配置

该包提供了一个可配置的缓存来缓存 OpenID Connect 配置。您可以使用以下配置选项自定义缓存的行为

  • OIDC_CONFIGURATION_CACHE_DRIVER:用于缓存 OpenID Connect 配置的缓存存储。
  • OIDC_CONFIGURATION_CACHE_TTL:OpenID Connect 配置的缓存 TTL(生存时间)以秒为单位。

路由配置

该包提供了一个可配置的登录路由用于 OpenID Connect 身份验证。您可以使用以下配置选项自定义登录路由的行为

  • OIDC_LOGIN_ROUTE_ENABLED:启用或禁用登录路由。将此值设置为 true 或 false。
  • OIDC_LOGIN_ROUTE:登录路由的 URL。
  • OIDC_LOGIN_ROUTE_MIDDLEWARE:在登录路由上运行的中间件。默认情况下,应用 web 中间件。
  • OIDC_LOGIN_ROUTE_PREFIX:登录路由的前缀。

使用方法

配置必要的变量后,您可以访问默认可用的 /oidc/login 路由。

登录路由

该包提供了一个预配置的登录路由用于 OpenID Connect 身份验证。登录路由是默认可用的,可通过 /oidc/login 访问。

要启用或禁用登录路由,您可以在环境配置中更新OIDC_LOGIN_ROUTE_ENABLED变量。将其设置为true以启用登录路由或设置为false以禁用它。要更改登录路由的URL,您可以在环境配置中更新OIDC_LOGIN_ROUTE变量。默认值是/oidc/login

自定义登录响应处理器

该包包含一个默认的LoginResponseHandler类,它返回包含用户信息的JSON响应。但是,您可以根据项目需求自定义登录响应。

要绑定您自己的LoginResponseHandlerInterface实现,您可以在Laravel应用程序中使用以下代码

$this->app->bind(LoginResponseHandlerInterface::class, YourCustomLoginResponse::class);

YourCustomLoginResponse替换为您自定义实现的类名。通过绑定自己的响应类,您可以定义所需的登录响应行为和格式。

请确保在您的自定义响应处理器类中实现LoginResponseHandlerInterface,以确保兼容性。

禁用TLS证书验证

默认情况下,该包在向颁发者发出请求时验证TLS证书。如果您想禁用TLS证书验证,您可以在环境配置中将OIDC_TLS_VERIFY变量设置为false。

贡献

如果您遇到任何问题或有改进建议,请随时在此包的GitHub仓库上打开一个问题或提交一个拉取请求。

许可证

此包是开源的,并按照欧洲联盟公共许可证第1.2版发布。您可以根据许可证条款自由使用、修改和分发此包。