SlideShare uma empresa Scribd logo
1 de 23
Tapir User Manager

Paul Houle, Library Systems, CU Library
http://www.honeylocust.com/x/products/tum/
Ph18@cornell.edu
TUM Features
• Cookie-based authentication
• Optional self-registration
• w/ e-mail address verification
• Automatic password resets
• Simple to integrate into existing applications
• Supports PHP and Perl applications
• Advanced Administrative Interface
• Add or Update User Records
• Real-time graphing
• E-mail sending to users
Why not Apache auth?
Apache’s authentication is integrated with the
web server, BUT:
•Users can’t log out
• No support for permanent login
• No automatic password reset
• Password file must be edited by hand
Web Portals
A web portal is a collection of web applications
that share:
• Common visual appearance
• A single user database
User management is necessary for administrative
screens, community, e-commerce, content
management, etc.
The web software crisis
Two kinds of open-source and commercial web
software:
• Frameworks
• Provide user management, templating, and
other services, BUT
• Have a high-learning curve and almost
always do something seriously wrong.
• Applications
• Many excellent apps exist, but since there’s
no standard, they don’t share a user database.
So we re-invent the wheel for every site…
Performance Goals
Appropriate for small to large sites:
• PHP/MySQL combination is easy to install and
maintain
• Supports > 1 M hits/day
• Doesn’t need to hit database to authenticate
• Supports > 1 M users
• Supports horizontal scaling
Experience: TUM exceeds above goals.
What it doesn’t do
It’s important to guarantee performance and
reliability, so:
• We don’t support other databases
• We don’t support other user database backends, i.e.
• LDAP
• Web services
Integration with outside services, for better or
worse, is by copying information.
• No (intrinsic) defense against packet sniffing.
Toolset
Based on market-leading tools for top
performance, reliability and maintainability:
•Apache 2 web server
• PHP 4 (transitioning to 5)
• MySQL 4.0 (transitioning to 4.1)
Secondary tools:
• Smarty templating system
• jpGraph (real-time graphing)
Programmers Eye View
require_once “tapir_auth.php”;
$auth=new Tapir_Auth();
// For personalization…
$auth->optional();

// To control access..
$auth->required();

$email=$auth->get_email();
$first_name=$auth->get_first_name();
Authentication Object
$auth->required() and related functions are about
200 lines of code in most languages.
By implementing the ‘Tapir_Auth’ object in a
language (say Java, TCL), applications written in
that language can use TUM authentication and
benefit from the TUM UI written in PHP.
Applications have the full power of SQL to access
the user db.
TUM is based on open standards (cookies, SQL)
and avoids roach motels (session-variable facilities
and proprietary object databases.)
Database access
Supports a single database connection per script,
lazy connection creation, interoperation with
other MySQL APIs, robust error handling and
convenience:

$count=
$auth->conn->select_scalar(
“SELECT COUNT(*) FROM tapir_users”)
Session Cookies
Based on “Do’s and Don’ts of Client Authentication on the Web”
http://cookies.lcs.mit.edu/pubs/webauth:tr.pdf
398927:1:132.236.212.35:1097859122:15:oQjG5oe2T6uMmlvHyS7CnBte/d4

Session Id

Ip address

Capabilities
Timestamp

User Id

Cryptographic Hash

Cookies are reissued when timestamp is > 10 m
old. SHA1 hash with secret protects cookie from
forgery or alteration.
Other Cookies
tapir_permanent:
Secret token for permanent login like
Amazon, Yahoo.

tapir_browser:
Standard cookie issued by Apache’s
mod_usertrack to track browsers
If we add SSL support, we’ll also add a
tapir_secure cookie that only travels over SSL.
Customization
• A site can provide templates (plain PHP or
smarty) for both the user and admin pages
• Namespace conventions allow sites to add own
tables and columns to tapir_ tables
• Numerous hooks provided to allow modification
of login and registration behavior (can replace
forms, talk to external systems, etc.)
• Much of the admin UI is table-driven, much
customization is almost trivial.
• Configuration management system lets local sites
replace files, and configure PHP, Perl and Apache
configuration files with M4 macros
External User Interface
UI: Devil in the Details
• Jacob Nielsen:
• Authentication is a major barrier to usability
• Many processes on commercial web sites have
<50% success rate
•With Tivejo, we increased the registration success
rate from 60% to 85%, arXiv attains nearly 95%
•Base 32t coding for (e-mail verification, password
reset, and other) tokens: 60-bit security in 12 easyto-type characters, insensitive to case and common
errors such as 0/O and 1/L confusion
K8TLTI-78FKTR
Administrative Interface
•Benefits from development for multiple projects
•Tour: (arXiv.org)
• Main screen
• Advanced Search
• User detail screen
• Real-time graphing
UI Toolkit
• Purposely set out NOT to develop a universal
framework, BUT
• developing a sophisticated UI that’s consistent
and maintainable has required us to develop a
framework
• the “update protocol”
• template system
• the “screen” concept
• query builder
• real-time graphing
Case Study: Tivejo
• For a while, Brazil’s #1 voice chat service;
250,000+ users and 300,000 hits per day
• Web site controlled access to a Windows
application, interacted with Paltalk.com via a
‘REST’ web service
UDP, peer-to-peer, “VoIP”
browser

