SlideShare a Scribd company logo
Web Application
Development
Jonathan Yoder
Web Application Engineer
May 16, 2013
Topics for Today
• Single Sign On with CAS
• Lung Cancer Explorer Changes
• Introduction to RESTful Web Services
• RESTful Services
• LCDB
• ProbeMapper
• JSON Table Schema Serialization/Deserialization
• Authentication with CasHmac
• Authorization with CasHmac
• Graph Databases with Neo4j
Single Sign on with CAS
• “Central Authentication Service”
• Open Source Project available at http://www.jasig.org/cas
• Runs on Tomcat (no need for additional servers)
• Integrates with Web Applications without modification
• Proxy Support for Web Services
CAS Authentication Process
Central
Authentication
Server
Web Application
1. Request
3. Ticket
2. Authentication
4. Validation
<ticket>
Lung Cancer Explorer
• Meta Analysis
• Survival Analysis with Group Segmentation
• Dataset Suggestions
• Dataset Filtering
• Analysis Caching with Redis
Intro to RESTful Web Services
• Terminology
• Representational State Transfer
• GET, DELETE, PUT, POST
• Benefits
• Popular and simple (vs. SOAP)
• Responds with valid JavaScript (JSON)
• Supported by many open-source frameworks
• Very easy to consume
• Purpose
• Provide data to applications
• Expose services to outside applications
Example REST Request
http://qbrc.swmed.edu/probemapper/entrez/gen
es?gene_id=3845,51562&taxonomy=9606
Example REST Response
{
"java_type": "edu.swmed.qbrc.probemapper.shared.models.Gene",
"fields": [
...
{
"id": "geneId",
"label": "geneId",
"type": "integer"
},
{
"id": "name",
"label": "name",
"type": "string"
},
...
],
"data": [
[
"12",
"HGNC:6407|MIM:190070|Ensembl:ENSG00000133703|HPRD:01817|Vega:OTTHUMG00000171193",
"v-Ki-ras2 Kirsten rat sarcoma viral oncogene homolog",
3845,
1220665,
"-",
"12p12.1",
"v-Ki-ras2 Kirsten rat sarcoma viral oncogene homolog",
"O",
"KRAS",
"KRAS",
"C-K-RAS|K-RAS2A|K-RAS2B|K-RAS4A|K-RAS4B|KI-RAS|KRAS1|KRAS2|NS|NS3|RASK2",
9606,
"protein-coding"
],
[
"14",
"HGNC:20427|MIM:609431|Ensembl:ENSG00000151332|HPRD:14368|Vega:OTTHUMG00000140222",
"MAP3K12 binding inhibitory protein 1",
51562,
1229582,
"BM-015",
"14q13.3",
"MAP3K12 binding inhibitory protein 1",
"O",
"MBIP",
"MBIP",
"-",
9606,
"protein-coding"
]
]
}
Example REST Response
….
"fields": [
...
{
"id": "geneId",
"label": "geneId",
"type": "integer”
},
{
"id": "name",
"label": "name",
"type": "string”
},
...
],
Example REST Response
"data”:
[[
"12",
"HGNC:6407|MIM:190070|…|HPRD:01817|Vega:OTTHUMG00000171193",
"v-Ki-ras2 Kirsten rat sarcoma viral oncogene homolog",
3845,
1220665,
"-",
"12p12.1",
"v-Ki-ras2 Kirsten rat sarcoma viral oncogene homolog",
"O",
"KRAS",
"KRAS",
"C-K-RAS|K-RAS2A|K-RAS2B|…|KI-RAS|KRAS1|KRAS2|NS|NS3|RASK2",
9606,
"protein-coding"
],
…
]
New RESTful Web Services
• LCDB
• Datasets (GET, DELETE, and PUT)
• Patients (GET, DELETE, and PUT)
• Samples (GET, DELETE, and PUT)
• Expression Data (GET, DELETE, and PUT)
• Histologies
• Normalizations
• Races
• Smoking Statuses
• Tissues
New RESTful Web Services
• ProbeMapper (migrated from SOAP)
• Authorities
• Platforms (GET, DELETE, and PUT)
• Probes (GET, DELETE, and PUT)
• Genes
• Genes for Probes (GET, DELETE, and PUT)
• Probes for Genes
• Lung Cancer Explorer uses ProbeMapper
JSON Table Schema
• For more
information:http://www.dataprotocols.org/en/latest/json-
table-schema.html
• A “simple schema for tabular data”
• Saves bandwidth by assuming a consistent format
• Speeds our implementations of ProbeMapper and LCDB with
our custom Jacksonate serializer/deserializer.
• See https://github.com/QBRC/Jacksonate
• See https://github.com/QBRC/Guiberest
Authentication with CasHmac
• Supports CAS for authentication
• Supports HMAC for authentication
• User has and ID and a Secret Key
• Request information is combined into a string
• User’s Secret Key is used to create a hash from the string
• User’s ID is sent with the request
• Server looks up user’s Secret Key based on ID
• Server recreates hash and verifies that it matches the client’s
hash that was included with the request.
• See https://github.com/QBRC/CasHmac
• See https://github.com/QBRC/Guiberest
Authorization with CasHmac
• Method-based authorization by Role
• ACL-based: Access Control List
• Authorization to access/update/delete a specific object
• Authorization may be tied to dependent objects
• Allows us to annotate our classes for security
Graph Databases with Neo4j
• See http://www.neo4j.org/
• Graph Databases:
• Store objects
• Focus on relationships between objects (uses verbs)
• Jonathan -> (is employed by) -> QBRC
• Jeff -> (supervises) -> Jonathan
• Allow very fast retrieval of objects based on their relationships to
one another
• Neo4j and Bioinformatics:
http://watch.neo4j.org/video/47275633
Summary
• Single Sign On with CAS
• Lung Cancer Explorer Changes
• RESTful Services
• Graph Databases with Neo4j

