vcommander will use SSL and session-based authentication to secure REST web services.



Similar documents
Copyright 2013 Consona Corporation. All rights reserved

REST API Getting Started Guide

BlackBerry Enterprise Service 10. Secure Work Space for ios and Android Version: Security Note

Fairsail REST API: Guide for Developers

SAML-Based SSO Solution

Kaseya 2. User Guide. Version 6.1

vcloud Air Platform Programmer's Guide

Configuring Single Sign-On from the VMware Identity Manager Service to Office 365

Axway API Gateway. Version 7.4.1

Progress OpenEdge REST

Software Architecture Document

SmarterMeasure Inbound Single Sign On (SSO) Version 1.3 Copyright 2010 SmarterServices, LLC / SmarterServices.com PO Box , Deatsville, AL 36022

Use Enterprise SSO as the Credential Server for Protected Sites

Twinfield Single Sign On

OpenLDAP Oracle Enterprise Gateway Integration Guide

Using Foundstone CookieDigger to Analyze Web Session Management

Riverbed Cascade Shark Common REST API v1.0

RoomWizard Synchronization Software Manual Installation Instructions

Data Collection and Analysis: Get End-to-End Security with Cisco Connected Analytics for Network Deployment

API documentation - 1 -

Single Sign-On Implementation Guide

Transport Layer Security Protocols

Oracle Fusion Middleware Oracle API Gateway OAuth User Guide 11g Release 2 ( )

Check list for web developers

Certified Secure Web Application Secure Development Checklist

PowerCenter Real-Time Development

Criteria for web application security check. Version

Interwise Connect. Working with Reverse Proxy Version 7.x

Webmail Using the Hush Encryption Engine

How to Logon with Domain Credentials to a Server in a Workgroup

Securing JAX-RS RESTful services. Miroslav Fuksa (software developer) Michal Gajdoš (software developer)

Novell Access Manager

Creating a Secure Web Service In Informatica Data Services

Sage CRM Connector Tool White Paper

/ Preparing to Manage a VMware Environment Page 1

Configuring Single Sign-on for WebVPN

Authentication and Single Sign On


Table of Contents. Open-Xchange Authentication & Session Handling. 1.Introduction...3

Okta/Dropbox Active Directory Integration Guide

e-filing Secure Web Service User Manual

IBM SPSS Collaboration and Deployment Services Version 6 Release 0. Single Sign-On Services Developer's Guide

Jobs Guide Identity Manager February 10, 2012

Virtual Contact Center

Onset Computer Corporation

TIBCO Spotfire Platform IT Brief

Message Containers and API Framework

PaperCut Payment Gateway Module - PayPal Payflow Link - Quick Start Guide

SSO Plugin. HP Service Request Catalog. J System Solutions. Version 3.6

Spring Security 3.

IT Exam Training online / Bootcamp

Oracle Communications Cartridge Feature Specification for Broadsoft Broadworks Enterprise Services

Configuring Outlook to send mail via your Exchange mailbox using an alternative address

BlackBerry Enterprise Service 10. Version: Configuration Guide

Web Security (SSL) Tecniche di Sicurezza dei Sistemi 1

Tenrox. Single Sign-On (SSO) Setup Guide. January, Tenrox. All rights reserved.

Reverse Proxy Guide. Version 2.0 April 2016

Custom Encryption in Siebel & Siebel Web Service Security Test Guide 1.0

Configuration Guide. BES12 Cloud

Integrating LANGuardian with Active Directory

Managing Qualys Scanners

Force.com REST API Developer's Guide

Grandstream Networks, Inc.

Setup Guide Access Manager 3.2 SP3

Password Reset Server Installation Guide Windows 8 / 8.1 Windows Server 2012 / R2

Mobile Security Jump Start. Wayne Henshaw & Mike Jacobs Progress OpenEdge October 8, 2013

OAuth 2.0 Developers Guide. Ping Identity, Inc th Street, Suite 100, Denver, CO

Software Requirement Specification Web Services Security

Siteminder Integration Guide

Microsoft Active Directory Oracle Enterprise Gateway Integration Guide

Semantic based Web Application Firewall (SWAF V 1.6) Operations and User Manual. Document Version 1.0

Lepide Active Directory Self Service. Configuration Guide. Follow the simple steps given in this document to start working with

PaperCut Payment Gateway Module - PayPal Payflow Link - Quick Start Guide

Advanced Service Design

Improving performance for security enabled web services. - Dr. Colm Ó héigeartaigh

Introduction to the EIS Guide

Configuring Nex-Gen Web Load Balancer

Exploiting the Web with Tivoli Storage Manager

Identity Server Guide Access Manager 4.0

Perceptive Content Security

Copyright 2012, Oracle and/or its affiliates. All rights reserved.

DottsConnected SHAREPOINT 2010 ADMIN TRAINING. Exercise 1: Create Dedicated Service Accounts in Active Directory

Security Testing For RESTful Applications

BlackBerry Enterprise Service 10. Universal Device Service Version: Administration Guide

Xerox DocuShare Security Features. Security White Paper

Entrust IdentityGuard Comprehensive

Perceptive Experience Single Sign-On Solutions

How to Configure Captive Portal

Replacements TECHNICAL REFERENCE. DTCCSOLUTIONS Dec Copyright 2009 Depository Trust Clearing Corporation. All Rights Reserved.

WEB SERVICES TEST AUTOMATION

redcoal SMS for MS Outlook and Lotus Notes

An Interface from YAWL to OpenERP