registers

chat client

authentication, call setup

downloads

Tivejo www

other user

web service
Paltalk.com

Tivejo mail

Tivejo db
Case Study: LS Wikis
Wanted a wiki for both public and private
documentation – existing wiki software didn’t
support authentication.
• Ported TUM to Solaris (install scripts)
• Two wikis:
•funkenstein: open registration
•docs-production: closed registration
• Chose PHP Wiki: Wiki Tiki Tavi
• About an hour to get authentication minimally
working.
• Another two days to get everything right
Case Study: arXiv.org
World’s largest physics publisher: (also math, cs…)
•293,000+ papers (nearly 200 submissions/day)
•60,000+ registered users
Legacy System:
Perl CGI scripts, using filesystem for paper
storage and Berkeley DB for user database. Very
messy data, some users aren’t even registered, not
possible to determine submitter of all papers
Requirement:
Flexible user database so we can implement
“endorsements” to control problem submissions.
Case Study: arXiv.org II
Challenges:
• Implement Perl Auth object for legacy scripts
• Clean up user database as best possible
• Making a complex user interface for
endorsement simple for users
• Making it easy for administrators to do routine
and not-so-routine jobs
Still to do:
• Move all admin functions to web
• Move e-mail subscriptions to web
• Require Password option, hide .PHP urls, etc.
Conclusion
TUM: Best-of-breed user management system, works with
(not against) existing applications and mainstream programming methods; incorporates lessons learned from a number of
projects; provides the interface that users expect from major
commercial sites; convenient to install and administer.

http://www.honeylocust.com/x/products/tum/

Mais conteúdo relacionado

Mais procurados

CNIT 129S: 13: Attacking Users: Other Techniques (Part 1 of 2)
CNIT 129S: 13: Attacking Users: Other Techniques (Part 1 of 2)CNIT 129S: 13: Attacking Users: Other Techniques (Part 1 of 2)
CNIT 129S: 13: Attacking Users: Other Techniques (Part 1 of 2)Sam Bowne
 
CNIT 129S: Ch 6: Attacking Authentication
CNIT 129S: Ch 6: Attacking AuthenticationCNIT 129S: Ch 6: Attacking Authentication
CNIT 129S: Ch 6: Attacking AuthenticationSam Bowne
 
CNIT 129S: Ch 4: Mapping the Application
CNIT 129S: Ch 4: Mapping the ApplicationCNIT 129S: Ch 4: Mapping the Application
CNIT 129S: Ch 4: Mapping the ApplicationSam Bowne
 
CNIT 129S: 8: Attacking Access Controls
CNIT 129S: 8: Attacking Access ControlsCNIT 129S: 8: Attacking Access Controls
CNIT 129S: 8: Attacking Access ControlsSam Bowne
 
CNIT 129: 6. Attacking Authentication
CNIT 129: 6. Attacking AuthenticationCNIT 129: 6. Attacking Authentication
CNIT 129: 6. Attacking AuthenticationSam Bowne
 
CNIT 129S: 11: Attacking Application Logic
CNIT 129S: 11: Attacking Application LogicCNIT 129S: 11: Attacking Application Logic
CNIT 129S: 11: Attacking Application LogicSam Bowne
 
CNIT 129S - Ch 6a: Attacking Authentication
CNIT 129S - Ch 6a: Attacking AuthenticationCNIT 129S - Ch 6a: Attacking Authentication
CNIT 129S - Ch 6a: Attacking AuthenticationSam Bowne
 