More Related Content

What's hot

Proxy server
Proxy serverProxy server
Proxy server
Dlovan Salih
 
Gateways 2020 Tutorial - Automated Data Ingest and Search with Globus
Gateways 2020 Tutorial - Automated Data Ingest and Search with GlobusGateways 2020 Tutorial - Automated Data Ingest and Search with Globus
Gateways 2020 Tutorial - Automated Data Ingest and Search with Globus
Globus
 
Introduction to the Globus Platform (APS Workshop)
Introduction to the Globus Platform (APS Workshop)Introduction to the Globus Platform (APS Workshop)
Introduction to the Globus Platform (APS Workshop)
Globus
 
Gateways 2020 Tutorial - Large Scale Data Transfer with Globus
Gateways 2020 Tutorial - Large Scale Data Transfer with GlobusGateways 2020 Tutorial - Large Scale Data Transfer with Globus
Gateways 2020 Tutorial - Large Scale Data Transfer with Globus
Globus
 
Using the Cascade Server Web Service API, by Artur Tomusiak
Using the Cascade Server Web Service API, by Artur TomusiakUsing the Cascade Server Web Service API, by Artur Tomusiak
Using the Cascade Server Web Service API, by Artur Tomusiak
hannonhill
 
Connecting Your System to Globus (APS Workshop)
Connecting Your System to Globus (APS Workshop)Connecting Your System to Globus (APS Workshop)
Connecting Your System to Globus (APS Workshop)
Globus
 
Data Orchestration at Scale (GlobusWorld Tour West)
Data Orchestration at Scale (GlobusWorld Tour West)Data Orchestration at Scale (GlobusWorld Tour West)
Data Orchestration at Scale (GlobusWorld Tour West)
Globus
 
CodeMash 2013 Microsoft Data Stack
CodeMash 2013 Microsoft Data StackCodeMash 2013 Microsoft Data Stack
CodeMash 2013 Microsoft Data Stack
Mike Benkovich
 