Ensuring the security of your mobile business intelligence

Certified Secure Web Application Security Test Checklist

Contents About the Contract Management Post Installation Administrator's Guide... 5 Viewing and Modifying Contract Management Settings...

Enterprise Self Service Quick start Guide

PeopleSoft Enterprise Campus Solutions 9.0 Enrollment Web Services

Implementation Guide SAP NetWeaver Identity Management Identity Provider

THE BCS PROFESSIONAL EXAMINATIONS BCS Level 6 Professional Graduate Diploma in IT. April 2009 EXAMINERS' REPORT. Network Information Systems

Transcription:

vcommander REST API Draft Proposal v1.1 1. Client Authentication vcommander will use SSL and session-based authentication to secure REST web services. 1. All REST API calls must take place over HTTPS 2. All REST API calls must have a security token (access token) in the http header of each API call a. This token is provided when client authenticate with the vcommander service Login Operation: POST /sessions Description: To authenticate to the API service, POST a request to its login URL. The request body must contain a MIME Base64 encoding of the client credentials in the form: user@organization:password (domain credential) or user:password (local user) Output: A HTTP response is return along with a security token in the header. The security token is in this format: securitytoken: token Notes: This security token is required in all subsequent API requests to the service. This security token must be transmitted to the service via the HTTP header. This security token has an expiry date that is configurable within vcommander. As long as requests are made within this time frame, the expiry date of this security token will be extended. Expired security token requires the client to re-authenticate. Example: Request HTTP 1.1 POST / webservices/services/ VCommanderRestV10/sessions Response Body: PZQkW0HUSFQVeNyZO5uu/TzQie6YYXQdEifBhdL05A

HTTP/1.1 200 OK Headers: securitytoken : DCFyZO0HUSF5uuS0HUSFDGSGif0HUSFBhD=!bob Logout Operation: DELETE /sessions/{securitytoken} Description: To logout and terminate vcommander REST API session, delete the session you created when you logged in. Output: A HTTP response (200 OK) if successful. Notes: This request, like all other authenticated requests, must include the security token in the HTTP header. Example: Request HTTP 1.1 DELETE / webservices/services/ VCommanderRestV10/sessions/ DCFyZO0HUSF5uuS0HUSFDGSGif0HUSFBhD=!bob Response HTTP/1.1 200 OK

A session overview Supplemental Details 1. The above approach is secure enough when using HTTPS. If we wish, we could go future by sending in the username and password encoded with a MD5 digest 2. Query Authentication with additional signature parameters : APIs calls can be authenticated but this make the URL less concise and harder to debug (see Reference #2 below) 3. A session managed on the server is not truly stateless, but this is where purist REST is not what we want.

2. API Version vcommander REST service versioning is in the URL itself. For example, /webservices/services/vcommanderrestv10 (version 1.0) /webservices/services/ VCommanderRestV11 (version 1.1) /webservices/services/ VCommanderRestV20 (version 2) vcommander can update version as API evolves. Sample APIs The following are API samples; other APIs follow the same pattern. Operation POST /session DELETE /session/{securitytoken} GET /catalog/{id} PUT /catalog/{id} POST /catalog/{id}/action/publish POST /catalog/{id}/action/unpublish DELETE /catalog/{id} GET /vm/{remoteid} DELETE /vm/{remoteid} Description Create a session object (login) Delete a session object (logout) Retrieves a service catalog Modifies a service catalog Publish a service catalog Un-publish a service catalog Deletes a catalog Retrieve a Virtual Machine Deletes a Virtual Machine

In-depth Details 1. The current unified SOAP webservice layer delegates all the bulk of the work to the vcommander service layer. We leverage the same architecture for REST. It will just be a unified interface that delegates to the vcommander layer. 2. Both SOAP and REST have an inbound interceptor (our code) that inspects incoming messages. This is where we extract security token from SOAP header or HTTP header (REST) and use this token to authenticate against the vcommander security model. 3. REST unified interface: It uses JAXB to convert vcommander DTO (ie. WSVirtualMachine) to XML and back. 4. To get JAXB to do this, we annotate our DTOs with certain annotation Difference between SOAP and REST: an implementation perspective 1. The inbound security interceptor for SOAP and REST extracts security token from SOAP header and HTTP header respectively 2. The REST service layer needs to be implemented. ie. GET /vm/{remoteid}

Client Reference Implementations The user can use any REST client to communicate with vcommander REST service. We will create a reference client implementation for internal use. 1. Java usage example: RestClient client = new RestClient("https://localhost/webservices/services/"); client.login("superuser", "secret"); WSVirtualMachine vm = client.getvmbyremoteid(wsvirtualmachine.class, "vm-3457"); System.out.println("VM name: "+vm.getname()); System.out.println("Config file: "+vm.getconfigfile()); client.logout(); client.close(); 2. PowerShell Powershell 3.0 has a number of Cmdlets for working with web services. With these Cmdlets, there is no need to use.net Framework object and wrapping them for used in Powershell. This implies that the customer needs to have Powershell 3.0 installed. # Import the module Import-Module VCommanderRestClient #Initialize the global variables Initialize-Configuration #Connect the client Connect-Client #Retrieve a list of Virtual machine $vms = Get=VMs max 10

References 1. http://www.vmware.com/support/vcd/doc/rest-api-doc-1.5-html/ 2. http://broadcast.oreilly.com/2009/12/principles-for-standardizedrest-authentication.html 3. https://www.owasp.org/index.php/rest_security_cheat_sheet