Using Globus Auth to Streamline the Creation, Integration, and Use of Research Services
Total Page:16
File Type:pdf, Size:1020Kb
Using Globus Auth to Streamline the Creation, Integration, and Use of Research Services Steve Tuecke [email protected] Cloud has transformed how software and platforms are delivered Software as a service: SaaS (web & mobile apps) Platform as a service: PaaS Infrastructure as a service: IaaS PaaS enables more rapid, cheap, and scalable delivery of powerful (SaaS) apps 2 3 Globus SaaS: Research data lifecycle Compute Facility Instrument Globus transfers files reliably, securely 4 Globus controls access to shared 2 files on existing storage; no need to move files to Curator reviews and cloud storage! 7 Transfer approves; data set published on campus or other system 3 Share 1 Researcher 6 Researcher initiates selects files to transfer request; or share, selects Researcher requested automatically user or group, assembles data set; by script, science and sets access describes it using Publication gateway permissions metadata (Dublin core and domain- Repository Collaborator logs in to 5 specific) • Only a Web browser Globus and accesses shared files; no local Publish 6 8 required account required; download via Globus • Use storage system Peers, collaborators search and discover of your choice datasets; transfer and share using Globus • Access using your campus credentials Discover Personal Computer 4 Platform Questions • How do you leverage Globus services in your own applications? • How do you extend Globus with your own services? • How do we empower the research community to create an integrated ecosystem of services and applications? 5 Example: NCAR RDA 6 Prototypical research data portal Identity Provider Globus Web Globus Cloud HTTPS Helper Pages Globus Login Globus Auth Browser Transfer Applications Portal Web REST Other Server (Client) Services Desktop Firewall GridFTP User’s Portal Other Endpoint Endpoint Endpoints (optional) Science DMZ 7 Prototypical research data portal Identity Provider Globus Web Globus Cloud HTTPS Helper Pages Globus Login Globus Auth Browser Transfer Applications Portal Web REST Other Server (Client) Services Desktop Firewall GridFTP User’s Portal Other Endpoint Endpoint Endpoints (optional) Science DMZ 8 Next-Generation Portal Leverages Science DMZ Border Router perfSONAR Firewall WAN Enterprise Data Path Browsing path Query path 10GE perfSONAR perfSONAR Portal server applications: · web server · search · database Science DMZ · authentication Portal Switch/Router Server 10GE 10GE 10GE DTN 10GE 10GE Data Transfer Path DTN 10GE Filesystem (data store) Portal Query/Browse Path 10GE 10GE DTN DTN API DTNs (data access governed by portal) https://fasterdata.es.net/ 9 Globus Transfer API • Nearly all Globus Web App functionality implemented via public Transfer API docs.globus.org/api/transfer • Requests authorized via OAuth2 access token – Authorization: Bearer asdflkqhafsdafeawk 10 Transfer API Functionality • Endpoint search • Endpoint management • Endpoint activation • File operations • Task submission • Task management • Bookmarks • Shared endpoint access rules (ACLs) • Management console 11 Globus Python SDK • Python client library for the Globus Auth and Transfer REST APIs globus.github.io/globus-sdk-python • Public beta, likely to change some • Open source 12 Python SDK Jupyter notebook • Jupyter (iPython) notebook demonstrating use of Python SDK github.com/globus/globus-jupyter-notebooks • Overview • Open source 13 Prototypical research data portal Identity Provider Globus Web Globus Cloud HTTPS Helper Pages Globus Login Globus Auth Browser Transfer Applications Portal Web REST Other Server (Client) Services Desktop Firewall GridFTP User’s Portal Other Endpoint Endpoint Endpoints (optional) Science DMZ 14 Challenge • How to provide: – Login to apps o Web, mobile, desktop, command line – Protect all REST API communications o App à Globus service o App à non-Globus service o Service à service • While: – Not introducing even more identities – Providing least privileges security model – Being agnostic to programming language and framework – Being web friendly – Making it easy for users and developers 15 Globus Auth • Foundational identity and access management (IAM) platform service • Simplify creation and integration of advanced apps and services • Brokers authentication and authorization interactions between: – end-users – identity providers: InCommon, XSEDE, Google, portals – services: resource servers with REST APIs – apps: web, mobile, desktop, command line clients – services acting as clients to other services 16 Globus Auth • Identity and access management PaaS docs.globus.org/api/auth • Introduction • Developer Guide • Reference 17 Based on widely used web standards • OAuth 2.0 Authorization Framework – aka OAuth2 • OpenID Connect Core 1.0 – aka OIDC • Use various OAuth2 and OIDC libraries – Google OAuth Client Libraries (Java, Python, etc.), Apache mod_auth_openidc, etc. – Globus Python SDK 18 Globus account • A Globus account is a set of identities – A primary identity o Identity can be primary of only one account – One or more linked identities o Identity can (currently) be linked to only one account • Account does not have own identifier – An account is uniquely identified using its primary identity 19 Globus Auth interactions Login App HTTPS/REST call Service (Client) (Resource Server) User (Resource Owner) Globus Auth (Authorization Server) Identity Provider 20 Globus Auth interactions Login App HTTPS/REST call Service (Client) (Resource Server) User (Resource Owner) Globus Auth 1.Request authorization (Authorization Server) • For a set of scopes – Login: openid, email, profile – HTTPS/REST APIs Identity • User selects identity provider Provider 21 Globus Auth interactions Login App HTTPS/REST call Service (Client) (Resource Server) User (Resource Owner) Globus Auth 1.Request authorization (Authorization Server) • Using existing identities 2.Authenticates a resource owner – XSEDE, University (via InCommon), Google, web app, etc. Identity • User can link multiple Provider identities into a single Globus Account • No Globus username (Globus ID) required • Globus Auth handles naming details, e.g., ePPN vs ePTID 22 Globus Auth interactions Login App HTTPS/REST call Service (Client) (Resource Server) User (Resource consent Owner) Globus Auth 1.Request authorization (Authorization Server) • Resource is provided by a 2.Authenticates a resource owner resource server 3.Obtains authorization (consent) for • Limited by a scope a client to access a resource Identity Provider 23 Globus Auth interactions Login App HTTPS/REST call Service (Client) (Resource Server) User (Resource access_token Owner) Globus Auth 1.Request authorization (Authorization Server) • Some grant types issue 2.Authenticates a resource owner authorization code, which 3.Obtains authorization (consent) for client exchanges for access a client to access a resource token 4.Issues OAuth2 access_token to Identity • Access token is opaque to client Provider client • May include a refresh token, for offline access 24 Globus Auth interactions Login App HTTPS/REST call Service (Client) (Resource Server) User (Resource id_token Owner) Globus Auth 1.Request authorization (Authorization Server) JWT id_token: 2.Authenticates a resource owner • sub: Globus Auth identity id 3.Obtains authorization (consent) for a client to access a resource • iss: https://auth.globus.org 4.Issues OAuth2 access_token to Identity • name: full name client Provider • preferred_username: 5.May issue OIDC id_token to client • e.g., [email protected] with resource owner identity • email: email contact • other standard OIDC claims 25 Globus Auth interactions Login App HTTPS/REST call Service (Client) Authorization: Bearer <access_token> (Resource Server) User (Resource Owner) Globus Auth 1.Request authorization (Authorization Server) 2.Authenticates a resource owner 3.Obtains authorization (consent) for a client to access a resource 4.Issues OAuth2 access_token to Identity client Provider 5.May issue OIDC id_token to client with resource owner identity 6.HTTPS/REST call with access_token 26 Globus Auth interactions Login App HTTPS/REST call Service (Client) (Resource Server) User (Resource Owner) access_token Globus Auth 1.Request authorization (Authorization Server) RFC 7662: OAuth 2.0 Token 2.Authenticates a resource owner Introspection response: 3.Obtains authorization (consent) for • active: true or false a client to access a resource • client_id 4.Issues OAuth2 access_token to Identity client Provider • scope 5.May issue OIDC id_token to client • sub: Globus Auth identity id with resource owner identity • username: [email protected] 6.HTTPS/REST call with • identity_set: linked identities access_token • email 7.Validates access_token for • name resource server, gets additional info • other standard claims 27 Globus Auth interactions Login App HTTPS/REST call Service (Client) (Resource Server) User Dependent (Resource access_token Owner) Globus Auth Dependent Services 1.Request authorization (Authorization Server) (Resource Servers) 2.Authenticates a resource owner 3.Obtains authorization (consent) for a client to access a resource • Allows resource server to 4.Issues OAuth2 access_token to Identity act as client to other client Provider resource servers 5.May issue OIDC id_token to client • Service uses request with resource owner identity access_token to get a 6.HTTPS/REST call with dependent access_token access_token for each dependent service 7.Validates access_token for • Service acts as client to its resource server, gets additional info dependent services