SlideShare a Scribd company logo
User Provisioning Over Web
Kiran Ayyagari
Kiran Ayyagari

PMC ApacheDS project
Consulting & Support on ApacheDS
Started project eSCIMo
kayyagari@keydap.com, kayyagari@apache.org

2
What Is SCIM




System for Cross-domain Identity
Management
A standard for provisioning

3
SCIM Schema
A collection of attribute definitions
e.g.

{

}

"id": "urn:scim:schemas:core:2.0:User",
"name": "User",
"description": "Core User",
"attributes":[
{
"name":"id",
"type":"string",
"multiValued":false,
"description":"Unique identifier for the SCIM ressource. REQUIRED.",
"readOnly":true,
"required":true,
"caseExact":false
},
...

4
SCIM Schema...


Simple Attribute

e.g. userName – a user's name


Complex Attribute

e.g. name – a collection of firstName, lastName etc.


Multi-valued Attribute

e.g. emails – a collection of all emails


Sub-attribute

e.g. familyName – a user's family name

5
SCIM Schema...


Platform neutral



JSON format



URN as a ID

6
SCIM Data Model
User
Name : Naveen S
UID : naveens
Last Name : Sivashankar
First Name : Naveen

{

}

"schemas": ["urn:scim:schemas:core:2.0:User"],
"id": "45ceb739-1695-4c03-ab18-33ac71e91875",
"userName": "naveens",
"displayName": "Naveen S",
"active": true,
"name": {
"familyName": "Sivashankar",
"givenName": "Naveen Sivashankar"
},
"emails" : [{"naveens@example.com"},{"ns@mymail.com"}],
…
7
SCIM Data Model...
e.g. Extended user
User

Enterprise User

Name : Naveen S
UID : naveens

Employee No : 11011
Cost Center : 007

{
"schemas": ["urn:scim:schemas:core:2.0:User",
"urn:scim:schemas:extension:enterprise:2.0:User"],
"id": "45ceb739-1695-4c03-ab18-33ac71e91875",
"userName": "naveens",
...
"urn:scim:schemas:extension:enterprise:2.0:User": {
"employeeNumber": "11011",
"costCenter": "007"
…
}
}
SCIM Data Model...
Group
Name : Administrators
Members : naveens

{

"schemas": ["urn:scim:schemas:core:2.0:Group"],
"id": "484fbc39-ae09-427b-896f-d469d28895ad",
"displayName": "Administrators",
"members": [
{
"value": "45ceb739-1695-4c03-ab18-33ac71e91875",
"$ref": "http://localhost:8080/v2/Users/45ceb739-16954c03-ab18-33ac71e91875",
"display": "naveens"
} ]
}

9
SCIM API


Uses REST



Supports


CRUD operations



Bulk modification



Paged search
What Is eSCIMo


An implementation of SCIM v2.0



Supports LDAP as a backend by default



Can work with any LDAP server



Embeddable in ApacheDS

11
Running eSCIMo
Scenario 1
App Server/
Container
eSCIMo
eSCIMo

LDAP Server

12
Running eSCIMo...
Scenario 2
ApacheDS
Jetty
eSCIMo
eSCIMo

13
Architecture of eSCIMo
Security Filter

REST API
Resource Provider Interface

LDAP Resource
Provider


RDBMS Resource
Provider


???? Resource Provider

Implemented

Not Implemented
LDAP

RDBMS

14

???
How Does It Work?
Attribute mapping
Mapping a simple attribute -

e.g. "id": "45ceb739-1695-4c03-ab18-33ac71e91875"
"userName": "naveens"

<attribute name="id" mappedTo="entryUUID" />
<attribute name="userName" mappedTo="uid" />

15
How Does It Work...
Attribute mapping contd...
Mapping a complex attribute
e.g.

"name": {
"familyName": "Sivashankar",
"givenName": "Naveen Sivashankar"
}
<complex-attribute name="name">
<at-group>
<attribute name="familyName" mappedTo="sn" />
<attribute name="givenName" mappedTo="cn" />
</at-group>
</complex-attribute>

16
How Does It Work...
Attribute mapping contd...
Mapping a multi-valued attribute
e.g. "emails"

: [{"naveens@example.com"},{"ns@mymail.com"}]

<multival-attribute name="emails">
<at-group>
<attribute name="value" mappedTo="mail" />
</at-group>
</multival-attribute>

17
How Does It Work...
Attribute mapping contd...
e.x "groups": [
{
"id": "484fbc39-ae09-427b-896f-d469d28895ad",
"$ref": "http://localhost:8080/v2/Groups/484fbc39-ae09-427b-896fd469d28895ad",
"display": "Administrators"
}]

"id" - How can we fetch the ID of the member entry?
"$ref" - How do we build a URL dynamically?

18
How Does It Work...
Attribute Handlers
Handler Implementation
public class GroupsAttributeHandler extends LdapAttributeHandler {
public void read();
public void write();
public void patch();
}

Handler definition
<handler name="groupsHandler"
class="org.apache.directory.scim.ldap.handlers.GroupsAttributeHandler" />

Handler mapping
<multival-attribute name="groups" baseDn="ou=system"
filter="(uniqueMember=$entryDn)" handlerRef="groupsHandler" />

19
eSCIMo Json2Java


Is a Maven plugin



Generates Java classes from SCIM schemas

20
eSCIMo Client


Works with the generated model classes

e.x. Adding a User resource
User user = new User();
user.setUserName( "naveens" );
user.setDisplayName( "Naveen Sivashankar" );
user.setPassword( "secret" );
Name name = new Name();
name.setFamilyName( "Sivashankar" );
name.setGivenName( "Naveen" );
user.setName( name );
EscimoResult result = client.addUser( user );

21
Demo

22
Questions

?

23
Thank you!

More Related Content

PPTX
Bsidesnova- Pentesting Methodology - Making bits less complicated
Octavio Paguaga
 
PDF
Security in Node.JS and Express:
Petros Demetrakopoulos
 
PPTX
Azure Resource Manager (ARM) Template - Beginner's Guide
Juv Chan
 
PPTX
MongoDB-Beginner tutorial explaining basic operation via mongo shell
Priti Solanki
 
PDF
DEF CON 23 - amit ashbel and maty siman - game of hacks
Felipe Prado
 
PPTX
Running Production MongoDB Lightning Talk
chrisckchang
 
PDF
Require js and Magento2
Irene Iaccio
 
PDF
Mongodb index 讀書心得
cc liu
 
Bsidesnova- Pentesting Methodology - Making bits less complicated
Octavio Paguaga
 
Security in Node.JS and Express:
Petros Demetrakopoulos
 
Azure Resource Manager (ARM) Template - Beginner's Guide
Juv Chan
 
MongoDB-Beginner tutorial explaining basic operation via mongo shell
Priti Solanki
 
DEF CON 23 - amit ashbel and maty siman - game of hacks
Felipe Prado
 
Running Production MongoDB Lightning Talk
chrisckchang
 
Require js and Magento2
Irene Iaccio
 
Mongodb index 讀書心得
cc liu
 

Similar to eSCIMo - User Provisioning over Web (20)

PPTX
Scim2012 q1update chrisphillips
Chris Phillips
 
PPTX
Chris Phillips SCIM Mace-Dir Internet2 Fall Member Meeting Refresh
Chris Phillips
 
PDF
Standardizing Identity Provisioning with SCIM
WSO2
 
PDF
CIS14: Identity Souffle: Creating a Well-baked Identity Lifecycle
CloudIDSummit
 
PDF
CIS14: Identity Souffle: Creating a Well-baked Identity Lifecycle
CloudIDSummit
 
PDF
SCIM presentation from CIS 2012
Twobo Technologies
 
PPTX
Standardizing Identity Provisioning with SCIM
HasiniG
 
PPTX
Jan19 scim webinar-04
Paul Madsen
 
PPTX
SCIM: Why It’s More Important, and More Simple, Than You Think - CIS 2014
Kelly Grizzle
 
PDF
CIS14: SCIM: Why It’s More Important, and More Simple, Than You Think
CloudIDSummit
 
PDF
Cloud identity management meetup 150108
Morteza Ansari
 
PDF
The importance of normalizing your security data to ECS
Elasticsearch
 
ODP
Open source identity management 20121106 - apache con eu
Francesco Chicchiriccò
 
PPTX
WSO2Con USA 2014 - Identity Server Tutorial
Prabath Siriwardena
 
PPTX
ADF EMG XML Data Control, OOW Presentation
Richard Olrichs
 
PDF
Cmis Virtual Training Webinar 24 Nov09
Alfresco Software
 
PDF
Five Things You Gotta Know About Modern Identity
Mark Diodati
 
PDF
XML Data Control - Oracle OpenWorld Preview AMIS - Richard Olrichs en Wilfred...
Getting value from IoT, Integration and Data Analytics
 
PPTX
XACML - XML Amsterdam2011
Ray Sinnema
 
PDF
PLAT-2 CMIS - What’s coming next?
Alfresco Software
 
Scim2012 q1update chrisphillips
Chris Phillips
 
Chris Phillips SCIM Mace-Dir Internet2 Fall Member Meeting Refresh
Chris Phillips
 
Standardizing Identity Provisioning with SCIM
WSO2
 
CIS14: Identity Souffle: Creating a Well-baked Identity Lifecycle
CloudIDSummit
 
CIS14: Identity Souffle: Creating a Well-baked Identity Lifecycle
CloudIDSummit
 
SCIM presentation from CIS 2012
Twobo Technologies
 
Standardizing Identity Provisioning with SCIM
HasiniG
 
Jan19 scim webinar-04
Paul Madsen
 
SCIM: Why It’s More Important, and More Simple, Than You Think - CIS 2014
Kelly Grizzle
 
CIS14: SCIM: Why It’s More Important, and More Simple, Than You Think
CloudIDSummit
 
Cloud identity management meetup 150108
Morteza Ansari
 
The importance of normalizing your security data to ECS
Elasticsearch
 
Open source identity management 20121106 - apache con eu
Francesco Chicchiriccò
 
WSO2Con USA 2014 - Identity Server Tutorial
Prabath Siriwardena
 
ADF EMG XML Data Control, OOW Presentation
Richard Olrichs
 
Cmis Virtual Training Webinar 24 Nov09
Alfresco Software
 
Five Things You Gotta Know About Modern Identity
Mark Diodati
 
XML Data Control - Oracle OpenWorld Preview AMIS - Richard Olrichs en Wilfred...
Getting value from IoT, Integration and Data Analytics
 
XACML - XML Amsterdam2011
Ray Sinnema
 
PLAT-2 CMIS - What’s coming next?
Alfresco Software
 
Ad

More from LDAPCon (20)

ODP
Fusiondirectory: your infrastructure manager based on ldap
LDAPCon
 
PDF
Building Open Source Identity Management with FreeIPA
LDAPCon
 
PDF
Benchmarks on LDAP directories
LDAPCon
 
PDF
Synchronize AD and OpenLDAP with LSC
LDAPCon
 
PDF
A Backend to tie them all?
LDAPCon
 
PDF
Update on the OpenDJ project
LDAPCon
 
PDF
Build your LDAP Web Interface with LinID Directory Manager
LDAPCon
 
PDF
LDAP Development Using Spring LDAP
LDAPCon
 
PDF
Do The Right Thing! How LDAP servers should help LDAP clients
LDAPCon
 
PDF
Distributed Virtual Transaction Directory Server
LDAPCon
 
PDF
What's New in OpenLDAP
LDAPCon
 
PDF
What makes a LDAP server running fast ? An bit of insight about the various b...
LDAPCon
 
PDF
Manage password policy in OpenLDAP
LDAPCon
 
PDF
OpenLDAP configuration brought to Apache Directory Studio
LDAPCon
 
PDF
Making Research "Social" using LDAP
LDAPCon
 
PDF
Bridging the gap: Adding missing client (security) features using OpenLDAP pr...
LDAPCon
 
PDF
Fortress Open Source IAM on LDAPv3
LDAPCon
 
PDF
Give a REST to your LDAP directory services
LDAPCon
 
PDF
How AD has been re-engineered to extend to the cloud
LDAPCon
 
PDF
IAM to IRM: The Shift to Identity Relationship Management
LDAPCon
 
Fusiondirectory: your infrastructure manager based on ldap
LDAPCon
 
Building Open Source Identity Management with FreeIPA
LDAPCon
 
Benchmarks on LDAP directories
LDAPCon
 
Synchronize AD and OpenLDAP with LSC
LDAPCon
 
A Backend to tie them all?
LDAPCon
 
Update on the OpenDJ project
LDAPCon
 
Build your LDAP Web Interface with LinID Directory Manager
LDAPCon
 
LDAP Development Using Spring LDAP
LDAPCon
 
Do The Right Thing! How LDAP servers should help LDAP clients
LDAPCon
 
Distributed Virtual Transaction Directory Server
LDAPCon
 
What's New in OpenLDAP
LDAPCon
 
What makes a LDAP server running fast ? An bit of insight about the various b...
LDAPCon
 
Manage password policy in OpenLDAP
LDAPCon
 
OpenLDAP configuration brought to Apache Directory Studio
LDAPCon
 
Making Research "Social" using LDAP
LDAPCon
 
Bridging the gap: Adding missing client (security) features using OpenLDAP pr...
LDAPCon
 
Fortress Open Source IAM on LDAPv3
LDAPCon
 
Give a REST to your LDAP directory services
LDAPCon
 
How AD has been re-engineered to extend to the cloud
LDAPCon
 
IAM to IRM: The Shift to Identity Relationship Management
LDAPCon
 
Ad

Recently uploaded (20)

PDF
The Future of Artificial Intelligence (AI)
Mukul
 
PPTX
AI in Daily Life: How Artificial Intelligence Helps Us Every Day
vanshrpatil7
 
PPTX
Introduction to Flutter by Ayush Desai.pptx
ayushdesai204
 
PDF
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
PDF
Using Anchore and DefectDojo to Stand Up Your DevSecOps Function
Anchore
 
PDF
Unlocking the Future- AI Agents Meet Oracle Database 23ai - AIOUG Yatra 2025.pdf
Sandesh Rao
 
PPTX
Agile Chennai 18-19 July 2025 | Emerging patterns in Agentic AI by Bharani Su...
AgileNetwork
 
PDF
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
PDF
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
PDF
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 
PDF
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 
PPTX
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
PPTX
Applied-Statistics-Mastering-Data-Driven-Decisions.pptx
parmaryashparmaryash
 
PPTX
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
PDF
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
PPTX
The Future of AI & Machine Learning.pptx
pritsen4700
 
PDF
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
PDF
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
PDF
Orbitly Pitch Deck|A Mission-Driven Platform for Side Project Collaboration (...
zz41354899
 
PPTX
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
The Future of Artificial Intelligence (AI)
Mukul
 
AI in Daily Life: How Artificial Intelligence Helps Us Every Day
vanshrpatil7
 
Introduction to Flutter by Ayush Desai.pptx
ayushdesai204
 
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
Using Anchore and DefectDojo to Stand Up Your DevSecOps Function
Anchore
 
Unlocking the Future- AI Agents Meet Oracle Database 23ai - AIOUG Yatra 2025.pdf
Sandesh Rao
 
Agile Chennai 18-19 July 2025 | Emerging patterns in Agentic AI by Bharani Su...
AgileNetwork
 
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
Applied-Statistics-Mastering-Data-Driven-Decisions.pptx
parmaryashparmaryash
 
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
The Future of AI & Machine Learning.pptx
pritsen4700
 
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
Orbitly Pitch Deck|A Mission-Driven Platform for Side Project Collaboration (...
zz41354899
 
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 

eSCIMo - User Provisioning over Web

  • 1. User Provisioning Over Web Kiran Ayyagari
  • 2. Kiran Ayyagari PMC ApacheDS project Consulting & Support on ApacheDS Started project eSCIMo [email protected], [email protected] 2
  • 3. What Is SCIM   System for Cross-domain Identity Management A standard for provisioning 3
  • 4. SCIM Schema A collection of attribute definitions e.g. { } "id": "urn:scim:schemas:core:2.0:User", "name": "User", "description": "Core User", "attributes":[ { "name":"id", "type":"string", "multiValued":false, "description":"Unique identifier for the SCIM ressource. REQUIRED.", "readOnly":true, "required":true, "caseExact":false }, ... 4
  • 5. SCIM Schema...  Simple Attribute e.g. userName – a user's name  Complex Attribute e.g. name – a collection of firstName, lastName etc.  Multi-valued Attribute e.g. emails – a collection of all emails  Sub-attribute e.g. familyName – a user's family name 5
  • 7. SCIM Data Model User Name : Naveen S UID : naveens Last Name : Sivashankar First Name : Naveen { } "schemas": ["urn:scim:schemas:core:2.0:User"], "id": "45ceb739-1695-4c03-ab18-33ac71e91875", "userName": "naveens", "displayName": "Naveen S", "active": true, "name": { "familyName": "Sivashankar", "givenName": "Naveen Sivashankar" }, "emails" : [{"[email protected]"},{"[email protected]"}], … 7
  • 8. SCIM Data Model... e.g. Extended user User Enterprise User Name : Naveen S UID : naveens Employee No : 11011 Cost Center : 007 { "schemas": ["urn:scim:schemas:core:2.0:User", "urn:scim:schemas:extension:enterprise:2.0:User"], "id": "45ceb739-1695-4c03-ab18-33ac71e91875", "userName": "naveens", ... "urn:scim:schemas:extension:enterprise:2.0:User": { "employeeNumber": "11011", "costCenter": "007" … } }
  • 9. SCIM Data Model... Group Name : Administrators Members : naveens { "schemas": ["urn:scim:schemas:core:2.0:Group"], "id": "484fbc39-ae09-427b-896f-d469d28895ad", "displayName": "Administrators", "members": [ { "value": "45ceb739-1695-4c03-ab18-33ac71e91875", "$ref": "http://localhost:8080/v2/Users/45ceb739-16954c03-ab18-33ac71e91875", "display": "naveens" } ] } 9
  • 10. SCIM API  Uses REST  Supports  CRUD operations  Bulk modification  Paged search
  • 11. What Is eSCIMo  An implementation of SCIM v2.0  Supports LDAP as a backend by default  Can work with any LDAP server  Embeddable in ApacheDS 11
  • 12. Running eSCIMo Scenario 1 App Server/ Container eSCIMo eSCIMo LDAP Server 12
  • 14. Architecture of eSCIMo Security Filter REST API Resource Provider Interface  LDAP Resource Provider  RDBMS Resource Provider  ???? Resource Provider Implemented  Not Implemented LDAP RDBMS 14 ???
  • 15. How Does It Work? Attribute mapping Mapping a simple attribute - e.g. "id": "45ceb739-1695-4c03-ab18-33ac71e91875" "userName": "naveens" <attribute name="id" mappedTo="entryUUID" /> <attribute name="userName" mappedTo="uid" /> 15
  • 16. How Does It Work... Attribute mapping contd... Mapping a complex attribute e.g. "name": { "familyName": "Sivashankar", "givenName": "Naveen Sivashankar" } <complex-attribute name="name"> <at-group> <attribute name="familyName" mappedTo="sn" /> <attribute name="givenName" mappedTo="cn" /> </at-group> </complex-attribute> 16
  • 17. How Does It Work... Attribute mapping contd... Mapping a multi-valued attribute e.g. "emails" : [{"[email protected]"},{"[email protected]"}] <multival-attribute name="emails"> <at-group> <attribute name="value" mappedTo="mail" /> </at-group> </multival-attribute> 17
  • 18. How Does It Work... Attribute mapping contd... e.x "groups": [ { "id": "484fbc39-ae09-427b-896f-d469d28895ad", "$ref": "http://localhost:8080/v2/Groups/484fbc39-ae09-427b-896fd469d28895ad", "display": "Administrators" }] "id" - How can we fetch the ID of the member entry? "$ref" - How do we build a URL dynamically? 18
  • 19. How Does It Work... Attribute Handlers Handler Implementation public class GroupsAttributeHandler extends LdapAttributeHandler { public void read(); public void write(); public void patch(); } Handler definition <handler name="groupsHandler" class="org.apache.directory.scim.ldap.handlers.GroupsAttributeHandler" /> Handler mapping <multival-attribute name="groups" baseDn="ou=system" filter="(uniqueMember=$entryDn)" handlerRef="groupsHandler" /> 19
  • 20. eSCIMo Json2Java  Is a Maven plugin  Generates Java classes from SCIM schemas 20
  • 21. eSCIMo Client  Works with the generated model classes e.x. Adding a User resource User user = new User(); user.setUserName( "naveens" ); user.setDisplayName( "Naveen Sivashankar" ); user.setPassword( "secret" ); Name name = new Name(); name.setFamilyName( "Sivashankar" ); name.setGivenName( "Naveen" ); user.setName( name ); EscimoResult result = client.addUser( user ); 21