ASP.NET Web API – Sigurnosna pitanja i odgovori Ivan Marković Cloud Solutions Program...

29
ASP.NET Web API – Sigurnosna pitanja i odgovori Ivan Marković Cloud Solutions Program Manager/Technology Evangelist SPAN

Transcript of ASP.NET Web API – Sigurnosna pitanja i odgovori Ivan Marković Cloud Solutions Program...

Page 1: ASP.NET Web API – Sigurnosna pitanja i odgovori Ivan Marković Cloud Solutions Program Manager/Technology Evangelist SPAN.

ASP.NET Web API – Sigurnosna pitanja i odgovoriIvan MarkovićCloud Solutions Program Manager/Technology EvangelistSPAN

Page 2: ASP.NET Web API – Sigurnosna pitanja i odgovori Ivan Marković Cloud Solutions Program Manager/Technology Evangelist SPAN.

ASP.NET Web API in Modern

Architecture

ASP.NET Web API

Page 3: ASP.NET Web API – Sigurnosna pitanja i odgovori Ivan Marković Cloud Solutions Program Manager/Technology Evangelist SPAN.

About me

Ivan Marković

SPAN

[email protected]

Cloud Solutions Program Manager/Technology evangelist

Student

Page 4: ASP.NET Web API – Sigurnosna pitanja i odgovori Ivan Marković Cloud Solutions Program Manager/Technology Evangelist SPAN.

Agenda

1. ASP.NET Web API Pipeline

2. OAuth 2.0

Page 5: ASP.NET Web API – Sigurnosna pitanja i odgovori Ivan Marković Cloud Solutions Program Manager/Technology Evangelist SPAN.

ASP.NET Web API Pipeline

Page 6: ASP.NET Web API – Sigurnosna pitanja i odgovori Ivan Marković Cloud Solutions Program Manager/Technology Evangelist SPAN.

Request Lifecylce

Application Domain

WebAPIApplication:HttpApplication

RouteTable.Routes

HttpWebRoute:Route

HttpControllerRouteHandler:IRouteHandl

er

HttpControllerHandleer:

IHttpAsyncHandler::IHttp[Handler

HttpControllerDispatcher:DelegatingHandle

r

HttpRoutingDispatcher:Delegating

Handler

AllRoutesHandler: Delegating Handler

HttpServer: DelegatingHandler

ActionFilters

ApiController: IHttpController

Http Context, Http Request, Http

Response

AuthorizationFilters

PerRouteHandler: Delegating Handler

Page 7: ASP.NET Web API – Sigurnosna pitanja i odgovori Ivan Marković Cloud Solutions Program Manager/Technology Evangelist SPAN.

Request Lifecylce

Application Domain

WebAPIApplication:HttpApplication

RouteTable.Routes

HttpWebRoute:Route

HttpControllerRouteHandler:IRouteHandl

er

HttpControllerHandleer:

IHttpAsyncHandler::IHttp[Handler

HttpControllerDispatcher:DelegatingHandle

r

HttpRoutingDispatcher:Delegating

Handler

AllRoutesHandler: Delegating Handler

HttpServer: DelegatingHandler

ActionFilters

ApiController: IHttpController

Http Context, Http Request, Http

Response

AuthorizationFilters

PerRouteHandler: Delegating Handler

Page 8: ASP.NET Web API – Sigurnosna pitanja i odgovori Ivan Marković Cloud Solutions Program Manager/Technology Evangelist SPAN.

Pipeline in Web API 2.0

IIS Web API

HttpModule MessageHandler

AuthenticationFilter

AuthorizationFilter

Host/Framework

independent concerns

Web API cross-cutting

concerns, eg. CORS

Web API specific

authentication

Authorization

Page 9: ASP.NET Web API – Sigurnosna pitanja i odgovori Ivan Marković Cloud Solutions Program Manager/Technology Evangelist SPAN.

HTTP Module

Allow security code to execute early as part of the IIS pipeline.

The principal established from an HTTP module is available to all components

The biggest drawback with HTTP modules is the lack of granularity.

Page 10: ASP.NET Web API – Sigurnosna pitanja i odgovori Ivan Marković Cloud Solutions Program Manager/Technology Evangelist SPAN.

Message Handler

Runs before Authentication and Authorization filters

Message handler runs only for Web API requests.

A message handler can be configured to run as a global handler for all requests or for a specific route.

The downside of using a message handler is the lack of finer control.

Page 11: ASP.NET Web API – Sigurnosna pitanja i odgovori Ivan Marković Cloud Solutions Program Manager/Technology Evangelist SPAN.

Action Filter

Another extensibility option provided by ASP.NET Web API

It runs after the authorization filters are run in the ASP.NET Web API pipeline.

Page 12: ASP.NET Web API – Sigurnosna pitanja i odgovori Ivan Marković Cloud Solutions Program Manager/Technology Evangelist SPAN.

Authentication vs Authorization

Authentication Authorization

Authentication is knowing the identity of the user.

Eg: Login()

Authorization is deciding whether a user is allowed

to perform an action.

Eg: Read, Write, Delete

Page 13: ASP.NET Web API – Sigurnosna pitanja i odgovori Ivan Marković Cloud Solutions Program Manager/Technology Evangelist SPAN.

Authorization Filter

Another extensibility option provided by ASP.NET Web API 

The order of execution of authorization filters isn’t guaranteed by ASP.NET Web API.

Page 14: ASP.NET Web API – Sigurnosna pitanja i odgovori Ivan Marković Cloud Solutions Program Manager/Technology Evangelist SPAN.

Authentication Filter

Authentication filters run after message handlers but before all other filter types. 

Authentication filters run before authorization filters!

Authentication filters offer a level of control or granularity that makes them particularly useful. 

Page 15: ASP.NET Web API – Sigurnosna pitanja i odgovori Ivan Marković Cloud Solutions Program Manager/Technology Evangelist SPAN.

Authentication Filter + Authorization Filter

Authentication Filter

Authorization Filter Action Method

No Action Taken

Does Not Execute

Rejects the Reqouest for the Lack of Authenticate

PrincipalRequest with no

Credential

Unathorized Response 401

Page 16: ASP.NET Web API – Sigurnosna pitanja i odgovori Ivan Marković Cloud Solutions Program Manager/Technology Evangelist SPAN.

Authentication Filter + Authorization Filter

Authentication Filter

Authorization Filter Action Method

contex.ErrorResult Is Set to Unathorized

Result

Does Not Execute

Request with Invalid Credential

Unathorized Response

Does Not Execute

Page 17: ASP.NET Web API – Sigurnosna pitanja i odgovori Ivan Marković Cloud Solutions Program Manager/Technology Evangelist SPAN.

Authentication Filter + Authorization Filter

Authentication Filter

Authorization Filter Action Method

Contex.Principal Is Set to an Authenticated

Princiapl

Action Method Runs and Produces a Response

Successfully Authorizes Because Identity is AuthenticRequest with Valid

Credential

Response MessageResponse Message

No Action Taken

Page 18: ASP.NET Web API – Sigurnosna pitanja i odgovori Ivan Marković Cloud Solutions Program Manager/Technology Evangelist SPAN.

ASP.NET Web API PipelineDemo

Page 19: ASP.NET Web API – Sigurnosna pitanja i odgovori Ivan Marković Cloud Solutions Program Manager/Technology Evangelist SPAN.

OAuth 2.0

Page 20: ASP.NET Web API – Sigurnosna pitanja i odgovori Ivan Marković Cloud Solutions Program Manager/Technology Evangelist SPAN.

Enterprise Security

Page 21: ASP.NET Web API – Sigurnosna pitanja i odgovori Ivan Marković Cloud Solutions Program Manager/Technology Evangelist SPAN.

Modern Applications

Users Clients Web APIs

Page 22: ASP.NET Web API – Sigurnosna pitanja i odgovori Ivan Marković Cloud Solutions Program Manager/Technology Evangelist SPAN.

OAuth 2.0

UserClient

Application

Authentication Server

Resource Server

Page 23: ASP.NET Web API – Sigurnosna pitanja i odgovori Ivan Marković Cloud Solutions Program Manager/Technology Evangelist SPAN.

OAuth 2.0

UserClient

Application

Authentication Server

Resource Server

Client_id = client1scope = search read

Page 24: ASP.NET Web API – Sigurnosna pitanja i odgovori Ivan Marković Cloud Solutions Program Manager/Technology Evangelist SPAN.

OAuth 2.0

UserClient

Application

Authentication Server

Resource Server

Access token

Page 25: ASP.NET Web API – Sigurnosna pitanja i odgovori Ivan Marković Cloud Solutions Program Manager/Technology Evangelist SPAN.

OAuth 2.0

UserClient

Application

Authentication Server

Resource Server

Access token

{ „iss”:”myAuthzServer”, „aud”:”application”, „exp”:”192990121”, „scope”:[„search”,”read”], „client_id”:”client1”}

Page 26: ASP.NET Web API – Sigurnosna pitanja i odgovori Ivan Marković Cloud Solutions Program Manager/Technology Evangelist SPAN.

Conclusion

IIS Web API

HttpModule MessageHandler

AuthenticationFilter

AuthorizationFilter

Host/Framework

independent concerns

Web API cross-cutting

concerns, eg. CORS

Web API specific

authentication

Authorization

Page 27: ASP.NET Web API – Sigurnosna pitanja i odgovori Ivan Marković Cloud Solutions Program Manager/Technology Evangelist SPAN.

Conclusion

UserClient

Application

Authentication Server

Resource Server

Page 28: ASP.NET Web API – Sigurnosna pitanja i odgovori Ivan Marković Cloud Solutions Program Manager/Technology Evangelist SPAN.

Q & A?

? ???

? ?

Page 29: ASP.NET Web API – Sigurnosna pitanja i odgovori Ivan Marković Cloud Solutions Program Manager/Technology Evangelist SPAN.