CNIT 129S: 10: Attacking Back-End Components
CNIT 129S: 10: Attacking Back-End ComponentsCNIT 129S: 10: Attacking Back-End Components
CNIT 129S: 10: Attacking Back-End ComponentsSam Bowne
 
CNIT 129S: 13: Attacking Users: Other Techniques (Part 2 of 2)
CNIT 129S: 13: Attacking Users: Other Techniques (Part 2 of 2)CNIT 129S: 13: Attacking Users: Other Techniques (Part 2 of 2)
CNIT 129S: 13: Attacking Users: Other Techniques (Part 2 of 2)Sam Bowne
 
Mobile security chess board - attacks & defense
Mobile security chess board - attacks & defenseMobile security chess board - attacks & defense
Mobile security chess board - attacks & defenseBlueinfy Solutions
 
Web Server Technologies II: Web Applications & Server Maintenance
Web Server Technologies II: Web Applications & Server MaintenanceWeb Server Technologies II: Web Applications & Server Maintenance
Web Server Technologies II: Web Applications & Server MaintenancePort80 Software
 
iOS Application Security Testing
iOS Application Security TestingiOS Application Security Testing
iOS Application Security TestingBlueinfy Solutions
 
Extending drupal authentication
Extending drupal authenticationExtending drupal authentication
Extending drupal authenticationCharles Russell
 
Web Server-Side Programming Techniques
Web Server-Side Programming TechniquesWeb Server-Side Programming Techniques
Web Server-Side Programming Techniquesguest8899ec02
 
Web Services Hacking and Security
Web Services Hacking and SecurityWeb Services Hacking and Security
Web Services Hacking and SecurityBlueinfy Solutions
 
Introduction to the Web API
Introduction to the Web APIIntroduction to the Web API
Introduction to the Web APIBrad Genereaux
 
Best Practice in Web Service Design
Best Practice in Web Service DesignBest Practice in Web Service Design
Best Practice in Web Service DesignLorna Mitchell
 
Ch 5: Bypassing Client-Side Controls
Ch 5: Bypassing Client-Side ControlsCh 5: Bypassing Client-Side Controls
Ch 5: Bypassing Client-Side ControlsSam Bowne
 

Mais procurados (20)

CNIT 129S: 13: Attacking Users: Other Techniques (Part 1 of 2)
CNIT 129S: 13: Attacking Users: Other Techniques (Part 1 of 2)CNIT 129S: 13: Attacking Users: Other Techniques (Part 1 of 2)
CNIT 129S: 13: Attacking Users: Other Techniques (Part 1 of 2)
 
CNIT 129S: Ch 6: Attacking Authentication
CNIT 129S: Ch 6: Attacking AuthenticationCNIT 129S: Ch 6: Attacking Authentication
CNIT 129S: Ch 6: Attacking Authentication
 
CNIT 129S: Ch 4: Mapping the Application
CNIT 129S: Ch 4: Mapping the ApplicationCNIT 129S: Ch 4: Mapping the Application
CNIT 129S: Ch 4: Mapping the Application
 
CNIT 129S: 8: Attacking Access Controls
CNIT 129S: 8: Attacking Access ControlsCNIT 129S: 8: Attacking Access Controls
CNIT 129S: 8: Attacking Access Controls
 
CNIT 129: 6. Attacking Authentication
CNIT 129: 6. Attacking AuthenticationCNIT 129: 6. Attacking Authentication
CNIT 129: 6. Attacking Authentication
 
CNIT 129S: 11: Attacking Application Logic
CNIT 129S: 11: Attacking Application LogicCNIT 129S: 11: Attacking Application Logic
CNIT 129S: 11: Attacking Application Logic
 
CNIT 129S - Ch 6a: Attacking Authentication
CNIT 129S - Ch 6a: Attacking AuthenticationCNIT 129S - Ch 6a: Attacking Authentication
CNIT 129S - Ch 6a: Attacking Authentication
 
CNIT 129S: 10: Attacking Back-End Components
CNIT 129S: 10: Attacking Back-End ComponentsCNIT 129S: 10: Attacking Back-End Components
CNIT 129S: 10: Attacking Back-End Components
 
CNIT 129S: 13: Attacking Users: Other Techniques (Part 2 of 2)
CNIT 129S: 13: Attacking Users: Other Techniques (Part 2 of 2)CNIT 129S: 13: Attacking Users: Other Techniques (Part 2 of 2)
CNIT 129S: 13: Attacking Users: Other Techniques (Part 2 of 2)
 
