SlideShare a Scribd company logo
Instant ACLs
with Zend Framework 2

Zend Framework Day – Turin, Italy – 07/02/2014
@stefanovalle
http://www.mvlabs.it/
http://friuli.grusp.org/
AUTHENTICATION
AUTHORIZATION
5
Two step process
Two step process

WHO
WHAT
Two step process

WHO

Authentication
“a process that ensures and confirms
a user’s identity”

WHAT
Definitions from http://www.techopedia.com
Two step process

WHO
WHAT

Authentication
“a process that ensures and confirms
a user’s identity”

Authorization
“a security mechanism used to determine
user/client privileges or access levels
related to system resources”
Definitions from http://www.techopedia.com
11
In ZF2

WHO

Zend/Authentication
In ZF2

WHO

Zend/Authentication
Authenticate against:
• DB table
• LDAP
• HTTP
• And more…
In ZF2

WHAT

Zend/Permissions/Acl
Zend/Permissions/Rbac
In ZF2

WHAT

Zend/Permissions/Acl
Zend/Permissions/Rbac

Role

Permission

Identity
Resource
SEEMS TOUGH…
JUST AS IT SHOULD!
CONSEQUENCES COULD BE UNDERESTIMATED
How does ZF2 help?

19
‘NUFF TALK. TIME FOR ACTION…
We need to add/edit
conferences through
a restricted area

1ST NEED
THE
ADMINISTRATOR

NEEDS TO BE
RECOGNIZED
THE
ADMINISTRATOR

NEEDS TO BE
RECOGNIZED
IDENTIFIED
HEAD TO OFFICIAL MODULES’ WEBSITE
OH, LOOK WHAT WE JUST GOT!
Installing and enabling ZfcUser
// composer.json
"require": {
"zf-commons/zfc-user-doctrine-orm": "0.1.*"
}

28
Installing and enabling ZfcUser
// composer.json
"require": {
"zf-commons/zfc-user-doctrine-orm": "0.1.*"
}

let’s suppose we use the Doctrine ORM

29
Installing and enabling ZfcUser
// composer.json
"require": {
"zf-commons/zfc-user-doctrine-orm": "0.1.*"
}

// config/application.config.php
<?php
return array(
'modules' => array(
// ...
'ZfcBase',
'ZfcUser',
'ZfcUserDoctrineORM',
),
);
30
Back to our user…

31
How shall we represent him?
We need a class
class Systemuser {
private $id;
private $name;
private $city;
private $birthday;
private $username;

private $password;
}
With some mandatory fields
class Systemuser {
private $id;
private $name;
private $city;
private $birthday;
private $username;

private $password;
}
Implementing an interface
class Systemuser
implements
ZfcUserEntityUserInterface {
private $id;
private $name;
private $city;
private $birthday;

private $username;
private $password;
}
Let’s configure ZfcUser
// config/autoload/zfcuser.global.php
/** ZfcUser Configuration */
$settings = array(
/** User Model Entity Class */
'user_entity_class' => 'ApplicationEntitySystemuser',

/** Start configuration for ZfcUserDoctrineORM */
'enable_default_entities' => false,

);

36
Yay, here’s our working login form!

37
Yay, here’s our working login form!

Available at:
http://myaddress/user/login

38
Yay, it works!

39
ZfcUser also allows to:
•
•

•
•

•

40

Customize login form
Customize User entity fields
Quickly implement a registration form
Interact with either Zend/DB or Doctrine
out of the box
Do much more stuff…
ZfcUser also allows to:
•
•

•
•

•

41

Customize login form
Customize User entity fields
Quickly implement a registration form
Interact with either Zend/DB or Doctrine
out of the box
Do much more stuff…
Remember the two steps?

WHO
WHAT
Remember the two steps?

WHO
WHAT
We need an admin panel!

44
We need an admin panel!

Welcome ZfcAdmin!
provides a ready to use /admin route

45
hubme.in has an admin panel!
hubme.in has an admin panel!
Are we done yet?

48
What if
a malicious user…
What if
a malicious user…
What if
a malicious user…
…hits this url:
http://myawesomewebsite/admin/conferences
What if
a malicious user…
…hits this url:
http://myawesomewebsite/admin/conferences

accessible to everyone!
What if
a malicious user…
…hits this url:
http://myawesomewebsite/admin/conferences

nothing’s protecting
our private area
What if
a malicious user…
…hits this url:
http://myawesomewebsite/admin/conferences

nothing’s protecting
our private area

Login form could be
bypassed!
No worries!
/*
* On each action
*/

<?php
public function indexAction() {
if (!$this->zfcUserAuthentication()->hasIdentity())
{
return $this->redirect()->toRoute('home');
}
}

55
No worries!
/*
* On each action
*/

<?php
public function indexAction() {
if (!$this->zfcUserAuthentication()->hasIdentity())
{
return $this->redirect()->toRoute('home');
}
}

56

in EACH action
of EACH controller
WHAAAT?
IN EACH ACTION???
SOMEONE HELP US!
ZENDPERMISSIONSACL
Remember? There were two steps…

