SlideShare a Scribd company logo
1 of 84
Download to read offline
What's New in
spring-security-core 2.0
Burt Beckwith
3
le
Tex
t
Our Services
Our services start with a
foundation of planning,
interaction design, and visual
design. We are expert
builders with a passion for
protoyping, architecture and
development to help bring
your product to life.

First, what's old
Grails-y wrapper around Spring
Security
First, what's old
Many defaults, lots of
configurability – designed to be
customized and extended
First, what's old
Easy to get started – add
dependency in
BuildConfig.groovy and run
s2-quickstart
First, what's old
Helper classes
(SpringSecurityService,
taglibs, controllers, etc.)
First, what's old
Form, HTTP Basic, Digest auth
First, what's old
Users, roles, hierarchical roles,
customizable
UserDetailsService
First, what's old
Many password hashing options,
including options for salted
passwords
First, what's old
Remember-me
First, what's old
Ajax support
First, what's old
Switch-user (similar to “sudo”)
First, what's old
HTTP/HTTPS channel security
First, what's old
Session Fixation Protection
First, what's old
● Convention over configuration, with centralized configuration in grails-app/conf/Config.groovy
● Highly configurable and customizable
● Registers Spring Security beans in application context, filters in web.xml
● Storing users, roles, and optionally requestmaps in the database, with access through domain classes
● Guarding URLs with annotations, requestmap domain class, or static configuration
● Password encryption (with support for salt)
● "Remember me" cookie
● Security tags; <g:ifAllGranted/>, <g:ifNotGranted/>, <g:ifLoggedIn/>, etc.
● Security service; encodePassword(), isLoggedIn(), etc.
● Multiple authentication providers
● Form-based
● HTTP Basic
● Browser certificate (x509)
● Switch User
● Channel security
● IP address restrictions
● Ajax login
● Convenient event handlers
● Digest authentication
● Session Fixation Prevention
● Salted passwords
● Hierarchical roles
● Account locking and forcing password change
● Mostly Java for performance
● Convention over configuration, with centralized configuration in grails-app/conf/Config.groovy
● Highly configurable and customizable
● Registers Spring Security beans in application context, filters in web.xml
● Storing users, roles, and optionally requestmaps in the database, with access through domain classes
● Guarding URLs with annotations, requestmap domain class, or static configuration
● Password encryption (with support for salt)
● "Remember me" cookie
● Security tags; <g:ifAllGranted/>, <g:ifNotGranted/>, <g:ifLoggedIn/>, etc.
● Security service; encodePassword(), isLoggedIn(), etc.
● Multiple authentication providers
● Form-based
● HTTP Basic
● Browser certificate (x509)
● Switch User
● Channel security
● IP address restrictions
● Ajax login
● Convenient event handlers
● Digest authentication
● Session Fixation Prevention
● Salted passwords
● Hierarchical roles
● Account locking and forcing password change
● Mostly Java for performance
Trust me, it has a
lot of features
First, what's old
Extension plugins (ACL, CAS,
LDAP, OpenID, UI, etc.)
First, what's old
And more!
So … what's new?
See the notes in the docs:
What's New in Version 2.0
Highlights
More aggressively secure by default
Highlights
More aggressively secure by default
Pessimistic Lockdown by default, use
grails.plugin.springsecurity.rejectIfNoRule
and grails.plugin.springsecurity.fii.
rejectPublicInvocations to configure
Highlights
Pessimistic Lockdown:
grails.plugin.springsecurity.
controllerAnnotations.staticRules = [
'/': ['permitAll'],
'/index': ['permitAll'],
'/index.gsp': ['permitAll'],
'/**/js/**': ['permitAll'],
'/**/css/**': ['permitAll'],
'/**/images/**': ['permitAll'],
'/**/favicon.ico': ['permitAll']
]
Highlights
Pessimistic Lockdown:
for (String url in [
'/', '/index', '/index.gsp',
'/**/favicon.ico', '/**/js/**',
'/**/css/**', '/**/images/**',
'/login', '/login.*', '/login/*',
'/logout', '/logout.*',
'/logout/*']) {
new Requestmap(
url: url,
configAttribute: 'permitAll')
.save()
}
Highlights
Pessimistic Lockdown:
grails.plugin.springsecurity.
interceptUrlMap = [
'/': ['permitAll'],
'/index': ['permitAll'],
'/index.gsp': ['permitAll'],
'/**/js/**': ['permitAll'],
'/**/css/**': ['permitAll'],
'/**/images/**': ['permitAll'],
'/**/favicon.ico': ['permitAll'],
'/login/**': ['permitAll'],
'/logout/**': ['permitAll']
]
Highlights
More aggressively secure by default
Logout uses POST only, configure with
grails.plugin.springsecurity.logout.postOnly
Highlights
More aggressively secure by default
Default password hash is now bcrypt, and
PBKDF2 is also available
(password.algorithm = 'pbkdf2')
Highlights
More aggressively secure by default
Session Fixation Prevention is enabled by
default, configure with
grails.plugin.springsecurity.
useSessionFixationPrevention
Highlights
Using Spring Security
3.2.3.RELEASE - originally 3.1,
then 3.2.0-RC1, now 3.2.3 as of
this week
Highlights
Package changesPackage changes
Highlights
Package changes
Everything now under
grails.plugin.springsecurity
Package changes
Highlights
Package changes
Subpackages are similar to Spring
Security packages
Package changes
Highlights
Package changes
Subpackages are similar to Spring
Security packages
Package changes
e.g. GormUserDetailsService →
grails.plugin.springsecurity.userdetails.
GormUserDetailsService
Highlights
Package changes
Subpackages are similar to Spring
Security packages
Package changes
e.g. AjaxAwareAccessDeniedHandler →
grails.plugin.springsecurity.web.access.
AjaxAwareAccessDeniedHandler
Highlights
Configuration prefix changes
grails.plugins.springsecurity → grails.plugin.springsecurity
Highlights
No HQL (except in UI plugin), all
queries use “where” and Criteria
Highlights
More configurable properties in
Spring beans (goal is ~100%)
Highlights
More private → protected
Highlights
SpringSecurityService updates:
No withTransaction, using
@Transactional as needed
Highlights
SpringSecurityService updates:
getCurrentUser() uses
get(principal.id) if principal is
GrailsUser, otherwise
findWhere((usernamePropName):
principal.username)
Highlights
SpringSecurityService updates:
New loadCurrentUser() method
class SomeController {
def springSecurityService
def someAction() {
def user = springSecurityService.isLoggedIn() ?
springSecurityService.loadCurrentUser() : null
if (user) {
CreditCard card = CreditCard.findByIdAndUser(
params.id as Long, user)
...
}
...
}
}
NoStackUsernameNotFoundException
package grails.plugin.springsecurity.userdetails;
import org.springframework.security.core.userdetails.
UsernameNotFoundException;
public class NoStackUsernameNotFoundException
extends UsernameNotFoundException {
private static final long serialVersionUID = 1;
public NoStackUsernameNotFoundException() {
super("User not found");
}
@Override
public synchronized Throwable fillInStackTrace() {
// do nothing
return this;
}
}
New @Authorities annotation
Helps make your annotations
more DRY - see
http://burtbeckwith.com/blog/
?p=1398
Guarding URLs
Guarding URLs
@Secured now only works with
controller methods
Guarding URLs
@Secured supports Closures
@Secured(closure = {
assert request
assert ctx
authentication.name == 'admin1'
})
def someMethod() {
…
}
Guarding URLs
All 3 approaches support HTTP verbs
@Secured(
value=["hasRole('ROLE_ADMIN')"],
httpMethod='POST')
def someMethod() {
…
}
Anonymous Authentication
Principal now is a UserDetails like
when you're authenticated, but with
ROLE_ANONYMOUS
I18N
User-contributed Russian, Norwegian
Bokmål, Brazilian Portuguese
(pt-BR), Italian, and Swedish
translations
Controllers and GSPs
LoginController.groovy,
LogoutController.groovy, auth.gsp,
denied.gsp are in the plugin now -
copy to app to customize
Support for Grails 2.3
Support for redirect mappings, and
@Secured in RestfulController
Support for Grails 2.4
Removed a use of
ApplicationHolder (using
Holders instead)
New DebugFilter
Based on
org.springframework.security.
config.debug.DebugFilter -
enable with debug.useFilter (only
in dev!)
Role Groups
grails s2-quickstart
com.yourapp User Role
--groupClassName=RoleGroup
Role Groups
grails.plugin.springsecurity.
authority.groupAuthorityNameField =
'authorities'
grails.plugin.springsecurity.
useRoleGroups = true
Adds to Config.groovy:
Role Groups
Adds 3 new domain classes:
● RoleGroup
● RoleGroupRole (RoleGroup <->
Role many-many join class)
● UserRoleGroup (RoleGroup <->
User many-many join class)
Role Groups
Changes User.getAuthorities()
Set<Role> getAuthorities() {
UserRole.findAllByUser(this)
.collect { it.role }
}
Set<RoleGroup> getAuthorities() {
UserRoleGroup.findAllByUser(this)
.collect { it.roleGroup }
}
→
Role Groups
New docs:
● Group Class
● PersonGroup Class
● GroupAuthority Class
Miscellaneous
Using bcrypt impl from Spring
Security instead of copied code
Miscellaneous
GrantedAuthorityImpl is
deprecated, use
SimpleGrantedAuthority
Miscellaneous
provided ':webxml:1.4.1' →
compile ':webxml:1.4.1'
Miscellaneous
Grails 2.0+ only
Miscellaneous
Generated User class enabled
property now defaults to true
def u = new User(
username: 'me',
password: 'itsasecret')
.save()
Miscellaneous
Only prints status messages (e.g.
"Configuring Spring Security
Core ...") if printStatusMessages
is not false
Miscellaneous
No default values for
userLookup.userDomainClassName,
authority.className, etc. - error
messages now make more sense
Miscellaneous
AuthenticationDetailsSource
details class isn't configurable in
Spring Security 3.2, so the docs
describe how to customize
Miscellaneous
You can configure the
SecurityContextHolder strategy
(defaults to ThreadLocal, but can
use InheritableThreadLocal or
a custom impl - configure with
sch.strategyName
Miscellaneous
Spring Security 3.2 doesn't store the
last username in the HTTP session –
to use the old behavior configure
with apf.storeLastUsername
Miscellaneous
Functional tests now use Geb
Miscellaneous
The 1.x code is in its own branch
New Config Properties
● printStatusMessages = true
● ajaxCheckClosure = null
●
afterInvocationManagerProviderNames = []
● authority.groupAuthorityNameField = null
● useRoleGroups = false
● apf.storeLastUsername = false
● logout.clearAuthentication = true
●
logout.invalidateHttpSession = true
● logout.targetUrlParameter = null
● logout.alwaysUseDefaultTargetUrl = false
● logout.redirectToReferer = false
● logout.postOnly = true
New Config Properties
● failureHandler.allowSessionCreation = true
● successHandler.useReferer = false
●
adh.useForward = true
● password.hash.iterations = 10000
● rememberMe.createSessionOnSuccess = true
● requestMap.httpMethodField = 'httpMethod'
● basic.credentialsCharset = 'UTF-8'
●
switchUser.usernameParameter =
SwitchUserFilter.SPRING_SECURITY_SWITCH_USERNAME_KEY
● x509.subjectDnClosure = null
● debug.useFilter = false
● sch.strategyName = SecurityContextHolder.MODE_THREADLOCAL
New Config Properties
● scr.allowSessionCreation = true
● scr.disableUrlRewriting = true
●
scr.springSecurityContextKey =
HttpSessionSecurityContextRepository.SPRING_SECURITY_CONTEXT_KEY
● scpf.forceEagerSessionCreation = false
● fii.alwaysReauthenticate = false
● fii.rejectPublicInvocations = true
●
fii.validateConfigAttributes = true
● fii.publishAuthorizationSuccess = false
● fii.observeOncePerRequest = true
Changed Config Properties
● rejectIfNoRule true→
● userLookup.userDomainClassName null→
●
userLookup.authorityJoinClassName null→
● useSessionFixationPrevention true→
● password.algorithm 'SHA-256' 'bcrypt'→
● rememberMe.persistentToken.domainClassName null→
● rememberMe.useSecureCookie false null→
●
requestMap.className null→
● atr.anonymousClass GrailsAnonymousAuthenticationToken→
● providerManager.eraseCredentialsAfterAuthentication true→
Removed Config Properties
● requestCache.onlyOnGet
● authenticationDetails.authClass
●
anon.userAttribute
● controllerAnnotations.matcher
● controllerAnnotations.lowercase
● filterChain.stripQueryStringFromUrls
So, what's left to do?
So, what's left to do?
A lot. 31 issues scheduled for 2.0
So, what's left to do?
A lot. 31 issues scheduled for 2.0
But many are simple, and there will
probably be an RC3 release
¡Gracias!
http://cuteoverload.files.wordpress.com/2014/03/cute-smiling-animals-251.jpg

More Related Content

What's hot

[OPD 2019] Trusted types and the end of DOM XSS
[OPD 2019] Trusted types and the end of DOM XSS[OPD 2019] Trusted types and the end of DOM XSS
[OPD 2019] Trusted types and the end of DOM XSS
OWASP
 
Attacking AWS: the full cyber kill chain
Attacking AWS: the full cyber kill chainAttacking AWS: the full cyber kill chain
Attacking AWS: the full cyber kill chain
SecuRing
 
Subgraph vega countermeasure2012
Subgraph vega countermeasure2012Subgraph vega countermeasure2012
Subgraph vega countermeasure2012
David Mirza
 

What's hot (20)

W3 conf hill-html5-security-realities
W3 conf hill-html5-security-realitiesW3 conf hill-html5-security-realities
W3 conf hill-html5-security-realities
 
Understanding Windows Access Token Manipulation
Understanding Windows Access Token ManipulationUnderstanding Windows Access Token Manipulation
Understanding Windows Access Token Manipulation
 
Modern Security with OAuth 2.0 and JWT and Spring by Dmitry Buzdin
Modern Security with OAuth 2.0 and JWT and Spring by Dmitry BuzdinModern Security with OAuth 2.0 and JWT and Spring by Dmitry Buzdin
Modern Security with OAuth 2.0 and JWT and Spring by Dmitry Buzdin
 
In The Middle of Printers - The (In)Security of Pull Printing solutions - Hac...
In The Middle of Printers - The (In)Security of Pull Printing solutions - Hac...In The Middle of Printers - The (In)Security of Pull Printing solutions - Hac...
In The Middle of Printers - The (In)Security of Pull Printing solutions - Hac...
 
[OPD 2019] Trusted types and the end of DOM XSS
[OPD 2019] Trusted types and the end of DOM XSS[OPD 2019] Trusted types and the end of DOM XSS
[OPD 2019] Trusted types and the end of DOM XSS
 
Getting Started with Spring Authorization Server
Getting Started with Spring Authorization ServerGetting Started with Spring Authorization Server
Getting Started with Spring Authorization Server
 
How to CASifying PeopleSoft and Integrating CAS and ADFS
How to CASifying PeopleSoft and Integrating CAS and ADFSHow to CASifying PeopleSoft and Integrating CAS and ADFS
How to CASifying PeopleSoft and Integrating CAS and ADFS
 
[OPD 2019] Attacking JWT tokens
[OPD 2019] Attacking JWT tokens[OPD 2019] Attacking JWT tokens
[OPD 2019] Attacking JWT tokens
 
Abusing & Securing XPC in macOS apps
Abusing & Securing XPC in macOS appsAbusing & Securing XPC in macOS apps
Abusing & Securing XPC in macOS apps
 
validation of user credentials in social network by using Django backend aut...
validation of user credentials in social network by using  Django backend aut...validation of user credentials in social network by using  Django backend aut...
validation of user credentials in social network by using Django backend aut...
 
API Security : Patterns and Practices
API Security : Patterns and PracticesAPI Security : Patterns and Practices
API Security : Patterns and Practices
 
Building an API Security Ecosystem
Building an API Security EcosystemBuilding an API Security Ecosystem
Building an API Security Ecosystem
 
JWT Authentication with AngularJS
JWT Authentication with AngularJSJWT Authentication with AngularJS
JWT Authentication with AngularJS
 
Securing java web applications
Securing java web applicationsSecuring java web applications
Securing java web applications
 
REST API Pentester's perspective
REST API Pentester's perspectiveREST API Pentester's perspective
REST API Pentester's perspective
 
Attacking AWS: the full cyber kill chain
Attacking AWS: the full cyber kill chainAttacking AWS: the full cyber kill chain
Attacking AWS: the full cyber kill chain
 
Subgraph vega countermeasure2012
Subgraph vega countermeasure2012Subgraph vega countermeasure2012
Subgraph vega countermeasure2012
 
Draft: building secure applications with keycloak (oidc/jwt)
Draft: building secure applications with keycloak (oidc/jwt)Draft: building secure applications with keycloak (oidc/jwt)
Draft: building secure applications with keycloak (oidc/jwt)
 
Json web token api authorization
Json web token api authorizationJson web token api authorization
Json web token api authorization
 
Intrigue Core: Scaling Assessment Automation
Intrigue Core: Scaling Assessment AutomationIntrigue Core: Scaling Assessment Automation
Intrigue Core: Scaling Assessment Automation
 

Viewers also liked (8)

What's Coming in Spring 3.0
What's Coming in Spring 3.0What's Coming in Spring 3.0
What's Coming in Spring 3.0
 
Restful Security Requirements
Restful Security RequirementsRestful Security Requirements
Restful Security Requirements
 
Spring security
Spring securitySpring security
Spring security
 
Spring security
Spring securitySpring security
Spring security
 
Spring Security Introduction
Spring Security IntroductionSpring Security Introduction
Spring Security Introduction
 
Spring Security
Spring SecuritySpring Security
Spring Security
 
Spring Security 3
Spring Security 3Spring Security 3
Spring Security 3
 
Spring Security
Spring SecuritySpring Security
Spring Security
 

Similar to What's New in spring-security-core 2.0

Anil saldhana securityassurancewithj_bosseap
Anil saldhana securityassurancewithj_bosseapAnil saldhana securityassurancewithj_bosseap
Anil saldhana securityassurancewithj_bosseap
Anil Saldanha
 
TangoWithDjango - ch8
TangoWithDjango - ch8TangoWithDjango - ch8
TangoWithDjango - ch8
Asika Kuo
 
Rapid Prototyping with TurboGears2
Rapid Prototyping with TurboGears2Rapid Prototyping with TurboGears2
Rapid Prototyping with TurboGears2
Alessandro Molina
 
Declarative Services - Dependency Injection OSGi Style
Declarative Services - Dependency Injection OSGi StyleDeclarative Services - Dependency Injection OSGi Style
Declarative Services - Dependency Injection OSGi Style
Felix Meschberger
 
Nagios 3
Nagios 3Nagios 3
Nagios 3
zmoly
 

Similar to What's New in spring-security-core 2.0 (20)

How to Use OWASP Security Logging
How to Use OWASP Security LoggingHow to Use OWASP Security Logging
How to Use OWASP Security Logging
 
Anil saldhana securityassurancewithj_bosseap
Anil saldhana securityassurancewithj_bosseapAnil saldhana securityassurancewithj_bosseap
Anil saldhana securityassurancewithj_bosseap
 
Exam Overview 70-533 Implementing Azure Infrastructure Solutions
Exam Overview 70-533 Implementing Azure Infrastructure SolutionsExam Overview 70-533 Implementing Azure Infrastructure Solutions
Exam Overview 70-533 Implementing Azure Infrastructure Solutions
 
Meet Magento Spain 2019 - Our Experience with Magento Cloud
Meet Magento Spain 2019 - Our Experience with Magento CloudMeet Magento Spain 2019 - Our Experience with Magento Cloud
Meet Magento Spain 2019 - Our Experience with Magento Cloud
 
21 05-2018
21 05-201821 05-2018
21 05-2018
 
Nagios 3
Nagios 3Nagios 3
Nagios 3
 
TangoWithDjango - ch8
TangoWithDjango - ch8TangoWithDjango - ch8
TangoWithDjango - ch8
 
Pixels_Camp
Pixels_CampPixels_Camp
Pixels_Camp
 
Chris Rutter: Avoiding The Security Brick
Chris Rutter: Avoiding The Security BrickChris Rutter: Avoiding The Security Brick
Chris Rutter: Avoiding The Security Brick
 
Anthos Security: modernize your security posture for cloud native applications
Anthos Security: modernize your security posture for cloud native applicationsAnthos Security: modernize your security posture for cloud native applications
Anthos Security: modernize your security posture for cloud native applications
 
Slim3 quick start
Slim3 quick startSlim3 quick start
Slim3 quick start
 
Rapid Prototyping with TurboGears2
Rapid Prototyping with TurboGears2Rapid Prototyping with TurboGears2
Rapid Prototyping with TurboGears2
 
Declarative Services - Dependency Injection OSGi Style
Declarative Services - Dependency Injection OSGi StyleDeclarative Services - Dependency Injection OSGi Style
Declarative Services - Dependency Injection OSGi Style
 
Declarative Services - Dependency Injection OSGi Style
Declarative Services - Dependency Injection OSGi StyleDeclarative Services - Dependency Injection OSGi Style
Declarative Services - Dependency Injection OSGi Style
 
jRecruiter - The AJUG Job Posting Service
jRecruiter - The AJUG Job Posting ServicejRecruiter - The AJUG Job Posting Service
jRecruiter - The AJUG Job Posting Service
 
Distributing UI Libraries: in a post Web-Component world
Distributing UI Libraries: in a post Web-Component worldDistributing UI Libraries: in a post Web-Component world
Distributing UI Libraries: in a post Web-Component world
 
Nagios 3
Nagios 3Nagios 3
Nagios 3
 
Мы ведь тоже люди. Еретическая лекция про юзабилити инструментов разработчика
Мы ведь тоже люди. Еретическая лекция про юзабилити инструментов разработчикаМы ведь тоже люди. Еретическая лекция про юзабилити инструментов разработчика
Мы ведь тоже люди. Еретическая лекция про юзабилити инструментов разработчика
 
20190516 web security-basic
20190516 web security-basic20190516 web security-basic
20190516 web security-basic
 
Struts 2 – Interceptors
Struts 2 – InterceptorsStruts 2 – Interceptors
Struts 2 – Interceptors
 

More from Burt Beckwith (8)

Advanced GORM - Performance, Customization and Monitoring
Advanced GORM - Performance, Customization and MonitoringAdvanced GORM - Performance, Customization and Monitoring
Advanced GORM - Performance, Customization and Monitoring
 
Little Did He Know ...
Little Did He Know ...Little Did He Know ...
Little Did He Know ...
 
Grails Worst Practices
Grails Worst PracticesGrails Worst Practices
Grails Worst Practices
 
Grails Transactions
Grails TransactionsGrails Transactions
Grails Transactions
 
Grails Plugin Best Practices
Grails Plugin Best PracticesGrails Plugin Best Practices
Grails Plugin Best Practices
 
Testing the Grails Spring Security Plugins
Testing the Grails Spring Security PluginsTesting the Grails Spring Security Plugins
Testing the Grails Spring Security Plugins
 
Securing Grails Applications
Securing Grails ApplicationsSecuring Grails Applications
Securing Grails Applications
 
Under the Hood: Using Spring in Grails
Under the Hood: Using Spring in GrailsUnder the Hood: Using Spring in Grails
Under the Hood: Using Spring in Grails
 

Recently uploaded

+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 

Recently uploaded (20)

Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfAzure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 

What's New in spring-security-core 2.0