Mobile security chess board - attacks & defense
Mobile security chess board - attacks & defenseMobile security chess board - attacks & defense
Mobile security chess board - attacks & defense
 
Web Server Technologies II: Web Applications & Server Maintenance
Web Server Technologies II: Web Applications & Server MaintenanceWeb Server Technologies II: Web Applications & Server Maintenance
Web Server Technologies II: Web Applications & Server Maintenance
 
iOS Application Security Testing
iOS Application Security TestingiOS Application Security Testing
iOS Application Security Testing
 
Extending drupal authentication
Extending drupal authenticationExtending drupal authentication
Extending drupal authentication
 
Web Server-Side Programming Techniques
Web Server-Side Programming TechniquesWeb Server-Side Programming Techniques
Web Server-Side Programming Techniques
 
HTML5 hacking
HTML5 hackingHTML5 hacking
HTML5 hacking
 
Web Services Hacking and Security
Web Services Hacking and SecurityWeb Services Hacking and Security
Web Services Hacking and Security
 
Introduction to the Web API
Introduction to the Web APIIntroduction to the Web API
Introduction to the Web API
 
Best Practice in Web Service Design
Best Practice in Web Service DesignBest Practice in Web Service Design
Best Practice in Web Service Design
 
Ch 5: Bypassing Client-Side Controls
Ch 5: Bypassing Client-Side ControlsCh 5: Bypassing Client-Side Controls
Ch 5: Bypassing Client-Side Controls
 
Application fuzzing
Application fuzzingApplication fuzzing
Application fuzzing
 

Destaque

Classical Mechanics of a Three Spin Cluster
Classical Mechanics of a Three Spin ClusterClassical Mechanics of a Three Spin Cluster
Classical Mechanics of a Three Spin ClusterPaul Houle
 
The Global Performing Arts Database
The Global Performing Arts DatabaseThe Global Performing Arts Database
The Global Performing Arts DatabasePaul Houle
 
Semiclassical mechanics of a non-integrable spin cluster
Semiclassical mechanics of a non-integrable spin clusterSemiclassical mechanics of a non-integrable spin cluster
Semiclassical mechanics of a non-integrable spin clusterPaul Houle
 
Journalism and the Semantic Web
Journalism and the Semantic WebJournalism and the Semantic Web
Journalism and the Semantic WebKurt Cagle
 
Arxiv.org: Research And Development Directions
Arxiv.org: Research And Development DirectionsArxiv.org: Research And Development Directions
Arxiv.org: Research And Development DirectionsPaul Houle
 

Destaque (6)

Classical Mechanics of a Three Spin Cluster
Classical Mechanics of a Three Spin ClusterClassical Mechanics of a Three Spin Cluster
Classical Mechanics of a Three Spin Cluster
 
Future Proof
Future ProofFuture Proof
Future Proof
 
The Global Performing Arts Database
The Global Performing Arts DatabaseThe Global Performing Arts Database
The Global Performing Arts Database
 
Semiclassical mechanics of a non-integrable spin cluster
Semiclassical mechanics of a non-integrable spin clusterSemiclassical mechanics of a non-integrable spin cluster
Semiclassical mechanics of a non-integrable spin cluster
 
Journalism and the Semantic Web
Journalism and the Semantic WebJournalism and the Semantic Web
Journalism and the Semantic Web
 
Arxiv.org: Research And Development Directions
Arxiv.org: Research And Development DirectionsArxiv.org: Research And Development Directions
Arxiv.org: Research And Development Directions
 

Semelhante a Tapir user manager

CakePHP, cakePHP development Company
CakePHP, cakePHP development CompanyCakePHP, cakePHP development Company
CakePHP, cakePHP development CompanyNetConnectWeb
 
Web Services PHP Tutorial
Web Services PHP TutorialWeb Services PHP Tutorial
Web Services PHP TutorialLorna Mitchell
 
Adding Support for Networking and Web Technologies to an Embedded System
Adding Support for Networking and Web Technologies to an Embedded SystemAdding Support for Networking and Web Technologies to an Embedded System
Adding Support for Networking and Web Technologies to an Embedded SystemJohn Efstathiades
 
Deploying and Managing PowerPivot for SharePoint
Deploying and Managing PowerPivot for SharePointDeploying and Managing PowerPivot for SharePoint
Deploying and Managing PowerPivot for SharePointDenny Lee
 
