Yii2 OAuth2 服务器扩展教程
1. 项目介绍
yii2-oauth2-server
是一个基于 Yii 框架 2.0 的 OAuth2 服务器扩展。它基于 League OAuth2
服务器实现,并支持 OpenID Connect。该扩展允许你在 Yii 2.0 应用程序中轻松集成 OAuth2 认证机制,适用于需要安全认证和授权的应用场景。
2. 项目快速启动
安装
首先,确保你的 PHP 版本至少为 7.4。然后,使用 Composer 安装 yii2-oauth2-server
扩展:
composer require filsh/yii2-oauth2-server
配置
在 Yii 2.0 项目的配置文件(通常是 config/web.php
)中添加以下配置:
'modules' => [
'oauth2' => [
'class' => 'filsh\yii2\oauth2server\Module',
'tokenParamName' => 'accessToken',
'tokenAccessLifetime' => 3600 * 24,
'storageMap' => [
'user_credentials' => 'app\models\User',
],
'grantTypes' => [
'user_credentials' => [
'class' => 'OAuth2\GrantType\UserCredentials',
],
'refresh_token' => [
'class' => 'OAuth2\GrantType\RefreshToken',
'always_issue_new_refresh_token' => true
]
]
]
]
创建 OAuth2 表
运行以下命令来创建所需的 OAuth2 数据库表:
php yii migrate --migrationPath=@vendor/filsh/yii2-oauth2-server/src/migrations
使用
在你的控制器中,可以通过以下方式验证 OAuth2 令牌:
public function behaviors()
{
return [
'oauth2access' => [
'class' => \filsh\yii2\oauth2server\filters\auth\CompositeAuth::className(),
'authMethods' => [
['class' => \filsh\yii2\oauth2server\filters\auth\QueryParamAuth::className(), 'tokenParam' => 'access_token'],
]
],
];
}
3. 应用案例和最佳实践
应用案例
- API 认证:使用 OAuth2 保护你的 API,确保只有授权用户才能访问。
- 单点登录 (SSO):通过 OpenID Connect 实现单点登录,简化用户认证流程。
最佳实践
- 安全配置:确保
tokenAccessLifetime
设置合理,避免令牌过期时间过长。 - 日志记录:记录 OAuth2 认证和授权过程中的关键事件,便于排查问题。
4. 典型生态项目
- Yii2 框架:
yii2-oauth2-server
是基于 Yii2 框架的扩展,适用于所有 Yii2 项目。 - League OAuth2 服务器:该扩展基于
League OAuth2
服务器实现,提供了强大的 OAuth2 支持。 - OpenID Connect:支持 OpenID Connect,适用于需要单点登录和用户身份验证的场景。
通过以上步骤,你可以快速在 Yii2 项目中集成 OAuth2 认证机制,并根据实际需求进行配置和使用。