OAuth2 WG User Authentication for Clients

Slides:



Advertisements
Similar presentations
OAuth 2.0 By “PJ” (JP on meetup.com) iOS and PHP developer, and occasional lawyer Contact me via:
Advertisements

Prabath Siriwardena | Johann Nallathamby.
FIspace Security Components FIspace Security Components NetFutures 2015 FIspace project Javier Romero Negrín Javier Hitado Simarro ATOS Serdar Arslan KoçSistem.
WSO2 Identity Server Road Map
1 Trillion Azure AD authentications since the release of the service 50 M Office 365 users active every month >1 Billion authentications every.
Clients using wide variety of devices/languages/platforms Server applications using wide variety of platforms/languages Browser Native app Server.
Health IT RESTful Application Programming Interface (API) Security Considerations Transport & Security Standards Workgroup March 18, 2015.
OAuth 2.0 in Depth By Rohit Ghatol SynerzipSynerzip Passionate about TechNextTechNext.
OAuth-as-a-service using ASP.NET Web API and Windows Azure Access Control Maarten
SIP OAuth Rifaat Shekh-Yusef IETF 90, SIPCore WG, Toronto, Canada July 21,
Office 365 Platform Flexible Tools Each Office 365 Workload API required different Authentication.
Workgroup Discussion on RESTful Application Programming Interface (API) Security Transport & Security Standards Workgroup January 12, 2014.
Observations from the OAuth Feature Survey Mike Jones March 14, 2013 IETF 86.
FriendFinder Location-aware social networking on mobile phones.
FriendFinder Location-aware social networking on mobile phones.
Interworking with an External Dynamic Authorization System Group Name: SEC WG Source: Qualcomm Inc., Wolfgang Granzow & Phil Hawkes Meeting Date: SEC#20.2,
Securing Angular Apps Brian Noyes
Secure Mobile Development with NetIQ Access Manager
Today’s Applications Web API Browser Native app Web API Web API
OpenID Connect: An Overview Pat Patterson Developer Evangelist Architect
Web Authorization Protocol WG Hannes Tschofenig, Derek Atkins.
National College of Science & Information Technology.
Ask the Experts – Building Login-Based Sites in AEM
4/18/2018 1:15 PM © Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN.
Identity Events IIW April 2016.
MQTT-255 Support alternate authenticaion mechanisms
Web Application Vulnerabilities, Detection Mechanisms, and Defenses
Consuming OAuth Services in Alfresco Share
OAuth 2.0 Improvements Losing Half a Leg.
Federation made simple
OAuth WG Conference Call, 11th Jan. 2013
Phil Hunt, Hannes Tschofenig
Hypertext Transfer Protocol
Simple Authentication for the Web
API Security Auditing Be Aware,Be Safe
Cryptography and Network Security
Data Virtualization Tutorial… OAuth Example using Google Sheets
J. Bradley Sanso H. Tschofenig
WEB-API & MVC5 - Identity & Security
Bert Greevenbosch, ACE comparison Bert Greevenbosch, draft-greevenbosch-ace-comparison.
Hypertext Transport Protocol
What is REST API ? A REST (Representational State Transfer) Server simply provides access to resources and the REST client accesses and presents the.
OAuth2 SCIM Client Registration & Software Statement Exchange
Addressing the Beast: Single Sign-On II
OpenID Enhanced Authentication Profile (EAP) Working Group
WStore Programmer Guide
OAuth2, OpenID Connect, and Science Gateways
New Primo Authentication
OpenID Enhanced Authentication Profile (EAP) Working Group
BY: SHIVI AGRAWAL ( ) CSE-(6)C
CDS Hooks HL7 WGM Jan 2018 CDS Working Group Tuesday, January 30, 2018
OpenID Connect Working Group
Agenda OAuth Concepts Programming OAuth.
X-Road as a Platform to Exchange MyData
SharePoint Online Authentication Patterns
Office 365 Development.
EE 122: HyperText Transfer Protocol (HTTP)
William Stallings Data and Computer Communications
Resource Certificate Profile SIDR WG Meeting IETF 66, July 2006
Token-based Authentication
Microsoft Ignite NZ October 2016 SKYCITY, Auckland.
OpenID Connect Working Group
OpenID Enhanced Authentication Profile (EAP) Working Group
Security for Science Gateways Initial Design Discussions
OpenID Enhanced Authentication Profile (EAP) Working Group
D Guidance 26-Jun: Would like to see a refresh of this title slide
JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens-02
OpenID Connect Working Group
OpenID Enhanced Authentication Profile (EAP) Working Group
HIP – FAS flows addendum to the OIDC integration guide for eBox HIPs.
Presentation transcript:

OAuth2 WG User Authentication for Clients Phil Hunt Oracle Corp July 31, 2013

The OAuth User Authentication Problem

What's The Need? There is a strong desire by many developers to use social networks and others to facilitate easy user registration and user authentication. Examples: storify.com, LiveJournal, NY Daily Times

Don't Facebook, Twitter, & Amazon Do Auth? Yes Some social networks invite developers to use their OAuth2 service to return information about currently authenticated user But is return of profile data proof of authentication? There remain cross-site scripting attacks since client can't detect injected grants No guarantee returned resource profile == authenticated user It could be a valid approach with further specification