Automating Research Data Flows with Globus (CHPC 2019 - South Africa)
Automating Research Data Flows with Globus (CHPC 2019 - South Africa)Automating Research Data Flows with Globus (CHPC 2019 - South Africa)
Automating Research Data Flows with Globus (CHPC 2019 - South Africa)
Globus
 
Gateways 2020 Tutorial - Instrument Data Distribution with Globus
Gateways 2020 Tutorial - Instrument Data Distribution with GlobusGateways 2020 Tutorial - Instrument Data Distribution with Globus
Gateways 2020 Tutorial - Instrument Data Distribution with Globus
Globus
 
Extensibility of a database api with js
Extensibility of a database api with jsExtensibility of a database api with js
Extensibility of a database api with jsArangoDB Database
 
Creating data centric microservices
Creating data centric microservicesCreating data centric microservices
Creating data centric microservices
ArangoDB Database
 
Connecting to Data from Windows Phone 8
Connecting to Data from Windows Phone 8Connecting to Data from Windows Phone 8
Connecting to Data from Windows Phone 8
Woodruff Solutions LLC
 

What's hot (13)

Proxy server
Proxy serverProxy server
Proxy server
 
Gateways 2020 Tutorial - Automated Data Ingest and Search with Globus
Gateways 2020 Tutorial - Automated Data Ingest and Search with GlobusGateways 2020 Tutorial - Automated Data Ingest and Search with Globus
Gateways 2020 Tutorial - Automated Data Ingest and Search with Globus
 
Introduction to the Globus Platform (APS Workshop)
Introduction to the Globus Platform (APS Workshop)Introduction to the Globus Platform (APS Workshop)
Introduction to the Globus Platform (APS Workshop)
 
Gateways 2020 Tutorial - Large Scale Data Transfer with Globus
Gateways 2020 Tutorial - Large Scale Data Transfer with GlobusGateways 2020 Tutorial - Large Scale Data Transfer with Globus
Gateways 2020 Tutorial - Large Scale Data Transfer with Globus
 
Using the Cascade Server Web Service API, by Artur Tomusiak
Using the Cascade Server Web Service API, by Artur TomusiakUsing the Cascade Server Web Service API, by Artur Tomusiak
Using the Cascade Server Web Service API, by Artur Tomusiak
 
Connecting Your System to Globus (APS Workshop)
Connecting Your System to Globus (APS Workshop)Connecting Your System to Globus (APS Workshop)
Connecting Your System to Globus (APS Workshop)
 
Data Orchestration at Scale (GlobusWorld Tour West)
Data Orchestration at Scale (GlobusWorld Tour West)Data Orchestration at Scale (GlobusWorld Tour West)
Data Orchestration at Scale (GlobusWorld Tour West)
 
CodeMash 2013 Microsoft Data Stack
CodeMash 2013 Microsoft Data StackCodeMash 2013 Microsoft Data Stack
CodeMash 2013 Microsoft Data Stack
 
Automating Research Data Flows with Globus (CHPC 2019 - South Africa)
Automating Research Data Flows with Globus (CHPC 2019 - South Africa)Automating Research Data Flows with Globus (CHPC 2019 - South Africa)
Automating Research Data Flows with Globus (CHPC 2019 - South Africa)
 
Gateways 2020 Tutorial - Instrument Data Distribution with Globus
Gateways 2020 Tutorial - Instrument Data Distribution with GlobusGateways 2020 Tutorial - Instrument Data Distribution with Globus
Gateways 2020 Tutorial - Instrument Data Distribution with Globus
 
Extensibility of a database api with js
Extensibility of a database api with jsExtensibility of a database api with js
Extensibility of a database api with js
 
Creating data centric microservices
Creating data centric microservicesCreating data centric microservices
Creating data centric microservices
 
Connecting to Data from Windows Phone 8
Connecting to Data from Windows Phone 8Connecting to Data from Windows Phone 8
Connecting to Data from Windows Phone 8
 

Viewers also liked

