From bc5b601d23369c44c8e61f8a2f949f0cfbd1fa6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Chalet?= Date: Wed, 19 May 2021 17:28:35 +0200 Subject: [PATCH] Add "Choosing the right flow" and Proof Key for Code Exchange documentation --- configuration/proof-key-for-code-exchange.md | 55 +++++ configuration/toc.yml | 3 + guide/choosing-the-right-flow.md | 210 ++++++++++++++++++ .../authorization-code-flow.png | Bin 0 -> 19997 bytes .../client-credentials-flow.png | Bin 0 -> 5844 bytes .../choosing-the-right-flow/consent-form.png | Bin 0 -> 23383 bytes .../choosing-the-right-flow/implicit-flow.png | Bin 0 -> 21774 bytes .../resource-owner-password-flow.png | Bin 0 -> 11977 bytes guide/toc.yml | 3 + 9 files changed, 271 insertions(+) create mode 100644 configuration/proof-key-for-code-exchange.md create mode 100644 guide/choosing-the-right-flow.md create mode 100644 guide/choosing-the-right-flow/authorization-code-flow.png create mode 100644 guide/choosing-the-right-flow/client-credentials-flow.png create mode 100644 guide/choosing-the-right-flow/consent-form.png create mode 100644 guide/choosing-the-right-flow/implicit-flow.png create mode 100644 guide/choosing-the-right-flow/resource-owner-password-flow.png diff --git a/configuration/proof-key-for-code-exchange.md b/configuration/proof-key-for-code-exchange.md new file mode 100644 index 0000000..6fabc0d --- /dev/null +++ b/configuration/proof-key-for-code-exchange.md @@ -0,0 +1,55 @@ +# Proof Key for Code Exchange + +Initially designed as a way to protect mobile applications from seeing their callback URIs hijacked by a malicious application installed on the same device, +the [Proof Key for Code Exchange (PKCE)](https://tools.ietf.org/html/rfc7636) mechanism has been extended to confidential clients to help mitigate authorization code leakages. +This mechanism is fully supported by all versions of OpenIddict and can be enforced globally or per-client to block authorization requests that don't send PKCE parameters. + +## Enabling PKCE enforcement at the global level + +Proof Key for Code Exchange can be enforced globally by calling `options.RequireProofKeyForCodeExchange()` in the server options: + +```csharp +services.AddOpenIddict() + .AddServer(options => + { + options.RequireProofKeyForCodeExchange(); + }); +``` + +## Enabling PKCE enforcement per client + +Proof Key for Code Exchange can also be enforced per-client by adding it to the list of requirements attached to a client: + +```csharp +await manager.CreateAsync(new OpenIddictApplicationDescriptor +{ + ClientId = "mvc", + ClientSecret = "901564A5-E7FE-42CB-B10D-61EF6A8F3654", + ConsentType = ConsentTypes.Explicit, + PostLogoutRedirectUris = + { + new Uri("https://localhost:44381/signout-callback-oidc") + }, + RedirectUris = + { + new Uri("https://localhost:44381/signin-oidc") + }, + Permissions = + { + Permissions.Endpoints.Authorization, + Permissions.Endpoints.Logout, + Permissions.Endpoints.Token, + Permissions.GrantTypes.AuthorizationCode, + Permissions.GrantTypes.RefreshToken, + Permissions.ResponseTypes.Code, + Permissions.Scopes.Email, + Permissions.Scopes.Profile, + Permissions.Scopes.Roles, + Permissions.Prefixes.Scope + "demo_api" + }, + Requirements = + { + Requirements.Features.ProofKeyForCodeExchange + } +}); +``` \ No newline at end of file diff --git a/configuration/toc.yml b/configuration/toc.yml index 356803f..c3e7c47 100644 --- a/configuration/toc.yml +++ b/configuration/toc.yml @@ -10,6 +10,9 @@ - name: Claim destinations href: claim-destinations.md +- name: Proof Key for Code Exchange + href: proof-key-for-code-exchange.md + - name: Token formats href: token-formats.md diff --git a/guide/choosing-the-right-flow.md b/guide/choosing-the-right-flow.md new file mode 100644 index 0000000..dbe9479 --- /dev/null +++ b/guide/choosing-the-right-flow.md @@ -0,0 +1,210 @@ +# Choosing the right flow + +OpenIddict offers built-in support for all the standard flows defined by the +[OAuth 2.0](https://tools.ietf.org/html/rfc6749) and [OpenID Connect](https://openid.net/specs/openid-connect-core-1_0.html) core specifications: +[the authorization code flow](https://openid.net/specs/openid-connect-core-1_0.html#CodeFlowAuth), +[the implicit flow](https://openid.net/specs/openid-connect-core-1_0.html#ImplicitFlowAuth), +[the hybrid flow](https://openid.net/specs/openid-connect-core-1_0.html#HybridFlowAuth) (which is basically a mix between the first two flows), +[the resource owner password credentials grant](https://tools.ietf.org/html/rfc6749#section-4.3) and +[the client credentials grant](https://tools.ietf.org/html/rfc6749#section-4.4). + +While not specific to OpenIddict, choosing the best flow(s) for your application is an **important prerequisite** +when implementing your own authorization server ; so here's a quick overview of the different OAuth 2.0/OpenID Connect flows: + +------------------------ +## Non-interactive flows + +### Resource owner password credentials flow (not recommended for new applications) + +Directly inspired by [basic authentication](https://en.wikipedia.org/wiki/Basic_access_authentication), the resource owner password credentials grant +(abbreviated *ROPC*) is conceptually **the simplest OAuth 2.0 flow**: the client application asks the user his username/password, sends a token request +to the authorization server with the user credentials (and depending on the client authentication policy defined by the authorization server, +its own client credentials) and gets back an access token it can use to retrieve the user's resources. + +![Resource owner password credentials flow](choosing-the-right-flow/resource-owner-password-flow.png) + +```http +POST /connect/token HTTP/1.1 +Host: server.example.com +Content-Type: application/x-www-form-urlencoded + +grant_type=password&username=johndoe&password=A3ddj3w +``` + +```http +HTTP/1.1 200 OK +Content-Type: application/json;charset=UTF-8 +Cache-Control: no-store +Pragma: no-cache + +{ + "access_token":"2YotnFZFEjr1zCsicMWpAA", + "token_type":"bearer", + "expires_in":3600 +} +``` + +> [!CAUTION] +> This flow is **not recommended by the OAuth 2.0 specification** as it's the only grant type where **the user password is directly exposed to the client application**, +> which breaks the principle of least privilege and **makes it unsuitable for third-party client applications that can't be fully trusted by the authorization server**. + +> While popular and trivial to implement (as it doesn't involve any redirection or consent form and unlike interactive flows, doesn't require implementing +> cross-site request forgery (XSRF) countermeasures to prevent session fixation attacks), **its use in new applications is not recommended**. Instead, +> users are encouraged to use the authorization code flow, that doesn't expose passwords to client applications and is not limited to password authentication. + + + +------------------------------------------------------------------------------- +### Client credentials grant (recommended for machine-to-machine communication) + +The client credentials grant is almost identical to the resource owner password credentials grant, except it's been specifically designed for **client-to-server scenarios** +(no user is involved in this flow): the client application sends a token request containing its credentials and gets back an access token it can use to query its own resources. + +![Client credentials flow](choosing-the-right-flow/client-credentials-flow.png) + +```http +POST /connect/token HTTP/1.1 +Host: server.example.com +Content-Type: application/x-www-form-urlencoded + +grant_type=client_credentials&client_id=s6BhdRkqt3&client_secret=gX1fBat3bV +``` + +```http +HTTP/1.1 200 OK +Content-Type: application/json;charset=UTF-8 +Cache-Control: no-store +Pragma: no-cache + +{ + "access_token":"2YotnFZFEjr1zCsicMWpAA", + "token_type":"bearer", + "expires_in":3600 +} +``` + +> [!NOTE] +> Unlike the resource owner password credentials grant, **client authentication is not optional** when using the client credentials grant and +> **OpenIddict will always reject unauthenticated token requests**, [as required by the OAuth 2.0 specification](https://tools.ietf.org/html/rfc6749#section-4.4.2). +> +> This means that **you CAN'T use the client credentials grant with public applications** like browser, +> mobile or desktop applications, as they are not able to keep their credentials secret. + +-------------------- +## Interactive flows + +### Authorization code flow (recommended for new applications) + +While the authorization code flow is probably the most complicated flow (as it involves both **user-agent redirections and backchannel communication**), it's +**the recommended flow for any scenario involving end users, whether they log in using a password, a PIN, a smart card or even an external provider**. +In return for its complexity, this flow has a great advantage when used in server-side applications: the `access_token` cannot be intercepted by the user agent. + +There are basically 2 steps in the authorization code flow: the authorization request/response and the token request/response. + +![Authorization code flow](choosing-the-right-flow/authorization-code-flow.png) + +- **Step 1: the authorization request** + +In this flow, the client application always initiates the authentication process by generating an authorization request including +the mandatory `response_type=code` parameter, its `client_id`, its `redirect_uri` and optionally, a `scope` and a `state` parameter +[that allows flowing custom data and helps mitigate XSRF attacks](https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest). + +> [!NOTE] +> In most cases, the client application will simply return a 302 response with a `Location` header to redirect the user agent to the authorization endpoint, +> but depending on the OpenID Connect client you're using, POST requests might also be supported to allow you to send large authorization requests. +> This feature [is usually implemented using an auto-post HTML form](https://github.com/aspnet/Security/pull/392). + +```http +HTTP/1.1 302 Found +Location: https://server.example.com/authorize?response_type=code&client_id=s6BhdRkqt3&state=af0ifjsldkj&redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb +``` + +```http +GET /connect/authorize?response_type=code&client_id=s6BhdRkqt3&state=af0ifjsldkj&redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb HTTP/1.1 +Host: server.example.com +``` + +The way the identity provider handles the authorization request is implementation-specific but in most cases, a consent form +is displayed to ask the user if he or she agrees to share his/her personal data with the client application. + +![Consent form](choosing-the-right-flow/consent-form.png) + +When the consent is given, the user agent is redirected back to the client application with **a unique and short-lived token** +named *authorization code* that the client will be able to exchange with an access token by sending a token request. + +```http +HTTP/1.1 302 Found +Location: https://client.example.org/cb?code=SplxlOBeZQQYbYS6WxSbIA&state=af0ifjsldkj +``` + +> [!WARNING] +> To prevent XSRF/session fixation attacks, **the client application MUST ensure that the `state` parameter returned by the identity provider +> corresponds to the original `state`** and stop processing the authorization response if the two values don't match. +> [This is usually done by generating a non-guessable string and a corresponding correlation cookie](https://tools.ietf.org/html/rfc6749#section-10.12). + +- **Step 2: the token request** + +When the client application gets back an authorization code, it must immediately reedem it for an access token by sending a `grant_type=authorization_code` token request. + +> [!NOTE] +> To help the identity provider [mitigate counterfeit clients attacks](https://tools.ietf.org/html/rfc6819#section-4.4.1.7), the original `redirect_uri` must also be sent. +> +> If the client application is a confidential application (i.e an application that has been assigned client credentials), authentication is required. + +```http +POST /connect/token HTTP/1.1 +Host: server.example.com +Content-Type: application/x-www-form-urlencoded + +grant_type=authorization_code&code=SplxlOBeZQQYbYS6WxSbIA&redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb&client_id=s6BhdRkqt3&client_secret=gX1fBat3bV&scope=openid +``` + +```http +HTTP/1.1 200 OK +Content-Type: application/json;charset=UTF-8 +Cache-Control: no-store +Pragma: no-cache + +{ + "access_token":"2YotnFZFEjr1zCsicMWpAA", + "token_type":"bearer", + "expires_in":3600 +} +``` + +> [!NOTE] +> To increase security, additional parameters such as `code_challenge` and `code_challenge_method` can be specified to bind the authorization code +> that will be returned by the authorization endpoint to the original authorization request. This mechanism is known as +> [Proof Key for Code Exchange](../configuration/proof-key-for-code-exchange.md) and is fully supported by OpenIddict. + +-------------------------------------------------------- +### Implicit flow (not recommended for new applications) + +The implicit flow is similar to the authorization code flow, **except there's no token request/response step**: the access token is directly returned +to the client application as part of the authorization response in the URI fragment (or in the request form when using `response_mode=form_post`). + +![Implicit flow](choosing-the-right-flow/implicit-flow.png) + +```http +GET /connect/authorize?response_type=token&client_id=s6BhdRkqt3&redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb&scope=openid&state=af0ifjsldkj&nonce=n-0S6_WzA2Mj HTTP/1.1 +Host: server.example.com +``` + +```http +HTTP/1.1 302 Found +Location: https://client.example.org/cb#access_token=SlAV32hkKG&token_type=bearer&expires_in=3600&state=af0ifjsldkj +``` + +> [!CAUTION] +> Initially designed for browser applications, this flow is inherently less secure than the authorization code flow and doesn't support +> [Proof Key for Code Exchange](https://tools.ietf.org/html/rfc7636). As such, using it in new applications is not recommended. + +> [!WARNING] +> To prevent XSRF/session fixation attacks, **the client application MUST ensure that the `state` parameter returned by the identity provider +> corresponds to the original `state`** and stop processing the authorization response if the two values don't match. +> [This is usually done by generating a non-guessable string and a corresponding value stored in the local storage](https://tools.ietf.org/html/rfc6749#section-10.12). +> +> When using the implicit flow, **the client application MUST also ensure that the access token was not issued +> to another application to prevent [confused deputy attacks](https://stackoverflow.com/a/17439317/542757).** +> With OpenID Connect, this can be done by using `response_type=id_token token` and checking the `aud` claim +> of the JWT identity token, that must correspond or contain the `client_id` of the client application. \ No newline at end of file diff --git a/guide/choosing-the-right-flow/authorization-code-flow.png b/guide/choosing-the-right-flow/authorization-code-flow.png new file mode 100644 index 0000000000000000000000000000000000000000..4d723fa07f8c6983a5a070810015450128a8b5e0 GIT binary patch literal 19997 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
(t&TLe0&y&q&o9C2W5QTJlBmo%$J+H@#Mf!9*h^ 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 W5bUZ{t!V*RkG_tPcIhqqXa5d`Veeu9 literal 0 HcmV?d00001 diff --git a/guide/choosing-the-right-flow/consent-form.png b/guide/choosing-the-right-flow/consent-form.png new file mode 100644 index 0000000000000000000000000000000000000000..7f30decad701f30a397daa059c0173695886b12c GIT binary patch literal 23383 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 literal 0 HcmV?d00001 diff --git a/guide/choosing-the-right-flow/implicit-flow.png b/guide/choosing-the-right-flow/implicit-flow.png new file mode 100644 index 0000000000000000000000000000000000000000..622c0f40b1d0a8aaa0d8098bed2dfc1e7cefc78a GIT binary patch literal 21774 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 ZulxpSBHFqFI83)WTyeTwa_Prk{tcG=Ex7;y literal 0 HcmV?d00001 diff --git a/guide/choosing-the-right-flow/resource-owner-password-flow.png b/guide/choosing-the-right-flow/resource-owner-password-flow.png new file mode 100644 index 0000000000000000000000000000000000000000..fdbf3eb5181bea96c63dfcd87d9313e243e95816 GIT binary patch literal 11977 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 literal 0 HcmV?d00001 diff --git a/guide/toc.yml b/guide/toc.yml index 9ad1168..41307dc 100644 --- a/guide/toc.yml +++ b/guide/toc.yml @@ -4,6 +4,9 @@ - name: Getting started href: getting-started.md +- name: Choosing the right flow + href: choosing-the-right-flow.md + - name: Migration guides items: - name: Migration from 2.0 to 3.0