Is This Correct Usage of OAuth? Not at present OAuth2 does not directly perform user authentication itself Authenticating users to clients is "backwards" to the intended flow of providing clients tokens to authenticate with resources. Intended audience is the resource service Missing Features Needed Specifications for passing clients AuthN information Processing rules for clients to validate AuthN information from an OAuth AS Potential NIST SP-800-63 compliance

More Background OAuth2 is not actually an authentication system, it issues access authorizations Issues tokens to clients that enable access to protected resources at a service provider Client wields tokens, not intended to use them Client unable to validate tokens/assertions Can only use non-standard resource API Client cannot bind original request to issued token Possibility of cross site request forgery attack End-user authentication is 'implied' or 'indirect' Client has no way to determine what happened Client cannot force authentication Client is not the intended audience – just the wielder

Is OpenID Connect A Solution?

OpenID Connect A set of specifications from OIDF addressing the authentication issue among others Not related to OpenID 2.0, but does take some requirements forward Provides a session token (called ID Token) Addresses CSRF issue for clients and…

Additional Features Identity Profile API Discovery Dynamic Registration Implicit and Basic Client Flows Session Management API

Identity Profile Seems Like A Good Thing, but… Not all service providers want to be profile providers Their primary business is not profile services The desire to reduce uid/passwords leads many to still want to use any site that can authenticate SCIM is an alternate RESTful Identity service that may emerge as a standard profile service Many sites still want to manage their own user profile data, just want some other service to perform user authentication.

User AuthN Proposal

Proposed features New "authenticate" endpoint Parallels 4.1 of RFC6749 but returns additional session information Return of access token is optional Gives client apps ability to request re-authentication, re-authorization, and to test login state. similar to OpenID Connect Normal access token return supplemented with session state information Refresh provides ongoing session information (e.g. logout detection) Could be structured as first step towards OpenID Connect support Could be added direct to normal authorize flow Specifies additional session info, no normative changes

Flow GET /authenticate? response_type=code &client_id=s6BhdRkqt3 &redirect_uri=https%3A%2F%2Fclient.example.com%2Fcb &state=af0ifjsldkj &prompt=login Standard OAuth CSRF protection mechanism Requests that AS force re-authentication of user

Request Parameters New "/authenticate" endpoint Standard OAuth2 and… response_type – value MUST be "code" client_id – The client identifier (per 2.2) redirect_uri – Required – MUST be pre-registered state – Opaque client generated value to maintain state between request and callback (XSRF protection) and…

Request Params Cont'd prompt– Space delimited set of authn/authz functions none – Authorization server confirms authentication status login – Authorization server prompts use for re-authentication (even if already authenticated) consent – Re-obtain consent for associated resource service (if any) select_account – prompt user to select account display page, popup, touch, wap hint – A code or text that may be used by the AS to display text to the user during authentication or authorization operations This could be done by registration information of client

New AS Server Processing Normal OAuth2 authorization processing occurs AS may not need to ask for consent if only authn information is returned AS MUST re-authenticate user if func includes "authn". AS MUST return an error if func is "none" and an existing user sign-on session does not exist

Authentication Response Upon authentication and consent, as per normal OAuth flow, redirect is passed to client. If "state" present in authentication request, the exact value received must be returned Normal OAuth2 errors HTTP/1.1 302 Found Location: https://client.example.com/cb?code=SplxlOBeZQQYbYS6WxSbIA&state=af0ifjsldkj

Token Request Client is authenticated Code is exchange for authn status + optional access token POST /token HTTP/1.1 Host: server.example.com Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW Content-Type: application/x-www-form-urlencoded grant_type=authorization_code&code=SplxlOBeZQQYbYS6WxSbIA &redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb

Access Token Response Standard response + session information HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 Cache-Control: no-store Pragma: no-cache { "access_token":"2YotnFZFEjr1zCsicMWpAA", "token_type":"example", "expires_in":3600, "refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA", "session":{ "sub":"5dedcc8b-735c-405f-bd79-e029f9a76822", "sub_url":"https://example.com/me", "aud":"{client_id}", "iss":"{issuer_id}", "loginat":"…", "alv":"2" }, "example_parameter":"example_value" } Token can be used to look up profile info at sub_url sub_url MUST point to profile of authenticated user Is issuer/audience needed since atomic request/response? (no token) NIST Assurance Level

New Session Information Contains information about user authn state Params sub – REQD - The identifier of the subject authenticated. sub_url – The location of the authentication subject profile that may be retrieved using the returned access token iss – REQD - The identifier of the Authentication server (usually authorization server) aud – REQD - The identifier of the client or URI (per SAML definition?) at, exp – SHOULD - Authentication time and authentication expiry time in Internet Date Time Format per RFC3339 alv – OPTIONAL - Assurance level per NIST SP 800-63 Can be passes as JSON struct or JWT (for SP-800-63 compliance)

Access Token Params The access token is not necessarily bound to an Identity Profile service (e.g. Twitter API) Could be used with any REST API Could also be used with SCIM or OpenID Connect MAY be used to access a location (defined by sub_url) to retrieve subject profile information

Processing Rules The aud parameter MUST be EITHER the client_id or a previously negotiated URI that applies to the client. The issuer MUST be associated with the AS at MUST NOT be future dated exp MUST NOT be in the past Level 1 and 2, can use connection-oriented security Session token not required Session token validation not required aud and iss not required Level 3, 4 requires validated session token

Discussion

Questions Should the WG address the authentication issue? Should we include in the next WG charter? Is alignment of UA4C with OpenID Connect appropriate? Or is it less confusing to address in very different way?