shawinigan / sso
Shawinigan SSO 工具
Requires
- php: ^7.2 || ^8.2
- ext-json: *
- laravel/framework: ^8.0|^9.0|^10.0|^11.0
- nesbot/carbon: ^2.46.0|^3.5.0
- socialiteproviders/manager: ~4.0
- spatie/laravel-permission: ^6.1
- tmilos/scim-filter-parser: ^1.3
- tmilos/scim-schema: ^0.1.0
README
- 运行
composer require shawinigan/sso将其包含到项目中。 - 运行
php artisan vendor:publish --provider="Shawinigan\Sso\LaravelAzureProvisioning\AzureProvisioningProvider"。 - 运行
php artisan vendor:publish --provider="Shawinigan\Sso\LaravelAzureSocialite\AzureSocialiteServiceProvider"。 - 运行
npm install - 运行
npm run build - 运行
npm run dev - 运行
php artisan migrate
配置 (Laravel)
-
打开
config/azureprovisioning.php调整包的配置如果文件不存在,请确保您已运行
php artisan vendor:publish --provider="Shawinigan\Sso\LaravelAzureProvisioning\AzureProvisioningProvider"。 -
根据需要修改配置。所有字段都已注释,并应提供足够的说明,说明它们如何改变此包的工作方式。
-
如果您不想配置组,可以完全删除(或注释)
Groups键。 -
打开
config/shawi-sso.php调整包的配置 -
在
config/services.php中添加配置
'azure' => [ 'client_id' => env('AZURE_CLIENT_ID'), 'client_secret' => env('AZURE_CLIENT_SECRET'), 'redirect' => env('AZURE_REDIRECT_URI'), 'tenant' => env('AZURE_TENANT_ID'), 'proxy' => env('PROXY') // optionally ],
配置包的监听器以监听 SocialiteWasCalled 事件。
将事件添加到 app/Providers/EventServiceProvider 中的 listen[] 数组。请参阅基本安装指南以获取详细说明。
protected $listen = [ \SocialiteProviders\Manager\SocialiteWasCalled::class => [ \Shawinigan\Sso\LaravelAzureSocialite\AzureExtendSocialite::class.'@handle', ], ];
- ### 将 AzureUser 特性添加到用户模型
use Shawinigan\Sso\LaravelAzureSocialite\Traits\AzureUser; class User extends Authenticatable { use HasApiTokens, HasFactory, Notifiable, HasRoles, AzureUser; 7. ### Add fillable and hidden to user model ```php protected $fillable = [ 'name', 'email', 'password', 'azure_auth_id', 'azure_access_token', 'azure_refresh_token', 'username', 'avatar', 'azure_expires_timestamp' ]; protected $hidden = [ 'password', 'remember_token', 'azure_auth_id', 'azure_access_token', 'azure_refresh_token', 'azure_expires_timestamp' ];
配置 (Azure)
-
登录到 Azure Active Directory
-
选择 所有服务 > 企业应用程序
-
选择 新建应用程序
-
选择 创建自己的应用程序
-
提供您的应用程序名称,并选择选项 "集成您在图库中找不到的任何其他应用程序(非图库)"
-
A) 配置所有用户/组
- 在属性页面上,确保选项 "用户分配是否需要?" 设置为 否
--OR--
-
B) 配置选定用户/组
- 在属性页面上,确保选项 "用户分配是否需要?" 设置为 是
- 在用户和组页面上,添加您希望配置的用户和组
-
导航到配置页
-
将配置模式设置为 自动
-
在管理员凭据部分设置租户 URL 为您的域名(带有 https://)后跟
/scim/v2.0/(或您在routePrefix配置选项中设置的值)。例如https://laravel-azure-provisioning.com/scim/v2.0/ -
TODO: 提供由 ... 生成的密钥?
-
测试配置后保存设置
-
展开映射部分,删除应用程序不需要的任何映射,并添加应用程序缺少且必需的映射。
-
再次保存设置
注意:如果您只想配置设置组内的用户,请按照 6 B) 中的步骤操作,并添加您需要的组。然后,只有组成员将被配置。
此存储库基于:https://github.com/RobTrehy/LaravelAzureProvisioning https://github.com/SocialiteProviders/Microsoft-Azure