Puppet Keynote by Ralph Luchs
Puppet Keynote by Ralph LuchsPuppet Keynote by Ralph Luchs
Puppet Keynote by Ralph LuchsNETWAYS
 
State of Puppet 2013 - Puppet Camp DC
State of Puppet 2013 - Puppet Camp DCState of Puppet 2013 - Puppet Camp DC
State of Puppet 2013 - Puppet Camp DCPuppet
 
VA Smalltalk Update
VA Smalltalk UpdateVA Smalltalk Update
VA Smalltalk UpdateESUG
 
Preparing for SRE Interviews
Preparing for SRE InterviewsPreparing for SRE Interviews
Preparing for SRE InterviewsShivam Mitra
 
.NET microservices with Azure Service Fabric
.NET microservices with Azure Service Fabric.NET microservices with Azure Service Fabric
.NET microservices with Azure Service FabricDavide Benvegnù
 
Building RESTful APIs
Building RESTful APIsBuilding RESTful APIs
Building RESTful APIsSilota Inc.
 
Создание API, которое полюбят разработчики. Глубокое погружение
Создание API, которое полюбят разработчики. Глубокое погружениеСоздание API, которое полюбят разработчики. Глубокое погружение
Создание API, которое полюбят разработчики. Глубокое погружениеSQALab
 

Semelhante a Tapir user manager (20)

CakePHP, cakePHP development Company
CakePHP, cakePHP development CompanyCakePHP, cakePHP development Company
CakePHP, cakePHP development Company
 
Web Services PHP Tutorial
Web Services PHP TutorialWeb Services PHP Tutorial
Web Services PHP Tutorial
 
Api crash
Api crashApi crash
Api crash
 
Api crash
Api crashApi crash
Api crash
 
Api crash
Api crashApi crash
Api crash
 
Api crash
Api crashApi crash
Api crash
 
Api crash
Api crashApi crash
Api crash
 
Api crash
Api crashApi crash
Api crash
 
Api crash
Api crashApi crash
Api crash
 
Adding Support for Networking and Web Technologies to an Embedded System
Adding Support for Networking and Web Technologies to an Embedded SystemAdding Support for Networking and Web Technologies to an Embedded System
Adding Support for Networking and Web Technologies to an Embedded System
 
Deploying and Managing PowerPivot for SharePoint
Deploying and Managing PowerPivot for SharePointDeploying and Managing PowerPivot for SharePoint
Deploying and Managing PowerPivot for SharePoint
 
Puppet Keynote by Ralph Luchs
Puppet Keynote by Ralph LuchsPuppet Keynote by Ralph Luchs
Puppet Keynote by Ralph Luchs
 
State of Puppet 2013 - Puppet Camp DC
State of Puppet 2013 - Puppet Camp DCState of Puppet 2013 - Puppet Camp DC
State of Puppet 2013 - Puppet Camp DC
 
M meijer api management - tech-days 2015
M meijer   api management - tech-days 2015M meijer   api management - tech-days 2015
M meijer api management - tech-days 2015
 
VA Smalltalk Update
VA Smalltalk UpdateVA Smalltalk Update
VA Smalltalk Update
 
Preparing for SRE Interviews
Preparing for SRE InterviewsPreparing for SRE Interviews
Preparing for SRE Interviews
 
.NET microservices with Azure Service Fabric
.NET microservices with Azure Service Fabric.NET microservices with Azure Service Fabric
.NET microservices with Azure Service Fabric
 
Building RESTful APIs
Building RESTful APIsBuilding RESTful APIs
Building RESTful APIs
 
Powering up on power shell avengercon - 2018
Powering up on power shell   avengercon - 2018Powering up on power shell   avengercon - 2018
Powering up on power shell avengercon - 2018
 
Создание API, которое полюбят разработчики. Глубокое погружение
Создание API, которое полюбят разработчики. Глубокое погружениеСоздание API, которое полюбят разработчики. Глубокое погружение
Создание API, которое полюбят разработчики. Глубокое погружение
 

Mais de Paul Houle

Chatbots in 2017 -- Ithaca Talk Dec 6
Chatbots in 2017 -- Ithaca Talk Dec 6Chatbots in 2017 -- Ithaca Talk Dec 6
Chatbots in 2017 -- Ithaca Talk Dec 6Paul Houle
 
Estimating the Software Product Value during the Development Process
Estimating the Software Product Value during the Development ProcessEstimating the Software Product Value during the Development Process
Estimating the Software Product Value during the Development ProcessPaul Houle
 