Stories Inc. Deck
Stories Inc. DeckStories Inc. Deck
Stories Inc. Deck
storiesincorporated
 
Scientific Software Development
Scientific Software DevelopmentScientific Software Development
Scientific Software Development
jalle6
 
Scientific Computing - Hardware
Scientific Computing - HardwareScientific Computing - Hardware
Scientific Computing - Hardware
jalle6
 
Creating R Packages
Creating R PackagesCreating R Packages
Creating R Packages
jalle6
 
Tech talk ggplot2
Tech talk   ggplot2Tech talk   ggplot2
Tech talk ggplot2
jalle6
 
Hype vs. Reality: The AI Explainer
Hype vs. Reality: The AI ExplainerHype vs. Reality: The AI Explainer
Hype vs. Reality: The AI Explainer
Luminary Labs
 

Viewers also liked (6)

Stories Inc. Deck
Stories Inc. DeckStories Inc. Deck
Stories Inc. Deck
 
Scientific Software Development
Scientific Software DevelopmentScientific Software Development
Scientific Software Development
 
Scientific Computing - Hardware
Scientific Computing - HardwareScientific Computing - Hardware
Scientific Computing - Hardware
 
Creating R Packages
Creating R PackagesCreating R Packages
Creating R Packages
 
Tech talk ggplot2
Tech talk   ggplot2Tech talk   ggplot2
Tech talk ggplot2
 
Hype vs. Reality: The AI Explainer
Hype vs. Reality: The AI ExplainerHype vs. Reality: The AI Explainer
Hype vs. Reality: The AI Explainer
 

Similar to Group meeting may 16 2013

JakartaOne Livestream CN4J: Eclipse MicroProfile - Your Cloud-Native Companion
JakartaOne Livestream CN4J: Eclipse MicroProfile - Your Cloud-Native CompanionJakartaOne Livestream CN4J: Eclipse MicroProfile - Your Cloud-Native Companion
JakartaOne Livestream CN4J: Eclipse MicroProfile - Your Cloud-Native Companion
Jakarta_EE
 
API Testing. Streamline your testing process.
API Testing. Streamline your testing process.API Testing. Streamline your testing process.
API Testing. Streamline your testing process.
Andrey Oleynik
 
Evolution of integration and microservices patterns with service mesh
Evolution of integration and microservices patterns with service meshEvolution of integration and microservices patterns with service mesh
Evolution of integration and microservices patterns with service mesh
Christian Posta
 
Microservices for Systematic Profiling and Monitoring of the Refactoring
Microservices for Systematic Profiling and Monitoring of the RefactoringMicroservices for Systematic Profiling and Monitoring of the Refactoring
Microservices for Systematic Profiling and Monitoring of the Refactoring
Alexander Mazurov
 
ASP.NET MVC 5 and SignalR 2
ASP.NET MVC 5 and SignalR 2ASP.NET MVC 5 and SignalR 2
ASP.NET MVC 5 and SignalR 2
Jaliya Udagedara
 
(ATS6-PLAT04) Query service
(ATS6-PLAT04) Query service (ATS6-PLAT04) Query service
(ATS6-PLAT04) Query service
BIOVIA
 
Microservices and Integration: what's next with Istio service mesh
Microservices and Integration: what's next with Istio service meshMicroservices and Integration: what's next with Istio service mesh
Microservices and Integration: what's next with Istio service mesh
Christian Posta
 
Restful风格ž„web服务架构
Restful风格ž„web服务架构Restful风格ž„web服务架构
Restful风格ž„web服务架构
Benjamin Tan
 
RESTful web
RESTful webRESTful web
RESTful web
Alvin Qi
 
Arabidopsis Information Portal, Developer Workshop 2014, Introduction
Arabidopsis Information Portal, Developer Workshop 2014, IntroductionArabidopsis Information Portal, Developer Workshop 2014, Introduction
Arabidopsis Information Portal, Developer Workshop 2014, Introduction
JasonRafeMiller
 