WHO
WHAT
Using Zend/Permissions/Acl
<?php
use ZendPermissionsAclAcl;
use ZendPermissionsAclRoleGenericRole as Role;
use ZendPermissionsAclResourceGenericResource as Resource;
$acl = new Acl();
$acl->addRole(new Role('guest'))
->addRole(new Role('admin'));

$acl->addResource(new
$acl->addResource(new
$acl->addResource(new
$acl->addResource(new

$acl->allow('guest',
$acl->allow('admin',
$acl->allow('admin',
$acl->allow('admin',

62

Resource('someResource'));
Resource('adminarea'));
Resource('adminconferencearea'));
Resource('adminsettingsarea'));

'someResource');
'adminarea');
'adminconferencearea ');
'adminsettingsarea ');
Welcome BjyAuthorize!
… a facade for ZendPermissionsAcl
that will ease its usage with modules
and applications …

From https://github.com/bjyoungblood/BjyAuthorize
63
Welcome BjyAuthorize!
… a facade for ZendPermissionsAcl
that will ease its usage with modules
and applications …

From https://github.com/bjyoungblood/BjyAuthorize
64
OUR EASIER WAY
How does it work?

66
Standard ZendMvc app workflow

From https://github.com/bjyoungblood/BjyAuthorize
67
With BjyAuthorize enabled

From https://github.com/bjyoungblood/BjyAuthorize
68
With BjyAuthorize enabled

From https://github.com/bjyoungblood/BjyAuthorize
69
With BjyAuthorize enabled

From https://github.com/bjyoungblood/BjyAuthorize
70
With BjyAuthorize enabled

+ control over resources

From https://github.com/bjyoungblood/BjyAuthorize
71
Installing and enabling BjyAuthorize
// composer.json
"require": {
"bjyoungblood/bjy-authorize": "1.4.*"
}

// config/application.config.php
<?php
return array(
'modules' => array(
// ...
'BjyAuthorize',
),
);

72
Configuring BjyAuthorize
// config/autoload/bjyauthorize.global
return array(

'bjyauthorize' => array(
'default_role' => 'guest',
'identity_provider' =>
'BjyAuthorizeProviderIdentityAuthenticationIdentityProvider',
'role_providers' => array(
'BjyAuthorizeProviderRoleConfig' => array(
'guest' => array(),
'admin' => array(),
),
),
), );

73
Configuring BjyAuthorize
// config/autoload/bjyauthorize.global
return array(

'bjyauthorize' => array(

A new concept: the Role

'default_role' => 'guest',
'identity_provider' =>
'BjyAuthorizeProviderIdentityAuthenticationIdentityProvider',
'role_providers' => array(
'BjyAuthorizeProviderRoleConfig' => array(
'guest' => array(),
'admin' => array(),
),
),
), );

74
Guards on routes
http://myawesomewebsite/
Allowed to all users

75
Guards on routes
http://myawesomewebsite/
Allowed to all users

http://myawesomewebsite/admin/...
Restricted area! For admins only

76
Guards on controller actions
class ConferencesController {
public function listAction() {
// code...
}

public function manageAction() {
// code...
}

}

77
Guards on controller actions
class ConferencesController {
public function listAction() {
// code...
}
Allowed

public function manageAction() {
// code...
}

}

78

to all users
Guards on controller actions
class ConferencesController {
public function listAction() {
// code...
}
Allowed

to all users

public function manageAction() {
// code...
}

}

79

Restricted area! For admins only
Guards on controller actions
array(
'controller' => 'ZfcAdminControllerAdminController',
'roles' => array('admin')
)

80
Where should
guards be placed?