Universal Standards for LEI and other Corporate Reference Data: Enabling risk...
Universal Standards for LEI and other Corporate Reference Data: Enabling risk...Universal Standards for LEI and other Corporate Reference Data: Enabling risk...
Universal Standards for LEI and other Corporate Reference Data: Enabling risk...Paul Houle
 
Fixing a leaky bucket; Observations on the Global LEI System
Fixing a leaky bucket; Observations on the Global LEI SystemFixing a leaky bucket; Observations on the Global LEI System
Fixing a leaky bucket; Observations on the Global LEI SystemPaul Houle
 
Cisco Fog Strategy For Big and Smart Data
Cisco Fog Strategy For Big and Smart DataCisco Fog Strategy For Big and Smart Data
Cisco Fog Strategy For Big and Smart DataPaul Houle
 
Making the semantic web work
Making the semantic web workMaking the semantic web work
Making the semantic web workPaul Houle
 
Ontology2 platform
Ontology2 platformOntology2 platform
Ontology2 platformPaul Houle
 
Ontology2 Platform Evolution
Ontology2 Platform EvolutionOntology2 Platform Evolution
Ontology2 Platform EvolutionPaul Houle
 
Paul houle the supermen
Paul houle   the supermenPaul houle   the supermen
Paul houle the supermenPaul Houle
 
Paul houle what ails enterprise search
Paul houle   what ails enterprise search Paul houle   what ails enterprise search
Paul houle what ails enterprise search Paul Houle
 
Subjective Importance Smackdown
Subjective Importance SmackdownSubjective Importance Smackdown
Subjective Importance SmackdownPaul Houle
 
Extension methods, nulls, namespaces and precedence in c#
Extension methods, nulls, namespaces and precedence in c#Extension methods, nulls, namespaces and precedence in c#
Extension methods, nulls, namespaces and precedence in c#Paul Houle
 
Dropping unique constraints in sql server
Dropping unique constraints in sql serverDropping unique constraints in sql server
Dropping unique constraints in sql serverPaul Houle
 
Prefix casting versus as-casting in c#
Prefix casting versus as-casting in c#Prefix casting versus as-casting in c#
Prefix casting versus as-casting in c#Paul Houle
 
Paul houle resume
Paul houle resumePaul houle resume
Paul houle resumePaul Houle
 
Keeping track of state in asynchronous callbacks
Keeping track of state in asynchronous callbacksKeeping track of state in asynchronous callbacks
Keeping track of state in asynchronous callbacksPaul Houle
 
Embrace dynamic PHP
Embrace dynamic PHPEmbrace dynamic PHP
Embrace dynamic PHPPaul Houle
 
Once asynchronous, always asynchronous
Once asynchronous, always asynchronousOnce asynchronous, always asynchronous
Once asynchronous, always asynchronousPaul Houle
 
What do you do when you’ve caught an exception?
What do you do when you’ve caught an exception?What do you do when you’ve caught an exception?
What do you do when you’ve caught an exception?Paul Houle
 
Extension methods, nulls, namespaces and precedence in c#
Extension methods, nulls, namespaces and precedence in c#Extension methods, nulls, namespaces and precedence in c#
Extension methods, nulls, namespaces and precedence in c#Paul Houle
 

Mais de Paul Houle (20)

Chatbots in 2017 -- Ithaca Talk Dec 6
Chatbots in 2017 -- Ithaca Talk Dec 6Chatbots in 2017 -- Ithaca Talk Dec 6
Chatbots in 2017 -- Ithaca Talk Dec 6
 
Estimating the Software Product Value during the Development Process
Estimating the Software Product Value during the Development ProcessEstimating the Software Product Value during the Development Process
Estimating the Software Product Value during the Development Process
 
Universal Standards for LEI and other Corporate Reference Data: Enabling risk...
Universal Standards for LEI and other Corporate Reference Data: Enabling risk...Universal Standards for LEI and other Corporate Reference Data: Enabling risk...
Universal Standards for LEI and other Corporate Reference Data: Enabling risk...
 
Fixing a leaky bucket; Observations on the Global LEI System
Fixing a leaky bucket; Observations on the Global LEI SystemFixing a leaky bucket; Observations on the Global LEI System
Fixing a leaky bucket; Observations on the Global LEI System
 
Cisco Fog Strategy For Big and Smart Data
Cisco Fog Strategy For Big and Smart DataCisco Fog Strategy For Big and Smart Data
Cisco Fog Strategy For Big and Smart Data
 