End-to-end W3C APIs - tpac 2012
End-to-end W3C APIs - tpac 2012End-to-end W3C APIs - tpac 2012
End-to-end W3C APIs - tpac 2012
Alexandre Morgaut
 
Building microservices with vert.x 3.0
Building microservices with vert.x 3.0Building microservices with vert.x 3.0
Building microservices with vert.x 3.0
Agraj Mangal
 
Azure signalr service
Azure signalr serviceAzure signalr service
Azure signalr service
Udaiappa Ramachandran
 
Microservices with Apache Camel, Docker and Fabric8 v2
Microservices with Apache Camel, Docker and Fabric8 v2Microservices with Apache Camel, Docker and Fabric8 v2
Microservices with Apache Camel, Docker and Fabric8 v2
Christian Posta
 
Web Technologies in Java EE 7
Web Technologies in Java EE 7Web Technologies in Java EE 7
Web Technologies in Java EE 7Lukáš Fryč
 
Windows 8 Apps and the Outside World
Windows 8 Apps and the Outside WorldWindows 8 Apps and the Outside World
Data Stream Processing for Beginners with Kafka and CDC
Data Stream Processing for Beginners with Kafka and CDCData Stream Processing for Beginners with Kafka and CDC
Data Stream Processing for Beginners with Kafka and CDC
Abhijit Kumar
 
Windows 8 Metro apps and the outside world
Windows 8 Metro apps and the outside worldWindows 8 Metro apps and the outside world
Windows 8 Metro apps and the outside world
Prabhakaran Soundarapandian
 
IT2255 Web Essentials - Unit V Servlets and Database Connectivity
IT2255 Web Essentials - Unit V Servlets and Database ConnectivityIT2255 Web Essentials - Unit V Servlets and Database Connectivity
IT2255 Web Essentials - Unit V Servlets and Database Connectivity
pkaviya
 
REST API Recommendations
REST API RecommendationsREST API Recommendations
REST API RecommendationsJeelani Shaik
 

Similar to Group meeting may 16 2013 (20)

JakartaOne Livestream CN4J: Eclipse MicroProfile - Your Cloud-Native Companion
JakartaOne Livestream CN4J: Eclipse MicroProfile - Your Cloud-Native CompanionJakartaOne Livestream CN4J: Eclipse MicroProfile - Your Cloud-Native Companion
JakartaOne Livestream CN4J: Eclipse MicroProfile - Your Cloud-Native Companion
 
API Testing. Streamline your testing process.
API Testing. Streamline your testing process.API Testing. Streamline your testing process.
API Testing. Streamline your testing process.
 
Evolution of integration and microservices patterns with service mesh
Evolution of integration and microservices patterns with service meshEvolution of integration and microservices patterns with service mesh
Evolution of integration and microservices patterns with service mesh
 
Microservices for Systematic Profiling and Monitoring of the Refactoring
Microservices for Systematic Profiling and Monitoring of the RefactoringMicroservices for Systematic Profiling and Monitoring of the Refactoring
Microservices for Systematic Profiling and Monitoring of the Refactoring
 
ASP.NET MVC 5 and SignalR 2
ASP.NET MVC 5 and SignalR 2ASP.NET MVC 5 and SignalR 2
ASP.NET MVC 5 and SignalR 2
 
(ATS6-PLAT04) Query service
(ATS6-PLAT04) Query service (ATS6-PLAT04) Query service
(ATS6-PLAT04) Query service
 
Microservices and Integration: what's next with Istio service mesh
Microservices and Integration: what's next with Istio service meshMicroservices and Integration: what's next with Istio service mesh
Microservices and Integration: what's next with Istio service mesh
 
Restful风格ž„web服务架构
Restful风格ž„web服务架构Restful风格ž„web服务架构
Restful风格ž„web服务架构
 
RESTful web
RESTful webRESTful web
RESTful web
 