81
Inside each module configuration
// module/Conferences/config/module.config.php
return array(
'bjyauthorize' => array(
'guards' => array(

'BjyAuthorizeGuardController' => array(
//...
),
), ),

82
Inside each module configuration
// module/Conferences/config/module.config.php
return array(
'bjyauthorize' => array(

Taking advantage of ZF2
configuration merge
'BjyAuthorizeGuardController' => array(

'guards' => array(

//...
),
), ),

83
It works!
It works!

User could be redirected
to whatever url we want
Dude, forgot to tell
ya! …we got 2
fellas!

2ND NEED
Two different roles

The reader
87
Two different roles

The reader
88
Two different roles

The reader
89

The editor
Two different roles
Can only view
conference info

The reader
90

Can view
conferences +
create, edit and
delete info

The editor
What we want

Only editor should
see these icons
Until now…
'bjyauthorize' => array(
// ...
'role_providers' => array(
'BjyAuthorizeProviderRoleConfig' => array(
'guest' => array(),
'admin' => array(),
),
),

)

Static role list

93
Until now…
'bjyauthorize' => array(
// ...
'role_providers' => array(
'BjyAuthorizeProviderRoleConfig' => array(
'guest' => array(),
'admin' => array(),
),
),

)

More flexibility wouldn’t hurt…

94
BjyAuthorize config changes
// config/autoload/bjyauthorize.global
return array(

'bjyauthorize' => array(
'role_providers' => array(
'BjyAuthorizeProviderRoleObjectRepositoryProvider' => array(
'role_entity_class' => 'ApplicationEntityRole',
'object_manager' => 'doctrine.entity_manager.orm_default', ),
),

), );

From array to class (persisted on db)
95
Let’s map the actions
New concept: the Resource
something
something
upon which
someone
something
upon which
someone
could perform
an action
ENTITY

IDENTITY / ROLE

PRIVILEGE
On BjyAuthorize…
'resource_providers' => array(
'BjyAuthorizeProviderResourceConfig' => array(
'Conference' => array(),
),
),
'rule_providers' => array(
'BjyAuthorizeProviderRuleConfig' => array(
'allow' => array(
// allow editors to edit conferences
array(array('editor'), 'Conference', array('edit')),
),
),

102
On views…
//Conferences/view/…/index.phtml
<?php if ($this->isAllowed($event, 'edit')) { ?>
<a href="someurl">Remove</a><br />
<a href="someurl">Edit</a>
<?php } ?>

103
Views, routes and
controllers are safe

104
Views, routes and
controllers are safe
Is this enough?
105
Another controller, another action
//Conferences/Controller/AnotherAdminController.php
class AnotherAdminController extends AbstractActionController {

public function someCrazyAction() {
//...

$this->conferenceService->updateConference($myConference);
}
}

What prevents this?

106
107

SERVICE

CONTROLLER

ROUTE

Choose your protection level
Conference service
//Conferences/Service/ConferenceService.php
namespace ConferencesService;

class ConferenceService {
public function getConference($id) { ... }
public function getConferenceList($someCriteria) { ... }
public function updateConference($myConf) { ... }
public function deleteConference($myConf) { ... }
}

108
Conference service
//Conferences/Service/ConferenceService.php
namespace ConferencesService;

class ConferenceService {
public function getConference($id) { ... }
public function getConferenceList($someCriteria) { ... }
public function updateConference($myConf) { ... }
public function deleteConference($myConf) { ... }
}

Only to allowed users!

109
Let’s inject the Authorize class
//Conferences/Service/ConferenceServiceFactory.php
namespace ConferencesService;

class ConferenceServiceFactory implements FactoryInterface {
public function createService(ServiceLocatorInterface $serviceLocator)
{
//...
$authorize = $serviceLocator->get('BjyAuthorizeServiceAuthorize');
return new ConferenceService(..., $authorize);

}
}

110
Updated conference service
//Conferences/Service/ConferenceService.php
namespace ConferencesService;

class ConferenceService {
//...
public function updateConference($myConf) {
if (!$this->authorize->isAllowed($myConf, 'edit')) {
throw new UnAuthorizedException();
}
// other code...
} // the same for deleteConference method }

111
112

SERVICE

CONTROLLER

ROUTE

Now our service is secured
We’ll outsource the
management of
foreign conferences

3RD NEED
Based on their country
How database changes
class Systemuser {
//...

private $country;
}

class Conference {
//...
private $country;
}

116
Create an Assertion
use ZendPermissionsAclAssertionAssertionInterface;
class CheckUserCountry implements AssertionInterface {

// ...
public function assert(Acl $acl,
RoleInterface $role = null,
ResourceInterface $resource = null,
$privilege = null) {
// ...

}
}

117
Create an Assertion
use ZendPermissionsAclAssertionAssertionInterface;
class CheckUserCountry implements AssertionInterface {

// ...
public function assert(Acl $acl,
RoleInterface $role = null,
ResourceInterface $resource = null,
$privilege = null) {
return $resource->getCountry() ==
$this->loggedUser->getCountry();
}
}

118
Create an Assertion
use ZendPermissionsAclAssertionAssertionInterface;
class CheckUserCountry implements AssertionInterface {

// ...

Injected through constructor

public function assert(Acl $acl,
RoleInterface $role = null,
ResourceInterface $resource = null,
$privilege = null) {
return $resource->getCountry() ==
$this->loggedUser->getCountry();
}
}

119
Create an Assertion
use ZendPermissionsAclAssertionAssertionInterface;
class CheckUserCountry implements AssertionInterface {

// ...
public function assert(Acl $acl,
RoleInterface $role = null,
ResourceInterface $resource = null,
$privilege = null) {
return $resource->getCountry() ==
$this->loggedUser->getCountry();
}
}

120

1 LoC… AWESOME!!
Update rule with the new assertion
'rule_providers' => array(
'BjyAuthorizeProviderRuleConfig' => array(
'allow' => array(
// role check through assertion
array(array('editor'),
'Conference',
array('edit'),
'assertion.CheckUserCountry'),
),
),

121
The reader

122
The reader

The editor

123
In the same way we could:
•

•

•

124

Restrict access to user owned
onferences only
or conferences owned by a group the
user is belonging to
…and much more!
Cool. How'bout the
admin menu
though?

4TH NEED
Navigation menu

126
Configure Zend/Navigation
// module/Conferences/config/module.config.php
return array(

'navigation' => array(
'admin' => array(
'conferences' => array(
'label' => 'Conferences',
'route' => 'zfcadmin/conferences',
'resource' => 'Conference',
'privilege' => 'view',
),
),
),
), );

127
Configure Zend/Navigation
// module/Settings/config/module.config.php
return array(

'navigation' => array(
'admin' => array(
'settings' => array(
'label' => 'Settings',
'route' => 'zfcadmin/settings',
'resource' => 'Setting',
'privilege' => 'view',
),
),
),
), );

128
How menu looks like for admins
How menu looks like for other users
FINAL NOTES
PLUGGABLE COMPONENTS
PLUGGABLE COMPONENTS

CLEAN ARCHITECTURE
PLUGGABLE COMPONENTS

CLEAN ARCHITECTURE

COMPLEX ACL LOGIC IN A FEW MINUTES
Thank you for your attention!

Stefano Valle
@stefanovalle
s.valle@mvassociati.it
Questions?

Stefano Valle
@stefanovalle
s.valle@mvassociati.it
Photo Credits
From Flickr:
http://www.flickr.com/photos/cbpphotos/8652042987
http://www.flickr.com/photos/disa4ever/9409743179
http://www.flickr.com/photos/ben_salter/6169305845
http://www.flickr.com/photos/elzey/3481161467
http://www.flickr.com/photos/morris278/8022505933
A-Team members’ photos:
http://5gta.com/gta-5-info/gta-5-the-a-team-similarities.html/
http://www.legendarytv.com/the_a-team/the_a-team_lance_legault.asp
http://www.fanpop.com/clubs/the-a-team/images
http://dwightschultz.freeforums.org/dwight-photo-s-t8.html
http://docmanhattan.blogspot.it/2010/10/vita-mort-immortalita-e-miracoli-di-mr.html
http://www.starsky-iom.com/forum/viewtopic.php?f=8&t=58
http://www.thea-teamonline.com/
And others form iStockPhoto

137

More Related Content

What's hot

Implementing security routines with zf2
Implementing security routines with zf2Implementing security routines with zf2
Implementing security routines with zf2
Er Galvão Abbott
 
Intro to Angular.js & Zend2 for Front-End Web Applications
Intro to Angular.js & Zend2  for Front-End Web ApplicationsIntro to Angular.js & Zend2  for Front-End Web Applications
Intro to Angular.js & Zend2 for Front-End Web Applications
TECKpert, Hubdin
 
2020-02-20 - HashiCorpUserGroup Madring - Integrating HashiCorp Vault and Kub...
2020-02-20 - HashiCorpUserGroup Madring - Integrating HashiCorp Vault and Kub...2020-02-20 - HashiCorpUserGroup Madring - Integrating HashiCorp Vault and Kub...
2020-02-20 - HashiCorpUserGroup Madring - Integrating HashiCorp Vault and Kub...
Andrey Devyatkin
 
Dependency Injection in PHP - dwx13
Dependency Injection in PHP - dwx13Dependency Injection in PHP - dwx13
Dependency Injection in PHP - dwx13Stephan Hochdörfer
 
Real World Dependency Injection - phpugffm13
Real World Dependency Injection - phpugffm13Real World Dependency Injection - phpugffm13
Real World Dependency Injection - phpugffm13Stephan Hochdörfer
 
Real World Dependency Injection SE - phpugrhh
Real World Dependency Injection SE - phpugrhhReal World Dependency Injection SE - phpugrhh
Real World Dependency Injection SE - phpugrhhStephan Hochdörfer
 
Real World Dependency Injection - PFCongres 2010
Real World Dependency Injection - PFCongres 2010Real World Dependency Injection - PFCongres 2010
Real World Dependency Injection - PFCongres 2010Stephan Hochdörfer
 
Testing untestable code - oscon 2012
Testing untestable code - oscon 2012Testing untestable code - oscon 2012
Testing untestable code - oscon 2012Stephan Hochdörfer
 
php-and-zend-framework-getting-started
php-and-zend-framework-getting-startedphp-and-zend-framework-getting-started
php-and-zend-framework-getting-startedtutorialsruby
 
Intro to Pentesting Jenkins
Intro to Pentesting JenkinsIntro to Pentesting Jenkins
Intro to Pentesting Jenkins
Brian Hysell
 
The Play Framework at LinkedIn
The Play Framework at LinkedInThe Play Framework at LinkedIn
The Play Framework at LinkedIn
Yevgeniy Brikman
 
Kandroid for nhn_deview_20131013_v5_final
Kandroid for nhn_deview_20131013_v5_finalKandroid for nhn_deview_20131013_v5_final
Kandroid for nhn_deview_20131013_v5_finalNAVER D2
 
Pentesting Modern Web Apps: A Primer
Pentesting Modern Web Apps: A PrimerPentesting Modern Web Apps: A Primer
Pentesting Modern Web Apps: A Primer
Brian Hysell
 
20120722 word press
20120722 word press20120722 word press
20120722 word pressSeungmin Sun
 
Browser Serving Your We Application Security - ZendCon 2017
Browser Serving Your We Application Security - ZendCon 2017Browser Serving Your We Application Security - ZendCon 2017
Browser Serving Your We Application Security - ZendCon 2017
Philippe Gamache
 
Make your application expressive
Make your application expressiveMake your application expressive
Make your application expressive
Christian Varela
 

What's hot (17)

Implementing security routines with zf2
Implementing security routines with zf2Implementing security routines with zf2
Implementing security routines with zf2
 
Intro to Angular.js & Zend2 for Front-End Web Applications
Intro to Angular.js & Zend2  for Front-End Web ApplicationsIntro to Angular.js & Zend2  for Front-End Web Applications
Intro to Angular.js & Zend2 for Front-End Web Applications
 
2020-02-20 - HashiCorpUserGroup Madring - Integrating HashiCorp Vault and Kub...
2020-02-20 - HashiCorpUserGroup Madring - Integrating HashiCorp Vault and Kub...2020-02-20 - HashiCorpUserGroup Madring - Integrating HashiCorp Vault and Kub...
2020-02-20 - HashiCorpUserGroup Madring - Integrating HashiCorp Vault and Kub...
 
Dependency Injection in PHP - dwx13
Dependency Injection in PHP - dwx13Dependency Injection in PHP - dwx13
Dependency Injection in PHP - dwx13
 
Real World Dependency Injection - phpugffm13
Real World Dependency Injection - phpugffm13Real World Dependency Injection - phpugffm13
Real World Dependency Injection - phpugffm13
 
Real World Dependency Injection SE - phpugrhh
Real World Dependency Injection SE - phpugrhhReal World Dependency Injection SE - phpugrhh
Real World Dependency Injection SE - phpugrhh
 
Real World Dependency Injection - PFCongres 2010
Real World Dependency Injection - PFCongres 2010Real World Dependency Injection - PFCongres 2010
Real World Dependency Injection - PFCongres 2010
 
Testing untestable code - oscon 2012
Testing untestable code - oscon 2012Testing untestable code - oscon 2012
Testing untestable code - oscon 2012
 
php-and-zend-framework-getting-started
php-and-zend-framework-getting-startedphp-and-zend-framework-getting-started
php-and-zend-framework-getting-started
 
Intro to Pentesting Jenkins
Intro to Pentesting JenkinsIntro to Pentesting Jenkins
Intro to Pentesting Jenkins
 
The Play Framework at LinkedIn
The Play Framework at LinkedInThe Play Framework at LinkedIn
The Play Framework at LinkedIn
 
Kandroid for nhn_deview_20131013_v5_final
Kandroid for nhn_deview_20131013_v5_finalKandroid for nhn_deview_20131013_v5_final
Kandroid for nhn_deview_20131013_v5_final
 
Pentesting Modern Web Apps: A Primer
Pentesting Modern Web Apps: A PrimerPentesting Modern Web Apps: A Primer
Pentesting Modern Web Apps: A Primer
 
20120722 word press
20120722 word press20120722 word press
20120722 word press
 
Browser Serving Your We Application Security - ZendCon 2017
Browser Serving Your We Application Security - ZendCon 2017Browser Serving Your We Application Security - ZendCon 2017
Browser Serving Your We Application Security - ZendCon 2017
 
Make your application expressive
Make your application expressiveMake your application expressive
Make your application expressive
 
intellimeet
intellimeetintellimeet
intellimeet
 

Viewers also liked

Zend Framework 2 : Dependency Injection
Zend Framework 2 : Dependency InjectionZend Framework 2 : Dependency Injection
Zend Framework 2 : Dependency Injection
Abdul Malik Ikhsan
 
A SOA approximation on symfony
A SOA approximation on symfonyA SOA approximation on symfony
A SOA approximation on symfony
Joseluis Laso
 
PHP is the King, nodejs the prince and python the fool
PHP is the King, nodejs the prince and python the foolPHP is the King, nodejs the prince and python the fool
PHP is the King, nodejs the prince and python the fool
Alessandro Cinelli (cirpo)
 
Implementing access control with zend framework
Implementing access control with zend frameworkImplementing access control with zend framework
Implementing access control with zend framework
George Mihailov
 
Zend Framework 2 - PHPUnit
Zend Framework 2 - PHPUnitZend Framework 2 - PHPUnit
Zend Framework 2 - PHPUnit
Tarun Kumar Singhal
 
Error Reporting in ZF2: form messages, custom error pages, logging
Error Reporting in ZF2: form messages, custom error pages, loggingError Reporting in ZF2: form messages, custom error pages, logging
Error Reporting in ZF2: form messages, custom error pages, logging
Steve Maraspin
 
Scaling Symfony2 apps with RabbitMQ - Symfony UK Meetup
Scaling Symfony2 apps with RabbitMQ - Symfony UK MeetupScaling Symfony2 apps with RabbitMQ - Symfony UK Meetup
Scaling Symfony2 apps with RabbitMQ - Symfony UK Meetup
Kacper Gunia
 
Unit testing PHP apps with PHPUnit
Unit testing PHP apps with PHPUnitUnit testing PHP apps with PHPUnit
Unit testing PHP apps with PHPUnit
Michelangelo van Dam
 
Into the ZF2 Service Manager
Into the ZF2 Service ManagerInto the ZF2 Service Manager
Into the ZF2 Service Manager
Chris Tankersley
 
PHPUnit best practices presentation
PHPUnit best practices presentationPHPUnit best practices presentation
PHPUnit best practices presentation
Thanh Robi
 
Clean Unit Test Patterns
Clean Unit Test PatternsClean Unit Test Patterns
Clean Unit Test Patterns
Frank Appel
 
Creating fast, dynamic ACLs in Zend Framework (Zend Webinar)
Creating fast, dynamic ACLs in Zend Framework (Zend Webinar)Creating fast, dynamic ACLs in Zend Framework (Zend Webinar)
Creating fast, dynamic ACLs in Zend Framework (Zend Webinar)
Wim Godden
 
Understanding Unit Testing
Understanding Unit TestingUnderstanding Unit Testing
Understanding Unit Testing
ikhwanhayat
 
Introduction to Unit Testing with PHPUnit
Introduction to Unit Testing with PHPUnitIntroduction to Unit Testing with PHPUnit
Introduction to Unit Testing with PHPUnit
Michelangelo van Dam
 
Unit Testing Concepts and Best Practices
Unit Testing Concepts and Best PracticesUnit Testing Concepts and Best Practices
Unit Testing Concepts and Best Practices
Derek Smith
 

Viewers also liked (15)

Zend Framework 2 : Dependency Injection
Zend Framework 2 : Dependency InjectionZend Framework 2 : Dependency Injection
Zend Framework 2 : Dependency Injection
 
A SOA approximation on symfony
A SOA approximation on symfonyA SOA approximation on symfony
A SOA approximation on symfony
 
PHP is the King, nodejs the prince and python the fool
PHP is the King, nodejs the prince and python the foolPHP is the King, nodejs the prince and python the fool
PHP is the King, nodejs the prince and python the fool
 
Implementing access control with zend framework
Implementing access control with zend frameworkImplementing access control with zend framework
Implementing access control with zend framework
 
Zend Framework 2 - PHPUnit
Zend Framework 2 - PHPUnitZend Framework 2 - PHPUnit
Zend Framework 2 - PHPUnit
 
Error Reporting in ZF2: form messages, custom error pages, logging
Error Reporting in ZF2: form messages, custom error pages, loggingError Reporting in ZF2: form messages, custom error pages, logging
Error Reporting in ZF2: form messages, custom error pages, logging
 
Scaling Symfony2 apps with RabbitMQ - Symfony UK Meetup
Scaling Symfony2 apps with RabbitMQ - Symfony UK MeetupScaling Symfony2 apps with RabbitMQ - Symfony UK Meetup
Scaling Symfony2 apps with RabbitMQ - Symfony UK Meetup
 
Unit testing PHP apps with PHPUnit
Unit testing PHP apps with PHPUnitUnit testing PHP apps with PHPUnit
Unit testing PHP apps with PHPUnit
 
Into the ZF2 Service Manager
Into the ZF2 Service ManagerInto the ZF2 Service Manager
Into the ZF2 Service Manager
 
PHPUnit best practices presentation
PHPUnit best practices presentationPHPUnit best practices presentation
PHPUnit best practices presentation
 
Clean Unit Test Patterns
Clean Unit Test PatternsClean Unit Test Patterns
Clean Unit Test Patterns
 
Creating fast, dynamic ACLs in Zend Framework (Zend Webinar)
Creating fast, dynamic ACLs in Zend Framework (Zend Webinar)Creating fast, dynamic ACLs in Zend Framework (Zend Webinar)
Creating fast, dynamic ACLs in Zend Framework (Zend Webinar)
 
Understanding Unit Testing
Understanding Unit TestingUnderstanding Unit Testing
Understanding Unit Testing
 
Introduction to Unit Testing with PHPUnit
Introduction to Unit Testing with PHPUnitIntroduction to Unit Testing with PHPUnit
Introduction to Unit Testing with PHPUnit
 
Unit Testing Concepts and Best Practices
Unit Testing Concepts and Best PracticesUnit Testing Concepts and Best Practices
Unit Testing Concepts and Best Practices
 

Similar to Instant ACLs with Zend Framework 2

Web Application Firewall: Suckseed or Succeed
Web Application Firewall: Suckseed or SucceedWeb Application Firewall: Suckseed or Succeed
Web Application Firewall: Suckseed or Succeed
Prathan Phongthiproek
 
Free tools for win server administration
Free tools for win server administrationFree tools for win server administration
Free tools for win server administrationConcentrated Technology
 
The Veil-Framework
The Veil-FrameworkThe Veil-Framework
The Veil-Framework
VeilFramework
 
FIWARE Wednesday Webinars - How to Secure IoT Devices
FIWARE Wednesday Webinars - How to Secure IoT DevicesFIWARE Wednesday Webinars - How to Secure IoT Devices
FIWARE Wednesday Webinars - How to Secure IoT Devices
FIWARE
 
Attack Chaining: Advanced Maneuvers for Hack Fu
Attack Chaining: Advanced Maneuvers for Hack FuAttack Chaining: Advanced Maneuvers for Hack Fu
Attack Chaining: Advanced Maneuvers for Hack Fu
Rob Ragan
 
Introduction to CodeIgniter
Introduction to CodeIgniterIntroduction to CodeIgniter
Introduction to CodeIgniter
Piti Suwannakom
 
Building Mobile Friendly APIs in Rails
Building Mobile Friendly APIs in RailsBuilding Mobile Friendly APIs in Rails
Building Mobile Friendly APIs in Rails
Jim Jeffers
 
Null bhopal Sep 2016: What it Takes to Secure a Web Application
Null bhopal Sep 2016: What it Takes to Secure a Web ApplicationNull bhopal Sep 2016: What it Takes to Secure a Web Application
Null bhopal Sep 2016: What it Takes to Secure a Web Application
Anant Shrivastava
 
Not a Security Boundary: Bypassing User Account Control
Not a Security Boundary: Bypassing User Account ControlNot a Security Boundary: Bypassing User Account Control
Not a Security Boundary: Bypassing User Account Control
enigma0x3
 
Beware the potholes on the road to serverless
Beware the potholes on the road to serverlessBeware the potholes on the road to serverless
Beware the potholes on the road to serverless
Yan Cui
 
Art of Web Backdoor - Pichaya Morimoto
Art of Web Backdoor - Pichaya MorimotoArt of Web Backdoor - Pichaya Morimoto
Art of Web Backdoor - Pichaya Morimoto
Pichaya Morimoto
 
Building Better Backdoors with WMI - DerbyCon 2017
Building Better Backdoors with WMI - DerbyCon 2017Building Better Backdoors with WMI - DerbyCon 2017
Building Better Backdoors with WMI - DerbyCon 2017
Alexander Polce Leary
 
Kioptrix 2014 5
Kioptrix 2014 5Kioptrix 2014 5
Kioptrix 2014 5
Jayesh Patel
 
Is your code ready for PHP 7 ?
Is your code ready for PHP 7 ?Is your code ready for PHP 7 ?
Is your code ready for PHP 7 ?
Wim Godden
 
Review unknown code with static analysis - bredaphp
Review unknown code with static analysis - bredaphpReview unknown code with static analysis - bredaphp
Review unknown code with static analysis - bredaphp
Damien Seguy
 
Nested virtualization & PCI pass-through
Nested virtualization & PCI pass-throughNested virtualization & PCI pass-through
Nested virtualization & PCI pass-through
OpenNebula Project
 
Drupal campleuven: Secure Drupal Development
Drupal campleuven: Secure Drupal DevelopmentDrupal campleuven: Secure Drupal Development
Drupal campleuven: Secure Drupal Development
Steven Van den Hout
 
Operating Docker
Operating DockerOperating Docker
Operating Docker
Jen Andre
 

Similar to Instant ACLs with Zend Framework 2 (20)

Web Application Firewall: Suckseed or Succeed
Web Application Firewall: Suckseed or SucceedWeb Application Firewall: Suckseed or Succeed
Web Application Firewall: Suckseed or Succeed
 
Free tools for win server administration
Free tools for win server administrationFree tools for win server administration
Free tools for win server administration
 
The Veil-Framework
The Veil-FrameworkThe Veil-Framework
The Veil-Framework
 
FIWARE Wednesday Webinars - How to Secure IoT Devices
FIWARE Wednesday Webinars - How to Secure IoT DevicesFIWARE Wednesday Webinars - How to Secure IoT Devices
FIWARE Wednesday Webinars - How to Secure IoT Devices
 
Best free tools for win database admin
Best free tools for win database adminBest free tools for win database admin
Best free tools for win database admin
 
Best free tools for w d a
Best free tools for w d aBest free tools for w d a
Best free tools for w d a
 
Attack Chaining: Advanced Maneuvers for Hack Fu
Attack Chaining: Advanced Maneuvers for Hack FuAttack Chaining: Advanced Maneuvers for Hack Fu
Attack Chaining: Advanced Maneuvers for Hack Fu
 
Introduction to CodeIgniter
Introduction to CodeIgniterIntroduction to CodeIgniter
Introduction to CodeIgniter
 
Building Mobile Friendly APIs in Rails
Building Mobile Friendly APIs in RailsBuilding Mobile Friendly APIs in Rails
Building Mobile Friendly APIs in Rails
 
Null bhopal Sep 2016: What it Takes to Secure a Web Application
Null bhopal Sep 2016: What it Takes to Secure a Web ApplicationNull bhopal Sep 2016: What it Takes to Secure a Web Application
Null bhopal Sep 2016: What it Takes to Secure a Web Application
 
Not a Security Boundary: Bypassing User Account Control
Not a Security Boundary: Bypassing User Account ControlNot a Security Boundary: Bypassing User Account Control
Not a Security Boundary: Bypassing User Account Control
 
Beware the potholes on the road to serverless
Beware the potholes on the road to serverlessBeware the potholes on the road to serverless
Beware the potholes on the road to serverless
 
Art of Web Backdoor - Pichaya Morimoto
Art of Web Backdoor - Pichaya MorimotoArt of Web Backdoor - Pichaya Morimoto
Art of Web Backdoor - Pichaya Morimoto
 
Building Better Backdoors with WMI - DerbyCon 2017
Building Better Backdoors with WMI - DerbyCon 2017Building Better Backdoors with WMI - DerbyCon 2017
Building Better Backdoors with WMI - DerbyCon 2017
 
Kioptrix 2014 5
Kioptrix 2014 5Kioptrix 2014 5
Kioptrix 2014 5
 
Is your code ready for PHP 7 ?
Is your code ready for PHP 7 ?Is your code ready for PHP 7 ?
Is your code ready for PHP 7 ?
 
Review unknown code with static analysis - bredaphp
Review unknown code with static analysis - bredaphpReview unknown code with static analysis - bredaphp
Review unknown code with static analysis - bredaphp
 
Nested virtualization & PCI pass-through
Nested virtualization & PCI pass-throughNested virtualization & PCI pass-through
Nested virtualization & PCI pass-through
 
Drupal campleuven: Secure Drupal Development
Drupal campleuven: Secure Drupal DevelopmentDrupal campleuven: Secure Drupal Development
Drupal campleuven: Secure Drupal Development
 
Operating Docker
Operating DockerOperating Docker
Operating Docker
 

More from Stefano Valle

IoT: protocolli, dispositivi, architetture
IoT: protocolli, dispositivi, architettureIoT: protocolli, dispositivi, architetture
IoT: protocolli, dispositivi, architetture
Stefano Valle
 
Protocol Rollercoaster: da HTTP a AMQP, passando per CoAP e MQTT
Protocol Rollercoaster: da HTTP a AMQP, passando per CoAP e MQTTProtocol Rollercoaster: da HTTP a AMQP, passando per CoAP e MQTT
Protocol Rollercoaster: da HTTP a AMQP, passando per CoAP e MQTT
Stefano Valle
 
NoSQL Containers get Rich
NoSQL Containers get RichNoSQL Containers get Rich
NoSQL Containers get Rich
Stefano Valle
 
Moduli su Zend Framework 2: come sfruttarli
Moduli su Zend Framework 2: come sfruttarliModuli su Zend Framework 2: come sfruttarli
Moduli su Zend Framework 2: come sfruttarli
Stefano Valle
 
Introduzione a Git
Introduzione a GitIntroduzione a Git
Introduzione a Git
Stefano Valle
 
Stime e preventivi in un contesto di sviluppo agile
Stime e preventivi in un contesto di sviluppo agileStime e preventivi in un contesto di sviluppo agile
Stime e preventivi in un contesto di sviluppo agile
Stefano Valle
 
Introduzione alle metodologie di sviluppo agile
Introduzione alle metodologie di sviluppo agileIntroduzione alle metodologie di sviluppo agile
Introduzione alle metodologie di sviluppo agile
Stefano Valle
 

More from Stefano Valle (7)

IoT: protocolli, dispositivi, architetture
IoT: protocolli, dispositivi, architettureIoT: protocolli, dispositivi, architetture
IoT: protocolli, dispositivi, architetture
 
Protocol Rollercoaster: da HTTP a AMQP, passando per CoAP e MQTT
Protocol Rollercoaster: da HTTP a AMQP, passando per CoAP e MQTTProtocol Rollercoaster: da HTTP a AMQP, passando per CoAP e MQTT
Protocol Rollercoaster: da HTTP a AMQP, passando per CoAP e MQTT
 
NoSQL Containers get Rich
NoSQL Containers get RichNoSQL Containers get Rich
NoSQL Containers get Rich
 
Moduli su Zend Framework 2: come sfruttarli
Moduli su Zend Framework 2: come sfruttarliModuli su Zend Framework 2: come sfruttarli
Moduli su Zend Framework 2: come sfruttarli
 
Introduzione a Git
Introduzione a GitIntroduzione a Git
Introduzione a Git
 
Stime e preventivi in un contesto di sviluppo agile
Stime e preventivi in un contesto di sviluppo agileStime e preventivi in un contesto di sviluppo agile
Stime e preventivi in un contesto di sviluppo agile
 
Introduzione alle metodologie di sviluppo agile
Introduzione alle metodologie di sviluppo agileIntroduzione alle metodologie di sviluppo agile
Introduzione alle metodologie di sviluppo agile
 

Recently uploaded

Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Ramesh Iyer
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Product School
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Tobias Schneck
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 

Recently uploaded (20)

Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 

Instant ACLs with Zend Framework 2