Making the semantic web work
Making the semantic web workMaking the semantic web work
Making the semantic web work
 
Ontology2 platform
Ontology2 platformOntology2 platform
Ontology2 platform
 
Ontology2 Platform Evolution
Ontology2 Platform EvolutionOntology2 Platform Evolution
Ontology2 Platform Evolution
 
Paul houle the supermen
Paul houle   the supermenPaul houle   the supermen
Paul houle the supermen
 
Paul houle what ails enterprise search
Paul houle   what ails enterprise search Paul houle   what ails enterprise search
Paul houle what ails enterprise search
 
Subjective Importance Smackdown
Subjective Importance SmackdownSubjective Importance Smackdown
Subjective Importance Smackdown
 
Extension methods, nulls, namespaces and precedence in c#
Extension methods, nulls, namespaces and precedence in c#Extension methods, nulls, namespaces and precedence in c#
Extension methods, nulls, namespaces and precedence in c#
 
Dropping unique constraints in sql server
Dropping unique constraints in sql serverDropping unique constraints in sql server
Dropping unique constraints in sql server
 
Prefix casting versus as-casting in c#
Prefix casting versus as-casting in c#Prefix casting versus as-casting in c#
Prefix casting versus as-casting in c#
 
Paul houle resume
Paul houle resumePaul houle resume
Paul houle resume
 
Keeping track of state in asynchronous callbacks
Keeping track of state in asynchronous callbacksKeeping track of state in asynchronous callbacks
Keeping track of state in asynchronous callbacks
 
Embrace dynamic PHP
Embrace dynamic PHPEmbrace dynamic PHP
Embrace dynamic PHP
 
Once asynchronous, always asynchronous
Once asynchronous, always asynchronousOnce asynchronous, always asynchronous
Once asynchronous, always asynchronous
 
What do you do when you’ve caught an exception?
What do you do when you’ve caught an exception?What do you do when you’ve caught an exception?
What do you do when you’ve caught an exception?
 
Extension methods, nulls, namespaces and precedence in c#
Extension methods, nulls, namespaces and precedence in c#Extension methods, nulls, namespaces and precedence in c#
Extension methods, nulls, namespaces and precedence in c#
 

Último

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 

Último (20)

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 

