newridetech / silicon
Laravel + Keycloak 框架。
Requires
- php: ^7.1.3
- alsofronie/eloquent-uuid: ^1.0
- doctrine/dbal: ^2.7
- erusev/parsedown: ^1.7
- felixkiss/uniquewith-validator: ^3.1
- fideloper/proxy: ^4.0
- laravel/framework: 5.7.*
- laravel/tinker: ^1.0
- laravelcollective/html: ^5.6
- leafo/scssphp: ^0.7.6
- league/oauth2-client: ^2.3
- league/uri: ^5.3
- newridetech/laravel-scss: ^1.2
- newridetech/php-classnames: ^1.2
- pviojo/oauth2-keycloak: ^2.0
- watson/validating: ^3.1
- webmozart/assert: ^1.3
- webmozart/glob: ^4.1
- wikimedia/composer-merge-plugin: ^1.4
Requires (Dev)
- filp/whoops: ^2.0
- fzaninotto/faker: ^1.4
- mockery/mockery: ^1.0
- nunomaduro/collision: ^2.0
- phpunit/phpunit: ^7.0
This package is not auto-updated.
Last update: 2021-02-06 09:58:34 UTC
README
在法规日益增多、隐私意识和安全限制不断加强的时代,我们认为引入新的、负责任的方法来处理敏感数据,并开发定制解决方案是一个好时机。我们的目标是处理良好的安全和隐私管理实践,并以一种使应用程序开发和维护更加简单而不是更加困难或复杂的方式进行。
Silicon 可以被视为 Laravel 和 Keycloak 之间的粘合层。这些技术相结合提供了处理应用程序安全、身份管理和开发便利性的所有必要方面。开发新功能和维护应用程序非常简单,Silicon 很可能提高您的性能,但它并不针对所有人,尤其是编程新手。
Silicon 并不重新发明概念,它只是站在巨人的肩膀上。它提供的是关注点的分离和模块化 Laravel 代码的划分,其中包括通过设计包含安全性和身份管理概念。将 Silicon 包含到现有项目中可能需要一些努力(尽管是可能的),但如果您正在考虑创建新的代码库或新的 API/网络应用程序版本,它可能是一个值得考虑的选择。
核心优势
- 符合 GDPR(以及可能的其他法规)
- 当正确使用时,通过将所有内容卸载到 Keycloak 并提供与 Laravel 辅助功能和特性的完全集成,简化了用户、角色和身份管理
- 不是重新发明轮子,它使用现有技术,并添加最小必要的代码以使它们协同工作并获得更大的好处(我们相信当结合良好解决方案时,2 + 2 = 5)
注意事项
- 需要高级/中级技能才能正确理解和使用 Silicon,尽管有指导,也可以让初级程序员开发功能
- 不能在不重构的情况下集成到现有的 Laravel 项目中(尽管可以轻松移除并留下模块化代码)
工作原理
Silicon 提供了几个内置服务,这些服务将面向安全的代码包引入到 Laravel 中。概念与 Symfony 绑定系统 类似。在 Symfony 世界中,这些被认为是遗留功能(有很好的理由),但在 Silicon 中,它们扮演着不同的角色,不仅仅是关注点的分离,因此它们仍然相关且具有创新性。
每个包(或称为硅谷世界的extensions
)除了服务提供商外,还提供了一个扩展的入口类 Newride\Silicon\bundles\extensions\Extension
。从本质上讲,包是自动注册的带有内置额外硅谷功能的Laravel 包。扩展是注册 Laravel 策略并提供简单入口以检查用户是否有足够的权限使用整个包的地方。用户不会被存储在应用程序数据库中,而是通过使用Keycloak的 OAuth 访问令牌来检索。
将不同的角色分配给每个包是良好的实践,以便轻松构建和维护模块化应用程序。例如,如果你的应用包含博客和商店,你可以有两个扩展:shop
和 blog
,以及相应的view-shop
、view-blog
角色。扩展入口点应进行一两个通用检查,以完全切断对扩展的访问。更具体的权限、访问控制列表等应移动到Laravel的安全策略。
在这种基本的代码组织结构下,你的应用程序将不会存储任何个人数据,并将分为具有多层灵活安全检查的模块。