Arabidopsis Information Portal, Developer Workshop 2014, Introduction
Arabidopsis Information Portal, Developer Workshop 2014, IntroductionArabidopsis Information Portal, Developer Workshop 2014, Introduction
Arabidopsis Information Portal, Developer Workshop 2014, Introduction
 
End-to-end W3C APIs - tpac 2012
End-to-end W3C APIs - tpac 2012End-to-end W3C APIs - tpac 2012
End-to-end W3C APIs - tpac 2012
 
Building microservices with vert.x 3.0
Building microservices with vert.x 3.0Building microservices with vert.x 3.0
Building microservices with vert.x 3.0
 
Azure signalr service
Azure signalr serviceAzure signalr service
Azure signalr service
 
Microservices with Apache Camel, Docker and Fabric8 v2
Microservices with Apache Camel, Docker and Fabric8 v2Microservices with Apache Camel, Docker and Fabric8 v2
Microservices with Apache Camel, Docker and Fabric8 v2
 
Web Technologies in Java EE 7
Web Technologies in Java EE 7Web Technologies in Java EE 7
Web Technologies in Java EE 7
 
Windows 8 Apps and the Outside World
Windows 8 Apps and the Outside WorldWindows 8 Apps and the Outside World
Windows 8 Apps and the Outside World
 
Data Stream Processing for Beginners with Kafka and CDC
Data Stream Processing for Beginners with Kafka and CDCData Stream Processing for Beginners with Kafka and CDC
Data Stream Processing for Beginners with Kafka and CDC
 
Windows 8 Metro apps and the outside world
Windows 8 Metro apps and the outside worldWindows 8 Metro apps and the outside world
Windows 8 Metro apps and the outside world
 
IT2255 Web Essentials - Unit V Servlets and Database Connectivity
IT2255 Web Essentials - Unit V Servlets and Database ConnectivityIT2255 Web Essentials - Unit V Servlets and Database Connectivity
IT2255 Web Essentials - Unit V Servlets and Database Connectivity
 
REST API Recommendations
REST API RecommendationsREST API Recommendations
REST API Recommendations
 

Recently uploaded

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
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
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
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
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
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
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
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Inflectra
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
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
 
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
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
g2nightmarescribd
 
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
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
Elena Simperl
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Jeffrey Haguewood
 

Recently uploaded (20)

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...
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
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...
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
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...
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
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
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
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...
 
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
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
 
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...
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 