Tapir user manager

  • 1. Tapir User Manager Paul Houle, Library Systems, CU Library http://www.honeylocust.com/x/products/tum/ Ph18@cornell.edu
  • 2. TUM Features • Cookie-based authentication • Optional self-registration • w/ e-mail address verification • Automatic password resets • Simple to integrate into existing applications • Supports PHP and Perl applications • Advanced Administrative Interface • Add or Update User Records • Real-time graphing • E-mail sending to users
  • 3. Why not Apache auth? Apache’s authentication is integrated with the web server, BUT: •Users can’t log out • No support for permanent login • No automatic password reset • Password file must be edited by hand
  • 4. Web Portals A web portal is a collection of web applications that share: • Common visual appearance • A single user database User management is necessary for administrative screens, community, e-commerce, content management, etc.
  • 5. The web software crisis Two kinds of open-source and commercial web software: • Frameworks • Provide user management, templating, and other services, BUT • Have a high-learning curve and almost always do something seriously wrong. • Applications • Many excellent apps exist, but since there’s no standard, they don’t share a user database. So we re-invent the wheel for every site…
  • 6. Performance Goals Appropriate for small to large sites: • PHP/MySQL combination is easy to install and maintain • Supports > 1 M hits/day • Doesn’t need to hit database to authenticate • Supports > 1 M users • Supports horizontal scaling Experience: TUM exceeds above goals.
  • 7. What it doesn’t do It’s important to guarantee performance and reliability, so: • We don’t support other databases • We don’t support other user database backends, i.e. • LDAP • Web services Integration with outside services, for better or worse, is by copying information. • No (intrinsic) defense against packet sniffing.
  • 8. Toolset Based on market-leading tools for top performance, reliability and maintainability: •Apache 2 web server • PHP 4 (transitioning to 5) • MySQL 4.0 (transitioning to 4.1) Secondary tools: • Smarty templating system • jpGraph (real-time graphing)
  • 9. Programmers Eye View require_once “tapir_auth.php”; $auth=new Tapir_Auth(); // For personalization… $auth->optional(); // To control access.. $auth->required(); $email=$auth->get_email(); $first_name=$auth->get_first_name();
  • 10. Authentication Object $auth->required() and related functions are about 200 lines of code in most languages. By implementing the ‘Tapir_Auth’ object in a language (say Java, TCL), applications written in that language can use TUM authentication and benefit from the TUM UI written in PHP. Applications have the full power of SQL to access the user db. TUM is based on open standards (cookies, SQL) and avoids roach motels (session-variable facilities and proprietary object databases.)
  • 11. Database access Supports a single database connection per script, lazy connection creation, interoperation with other MySQL APIs, robust error handling and convenience: $count= $auth->conn->select_scalar( “SELECT COUNT(*) FROM tapir_users”)
  • 12. Session Cookies Based on “Do’s and Don’ts of Client Authentication on the Web” http://cookies.lcs.mit.edu/pubs/webauth:tr.pdf 398927:1:132.236.212.35:1097859122:15:oQjG5oe2T6uMmlvHyS7CnBte/d4 Session Id Ip address Capabilities Timestamp User Id Cryptographic Hash Cookies are reissued when timestamp is > 10 m old. SHA1 hash with secret protects cookie from forgery or alteration.
  • 13. Other Cookies tapir_permanent: Secret token for permanent login like Amazon, Yahoo. tapir_browser: Standard cookie issued by Apache’s mod_usertrack to track browsers If we add SSL support, we’ll also add a tapir_secure cookie that only travels over SSL.
  • 14. Customization • A site can provide templates (plain PHP or smarty) for both the user and admin pages • Namespace conventions allow sites to add own tables and columns to tapir_ tables • Numerous hooks provided to allow modification of login and registration behavior (can replace forms, talk to external systems, etc.) • Much of the admin UI is table-driven, much customization is almost trivial. • Configuration management system lets local sites replace files, and configure PHP, Perl and Apache configuration files with M4 macros
  • 16. UI: Devil in the Details • Jacob Nielsen: • Authentication is a major barrier to usability • Many processes on commercial web sites have <50% success rate •With Tivejo, we increased the registration success rate from 60% to 85%, arXiv attains nearly 95% •Base 32t coding for (e-mail verification, password reset, and other) tokens: 60-bit security in 12 easyto-type characters, insensitive to case and common errors such as 0/O and 1/L confusion K8TLTI-78FKTR
  • 17. Administrative Interface •Benefits from development for multiple projects •Tour: (arXiv.org) • Main screen • Advanced Search • User detail screen • Real-time graphing
  • 18. UI Toolkit • Purposely set out NOT to develop a universal framework, BUT • developing a sophisticated UI that’s consistent and maintainable has required us to develop a framework • the “update protocol” • template system • the “screen” concept • query builder • real-time graphing
  • 19. Case Study: Tivejo • For a while, Brazil’s #1 voice chat service; 250,000+ users and 300,000 hits per day • Web site controlled access to a Windows application, interacted with Paltalk.com via a ‘REST’ web service UDP, peer-to-peer, “VoIP” browser registers chat client authentication, call setup downloads Tivejo www other user web service Paltalk.com Tivejo mail Tivejo db
  • 20. Case Study: LS Wikis Wanted a wiki for both public and private documentation – existing wiki software didn’t support authentication. • Ported TUM to Solaris (install scripts) • Two wikis: •funkenstein: open registration •docs-production: closed registration • Chose PHP Wiki: Wiki Tiki Tavi • About an hour to get authentication minimally working. • Another two days to get everything right
  • 21. Case Study: arXiv.org World’s largest physics publisher: (also math, cs…) •293,000+ papers (nearly 200 submissions/day) •60,000+ registered users Legacy System: Perl CGI scripts, using filesystem for paper storage and Berkeley DB for user database. Very messy data, some users aren’t even registered, not possible to determine submitter of all papers Requirement: Flexible user database so we can implement “endorsements” to control problem submissions.
  • 22. Case Study: arXiv.org II Challenges: • Implement Perl Auth object for legacy scripts • Clean up user database as best possible • Making a complex user interface for endorsement simple for users • Making it easy for administrators to do routine and not-so-routine jobs Still to do: • Move all admin functions to web • Move e-mail subscriptions to web • Require Password option, hide .PHP urls, etc.
  • 23. Conclusion TUM: Best-of-breed user management system, works with (not against) existing applications and mainstream programming methods; incorporates lessons learned from a number of projects; provides the interface that users expect from major commercial sites; convenient to install and administer. http://www.honeylocust.com/x/products/tum/