Group meeting may 16 2013

  • 1. Web Application Development Jonathan Yoder Web Application Engineer May 16, 2013
  • 2. Topics for Today • Single Sign On with CAS • Lung Cancer Explorer Changes • Introduction to RESTful Web Services • RESTful Services • LCDB • ProbeMapper • JSON Table Schema Serialization/Deserialization • Authentication with CasHmac • Authorization with CasHmac • Graph Databases with Neo4j
  • 3. Single Sign on with CAS • “Central Authentication Service” • Open Source Project available at http://www.jasig.org/cas • Runs on Tomcat (no need for additional servers) • Integrates with Web Applications without modification • Proxy Support for Web Services
  • 4. CAS Authentication Process Central Authentication Server Web Application 1. Request 3. Ticket 2. Authentication 4. Validation <ticket>
  • 5. Lung Cancer Explorer • Meta Analysis • Survival Analysis with Group Segmentation • Dataset Suggestions • Dataset Filtering • Analysis Caching with Redis
  • 6. Intro to RESTful Web Services • Terminology • Representational State Transfer • GET, DELETE, PUT, POST • Benefits • Popular and simple (vs. SOAP) • Responds with valid JavaScript (JSON) • Supported by many open-source frameworks • Very easy to consume • Purpose • Provide data to applications • Expose services to outside applications
  • 8. Example REST Response { "java_type": "edu.swmed.qbrc.probemapper.shared.models.Gene", "fields": [ ... { "id": "geneId", "label": "geneId", "type": "integer" }, { "id": "name", "label": "name", "type": "string" }, ... ], "data": [ [ "12", "HGNC:6407|MIM:190070|Ensembl:ENSG00000133703|HPRD:01817|Vega:OTTHUMG00000171193", "v-Ki-ras2 Kirsten rat sarcoma viral oncogene homolog", 3845, 1220665, "-", "12p12.1", "v-Ki-ras2 Kirsten rat sarcoma viral oncogene homolog", "O", "KRAS", "KRAS", "C-K-RAS|K-RAS2A|K-RAS2B|K-RAS4A|K-RAS4B|KI-RAS|KRAS1|KRAS2|NS|NS3|RASK2", 9606, "protein-coding" ], [ "14", "HGNC:20427|MIM:609431|Ensembl:ENSG00000151332|HPRD:14368|Vega:OTTHUMG00000140222", "MAP3K12 binding inhibitory protein 1", 51562, 1229582, "BM-015", "14q13.3", "MAP3K12 binding inhibitory protein 1", "O", "MBIP", "MBIP", "-", 9606, "protein-coding" ] ] }
  • 9. Example REST Response …. "fields": [ ... { "id": "geneId", "label": "geneId", "type": "integer” }, { "id": "name", "label": "name", "type": "string” }, ... ],
  • 10. Example REST Response "data”: [[ "12", "HGNC:6407|MIM:190070|…|HPRD:01817|Vega:OTTHUMG00000171193", "v-Ki-ras2 Kirsten rat sarcoma viral oncogene homolog", 3845, 1220665, "-", "12p12.1", "v-Ki-ras2 Kirsten rat sarcoma viral oncogene homolog", "O", "KRAS", "KRAS", "C-K-RAS|K-RAS2A|K-RAS2B|…|KI-RAS|KRAS1|KRAS2|NS|NS3|RASK2", 9606, "protein-coding" ], … ]
  • 11. New RESTful Web Services • LCDB • Datasets (GET, DELETE, and PUT) • Patients (GET, DELETE, and PUT) • Samples (GET, DELETE, and PUT) • Expression Data (GET, DELETE, and PUT) • Histologies • Normalizations • Races • Smoking Statuses • Tissues
  • 12. New RESTful Web Services • ProbeMapper (migrated from SOAP) • Authorities • Platforms (GET, DELETE, and PUT) • Probes (GET, DELETE, and PUT) • Genes • Genes for Probes (GET, DELETE, and PUT) • Probes for Genes • Lung Cancer Explorer uses ProbeMapper
  • 13. JSON Table Schema • For more information:http://www.dataprotocols.org/en/latest/json- table-schema.html • A “simple schema for tabular data” • Saves bandwidth by assuming a consistent format • Speeds our implementations of ProbeMapper and LCDB with our custom Jacksonate serializer/deserializer. • See https://github.com/QBRC/Jacksonate • See https://github.com/QBRC/Guiberest
  • 14. Authentication with CasHmac • Supports CAS for authentication • Supports HMAC for authentication • User has and ID and a Secret Key • Request information is combined into a string • User’s Secret Key is used to create a hash from the string • User’s ID is sent with the request • Server looks up user’s Secret Key based on ID • Server recreates hash and verifies that it matches the client’s hash that was included with the request. • See https://github.com/QBRC/CasHmac • See https://github.com/QBRC/Guiberest
  • 15. Authorization with CasHmac • Method-based authorization by Role • ACL-based: Access Control List • Authorization to access/update/delete a specific object • Authorization may be tied to dependent objects • Allows us to annotate our classes for security
  • 16. Graph Databases with Neo4j • See http://www.neo4j.org/ • Graph Databases: • Store objects • Focus on relationships between objects (uses verbs) • Jonathan -> (is employed by) -> QBRC • Jeff -> (supervises) -> Jonathan • Allow very fast retrieval of objects based on their relationships to one another • Neo4j and Bioinformatics: http://watch.neo4j.org/video/47275633
  • 17. Summary • Single Sign On with CAS • Lung Cancer Explorer Changes • RESTful Services • Graph Databases with Neo4j